diff --git a/composer.lock b/composer.lock index 2db3334baaf43e7c4e4dc597093cf67f3e543a0d..73e3a2db7c79af05b24bfdd75b7f94ea6b8ac908 100644 --- a/composer.lock +++ b/composer.lock @@ -3061,16 +3061,16 @@ }, { "name": "drupal/core", - "version": "9.4.7", + "version": "9.4.8", "source": { "type": "git", "url": "https://github.com/drupal/core.git", - "reference": "247431af7e33a8cf7c46677a79336103c6e83db1" + "reference": "a627d1b2a00f2cef0572e37b94dea298800541f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/247431af7e33a8cf7c46677a79336103c6e83db1", - "reference": "247431af7e33a8cf7c46677a79336103c6e83db1", + "url": "https://api.github.com/repos/drupal/core/zipball/a627d1b2a00f2cef0572e37b94dea298800541f4", + "reference": "a627d1b2a00f2cef0572e37b94dea298800541f4", "shasum": "" }, "require": { @@ -3222,9 +3222,9 @@ ], "description": "Drupal is an open source content management platform powering millions of websites and applications.", "support": { - "source": "https://github.com/drupal/core/tree/9.4.7" + "source": "https://github.com/drupal/core/tree/9.4.8" }, - "time": "2022-09-28T16:19:47+00:00" + "time": "2022-10-06T15:57:08+00:00" }, { "name": "drupal/core-composer-scaffold", @@ -3278,16 +3278,16 @@ }, { "name": "drupal/core-recommended", - "version": "9.4.7", + "version": "9.4.8", "source": { "type": "git", "url": "https://github.com/drupal/core-recommended.git", - "reference": "287868a598996f1eb04ea57dbefb741d3784db23" + "reference": "684cc844f7b729286f5d62f1ee4b20ab12586502" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-recommended/zipball/287868a598996f1eb04ea57dbefb741d3784db23", - "reference": "287868a598996f1eb04ea57dbefb741d3784db23", + "url": "https://api.github.com/repos/drupal/core-recommended/zipball/684cc844f7b729286f5d62f1ee4b20ab12586502", + "reference": "684cc844f7b729286f5d62f1ee4b20ab12586502", "shasum": "" }, "require": { @@ -3296,7 +3296,7 @@ "doctrine/annotations": "~1.13.2", "doctrine/lexer": "~1.2.3", "doctrine/reflection": "~1.2.3", - "drupal/core": "9.4.7", + "drupal/core": "9.4.8", "egulias/email-validator": "~3.2", "guzzlehttp/guzzle": "~6.5.8", "guzzlehttp/promises": "~1.5.1", @@ -3358,9 +3358,9 @@ ], "description": "Core and its dependencies with known-compatible minor versions. Require this project INSTEAD OF drupal/core.", "support": { - "source": "https://github.com/drupal/core-recommended/tree/9.4.7" + "source": "https://github.com/drupal/core-recommended/tree/9.4.8" }, - "time": "2022-09-28T16:19:47+00:00" + "time": "2022-10-06T15:57:08+00:00" }, { "name": "drupal/crop", @@ -13898,16 +13898,16 @@ }, { "name": "symfony/http-foundation", - "version": "v4.4.45", + "version": "v4.4.46", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "b2f2e3cb66349d89cb46c939cea03c62ad71cf00" + "reference": "7acdc97f28a48b96def93af1efd77cfc5e8776dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b2f2e3cb66349d89cb46c939cea03c62ad71cf00", - "reference": "b2f2e3cb66349d89cb46c939cea03c62ad71cf00", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7acdc97f28a48b96def93af1efd77cfc5e8776dd", + "reference": "7acdc97f28a48b96def93af1efd77cfc5e8776dd", "shasum": "" }, "require": { @@ -13946,7 +13946,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.45" + "source": "https://github.com/symfony/http-foundation/tree/v4.4.46" }, "funding": [ { @@ -13962,20 +13962,20 @@ "type": "tidelift" } ], - "time": "2022-08-17T15:29:03+00:00" + "time": "2022-09-13T06:14:47+00:00" }, { "name": "symfony/http-kernel", - "version": "v4.4.45", + "version": "v4.4.46", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "4f2d38e9a3c6997ea0886ede5aaf337dfd0fc938" + "reference": "fb72bc54f300151fadef84fce79764138b1ef943" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4f2d38e9a3c6997ea0886ede5aaf337dfd0fc938", - "reference": "4f2d38e9a3c6997ea0886ede5aaf337dfd0fc938", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fb72bc54f300151fadef84fce79764138b1ef943", + "reference": "fb72bc54f300151fadef84fce79764138b1ef943", "shasum": "" }, "require": { @@ -14050,7 +14050,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.45" + "source": "https://github.com/symfony/http-kernel/tree/v4.4.46" }, "funding": [ { @@ -14066,20 +14066,20 @@ "type": "tidelift" } ], - "time": "2022-08-26T14:34:48+00:00" + "time": "2022-09-30T07:27:59+00:00" }, { "name": "symfony/mime", - "version": "v5.4.12", + "version": "v5.4.13", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "03876e9c5a36f5b45e7d9a381edda5421eff8a90" + "reference": "bb2ccf759e2b967dcd11bdee5bdf30dddd2290bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/03876e9c5a36f5b45e7d9a381edda5421eff8a90", - "reference": "03876e9c5a36f5b45e7d9a381edda5421eff8a90", + "url": "https://api.github.com/repos/symfony/mime/zipball/bb2ccf759e2b967dcd11bdee5bdf30dddd2290bd", + "reference": "bb2ccf759e2b967dcd11bdee5bdf30dddd2290bd", "shasum": "" }, "require": { @@ -14133,7 +14133,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.12" + "source": "https://github.com/symfony/mime/tree/v5.4.13" }, "funding": [ { @@ -14149,7 +14149,7 @@ "type": "tidelift" } ], - "time": "2022-08-19T14:24:03+00:00" + "time": "2022-09-01T18:18:29+00:00" }, { "name": "symfony/polyfill-ctype", @@ -15472,16 +15472,16 @@ }, { "name": "symfony/validator", - "version": "v4.4.45", + "version": "v4.4.46", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "06db9bfca8fefea4dfe8e804bbcd0aa79a414d0c" + "reference": "51d06a00a7a8e9c45b91735932040b9f1df2c994" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/06db9bfca8fefea4dfe8e804bbcd0aa79a414d0c", - "reference": "06db9bfca8fefea4dfe8e804bbcd0aa79a414d0c", + "url": "https://api.github.com/repos/symfony/validator/zipball/51d06a00a7a8e9c45b91735932040b9f1df2c994", + "reference": "51d06a00a7a8e9c45b91735932040b9f1df2c994", "shasum": "" }, "require": { @@ -15558,7 +15558,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v4.4.45" + "source": "https://github.com/symfony/validator/tree/v4.4.46" }, "funding": [ { @@ -15574,20 +15574,20 @@ "type": "tidelift" } ], - "time": "2022-08-04T16:19:35+00:00" + "time": "2022-09-15T12:26:05+00:00" }, { "name": "symfony/var-dumper", - "version": "v5.4.11", + "version": "v5.4.13", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861" + "reference": "2bf2ccab581bec363191672f0df40e0c85569e1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8f306d7b8ef34fb3db3305be97ba8e088fb4861", - "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2bf2ccab581bec363191672f0df40e0c85569e1c", + "reference": "2bf2ccab581bec363191672f0df40e0c85569e1c", "shasum": "" }, "require": { @@ -15647,7 +15647,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.11" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.13" }, "funding": [ { @@ -15663,7 +15663,7 @@ "type": "tidelift" } ], - "time": "2022-07-20T13:00:38+00:00" + "time": "2022-09-06T13:23:31+00:00" }, { "name": "symfony/var-exporter", diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php index d7a76e436e1ee4ff21fe33daa1695f41dd054bf2..69156ac9f9202183ddf918685b8e85bada8cb213 100644 --- a/vendor/composer/autoload_classmap.php +++ b/vendor/composer/autoload_classmap.php @@ -4421,8 +4421,12 @@ 'SimpleSAML\\Module\\authX509\\Controller\\ExpiryWarning' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/authX509/lib/Controller/ExpiryWarning.php', 'SimpleSAML\\Module\\authcrypt\\Auth\\Source\\Hash' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/authcrypt/lib/Auth/Source/Hash.php', 'SimpleSAML\\Module\\authcrypt\\Auth\\Source\\Htpasswd' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/authcrypt/lib/Auth/Source/Htpasswd.php', + 'SimpleSAML\\Module\\authfacebook\\Auth\\Source\\Facebook' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/authfacebook/lib/Auth/Source/Facebook.php', + 'SimpleSAML\\Module\\authfacebook\\Facebook' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/authfacebook/lib/Facebook.php', 'SimpleSAML\\Module\\authorize\\Auth\\Process\\Authorize' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/authorize/lib/Auth/Process/Authorize.php', 'SimpleSAML\\Module\\authtwitter\\Auth\\Source\\Twitter' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/authtwitter/lib/Auth/Source/Twitter.php', + 'SimpleSAML\\Module\\authwindowslive\\Auth\\Source\\LiveID' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/authwindowslive/lib/Auth/Source/LiveID.php', + 'SimpleSAML\\Module\\cas\\Auth\\Source\\CAS' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/cas/lib/Auth/Source/CAS.php', 'SimpleSAML\\Module\\cdc\\Client' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/cdc/lib/Client.php', 'SimpleSAML\\Module\\cdc\\Server' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/cdc/lib/Server.php', 'SimpleSAML\\Module\\consent\\Auth\\Process\\Consent' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/consent/lib/Auth/Process/Consent.php', @@ -4448,8 +4452,25 @@ 'SimpleSAML\\Module\\preprodwarning\\Auth\\Process\\Warning' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/preprodwarning/lib/Auth/Process/Warning.php', 'SimpleSAML\\Module\\preprodwarning\\Controller\\PreProdWarning' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/preprodwarning/lib/Controller/PreProdWarning.php', 'SimpleSAML\\Module\\radius\\Auth\\Source\\Radius' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/radius/lib/Auth/Source/Radius.php', + 'SimpleSAML\\Module\\riak\\Store\\Riak' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/riak/lib/Store/Riak.php', 'SimpleSAML\\Module\\smartattributes\\Auth\\Process\\SmartID' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/smartattributes/lib/Auth/Process/SmartID.php', 'SimpleSAML\\Module\\smartattributes\\Auth\\Process\\SmartName' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/smartattributes/lib/Auth/Process/SmartName.php', + 'SimpleSAML\\Module\\sqlauth\\Auth\\Source\\SQL' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/sqlauth/lib/Auth/Source/SQL.php', + 'SimpleSAML\\Module\\statistics\\AccessCheck' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/statistics/lib/AccessCheck.php', + 'SimpleSAML\\Module\\statistics\\Aggregator' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/statistics/lib/Aggregator.php', + 'SimpleSAML\\Module\\statistics\\DateHandler' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/statistics/lib/DateHandler.php', + 'SimpleSAML\\Module\\statistics\\DateHandlerMonth' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/statistics/lib/DateHandlerMonth.php', + 'SimpleSAML\\Module\\statistics\\Graph\\GoogleCharts' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/statistics/lib/Graph/GoogleCharts.php', + 'SimpleSAML\\Module\\statistics\\LogCleaner' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/statistics/lib/LogCleaner.php', + 'SimpleSAML\\Module\\statistics\\LogParser' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/statistics/lib/LogParser.php', + 'SimpleSAML\\Module\\statistics\\RatioDataset' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/statistics/lib/RatioDataset.php', + 'SimpleSAML\\Module\\statistics\\Ruleset' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/statistics/lib/Ruleset.php', + 'SimpleSAML\\Module\\statistics\\StatDataset' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/statistics/lib/StatDataset.php', + 'SimpleSAML\\Module\\statistics\\StatisticsController' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/statistics/lib/StatisticsController.php', + 'SimpleSAML\\Module\\statistics\\Statistics\\FieldPresentation\\Base' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/FieldPresentation/Base.php', + 'SimpleSAML\\Module\\statistics\\Statistics\\FieldPresentation\\Entity' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/FieldPresentation/Entity.php', + 'SimpleSAML\\Module\\statistics\\Statistics\\Rulesets\\BaseRule' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/Rulesets/BaseRule.php', + 'SimpleSAML\\Module\\statistics\\Statistics\\Rulesets\\Ratio' => $vendorDir . '/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/Rulesets/Ratio.php', 'SimpleSAML\\Session' => $vendorDir . '/simplesamlphp/simplesamlphp/lib/SimpleSAML/Session.php', 'SimpleSAML\\SessionHandler' => $vendorDir . '/simplesamlphp/simplesamlphp/lib/SimpleSAML/SessionHandler.php', 'SimpleSAML\\SessionHandlerCookie' => $vendorDir . '/simplesamlphp/simplesamlphp/lib/SimpleSAML/SessionHandlerCookie.php', diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php index d7e9c376eadb0b0477966cca7ca3d243ab8ea600..8144af166e94a67462a3be4fe3e31748530ca50f 100644 --- a/vendor/composer/autoload_static.php +++ b/vendor/composer/autoload_static.php @@ -5242,8 +5242,12 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530 'SimpleSAML\\Module\\authX509\\Controller\\ExpiryWarning' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/authX509/lib/Controller/ExpiryWarning.php', 'SimpleSAML\\Module\\authcrypt\\Auth\\Source\\Hash' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/authcrypt/lib/Auth/Source/Hash.php', 'SimpleSAML\\Module\\authcrypt\\Auth\\Source\\Htpasswd' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/authcrypt/lib/Auth/Source/Htpasswd.php', + 'SimpleSAML\\Module\\authfacebook\\Auth\\Source\\Facebook' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/authfacebook/lib/Auth/Source/Facebook.php', + 'SimpleSAML\\Module\\authfacebook\\Facebook' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/authfacebook/lib/Facebook.php', 'SimpleSAML\\Module\\authorize\\Auth\\Process\\Authorize' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/authorize/lib/Auth/Process/Authorize.php', 'SimpleSAML\\Module\\authtwitter\\Auth\\Source\\Twitter' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/authtwitter/lib/Auth/Source/Twitter.php', + 'SimpleSAML\\Module\\authwindowslive\\Auth\\Source\\LiveID' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/authwindowslive/lib/Auth/Source/LiveID.php', + 'SimpleSAML\\Module\\cas\\Auth\\Source\\CAS' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/cas/lib/Auth/Source/CAS.php', 'SimpleSAML\\Module\\cdc\\Client' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/cdc/lib/Client.php', 'SimpleSAML\\Module\\cdc\\Server' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/cdc/lib/Server.php', 'SimpleSAML\\Module\\consent\\Auth\\Process\\Consent' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/consent/lib/Auth/Process/Consent.php', @@ -5269,8 +5273,25 @@ class ComposerStaticInit5c689ffcd54b9e495ed983fdce09b530 'SimpleSAML\\Module\\preprodwarning\\Auth\\Process\\Warning' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/preprodwarning/lib/Auth/Process/Warning.php', 'SimpleSAML\\Module\\preprodwarning\\Controller\\PreProdWarning' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/preprodwarning/lib/Controller/PreProdWarning.php', 'SimpleSAML\\Module\\radius\\Auth\\Source\\Radius' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/radius/lib/Auth/Source/Radius.php', + 'SimpleSAML\\Module\\riak\\Store\\Riak' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/riak/lib/Store/Riak.php', 'SimpleSAML\\Module\\smartattributes\\Auth\\Process\\SmartID' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/smartattributes/lib/Auth/Process/SmartID.php', 'SimpleSAML\\Module\\smartattributes\\Auth\\Process\\SmartName' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/smartattributes/lib/Auth/Process/SmartName.php', + 'SimpleSAML\\Module\\sqlauth\\Auth\\Source\\SQL' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/sqlauth/lib/Auth/Source/SQL.php', + 'SimpleSAML\\Module\\statistics\\AccessCheck' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/statistics/lib/AccessCheck.php', + 'SimpleSAML\\Module\\statistics\\Aggregator' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/statistics/lib/Aggregator.php', + 'SimpleSAML\\Module\\statistics\\DateHandler' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/statistics/lib/DateHandler.php', + 'SimpleSAML\\Module\\statistics\\DateHandlerMonth' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/statistics/lib/DateHandlerMonth.php', + 'SimpleSAML\\Module\\statistics\\Graph\\GoogleCharts' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/statistics/lib/Graph/GoogleCharts.php', + 'SimpleSAML\\Module\\statistics\\LogCleaner' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/statistics/lib/LogCleaner.php', + 'SimpleSAML\\Module\\statistics\\LogParser' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/statistics/lib/LogParser.php', + 'SimpleSAML\\Module\\statistics\\RatioDataset' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/statistics/lib/RatioDataset.php', + 'SimpleSAML\\Module\\statistics\\Ruleset' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/statistics/lib/Ruleset.php', + 'SimpleSAML\\Module\\statistics\\StatDataset' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/statistics/lib/StatDataset.php', + 'SimpleSAML\\Module\\statistics\\StatisticsController' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/statistics/lib/StatisticsController.php', + 'SimpleSAML\\Module\\statistics\\Statistics\\FieldPresentation\\Base' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/FieldPresentation/Base.php', + 'SimpleSAML\\Module\\statistics\\Statistics\\FieldPresentation\\Entity' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/FieldPresentation/Entity.php', + 'SimpleSAML\\Module\\statistics\\Statistics\\Rulesets\\BaseRule' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/Rulesets/BaseRule.php', + 'SimpleSAML\\Module\\statistics\\Statistics\\Rulesets\\Ratio' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/Rulesets/Ratio.php', 'SimpleSAML\\Session' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/lib/SimpleSAML/Session.php', 'SimpleSAML\\SessionHandler' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/lib/SimpleSAML/SessionHandler.php', 'SimpleSAML\\SessionHandlerCookie' => __DIR__ . '/..' . '/simplesamlphp/simplesamlphp/lib/SimpleSAML/SessionHandlerCookie.php', diff --git a/vendor/composer/installed.json b/vendor/composer/installed.json index 0d47f322d940f5a8092b31809adfd73eb44aed0b..a5605e53c46534698a7557d4314b3199a3984fc4 100644 --- a/vendor/composer/installed.json +++ b/vendor/composer/installed.json @@ -3148,17 +3148,17 @@ }, { "name": "drupal/core", - "version": "9.4.7", - "version_normalized": "9.4.7.0", + "version": "9.4.8", + "version_normalized": "9.4.8.0", "source": { "type": "git", "url": "https://github.com/drupal/core.git", - "reference": "247431af7e33a8cf7c46677a79336103c6e83db1" + "reference": "a627d1b2a00f2cef0572e37b94dea298800541f4" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core/zipball/247431af7e33a8cf7c46677a79336103c6e83db1", - "reference": "247431af7e33a8cf7c46677a79336103c6e83db1", + "url": "https://api.github.com/repos/drupal/core/zipball/a627d1b2a00f2cef0572e37b94dea298800541f4", + "reference": "a627d1b2a00f2cef0572e37b94dea298800541f4", "shasum": "" }, "require": { @@ -3238,7 +3238,7 @@ "drupal/core-uuid": "self.version", "drupal/core-version": "self.version" }, - "time": "2022-09-28T16:19:47+00:00", + "time": "2022-10-06T15:57:08+00:00", "type": "drupal-core", "extra": { "drupal-scaffold": { @@ -3316,7 +3316,7 @@ ], "description": "Drupal is an open source content management platform powering millions of websites and applications.", "support": { - "source": "https://github.com/drupal/core/tree/9.4.7" + "source": "https://github.com/drupal/core/tree/9.4.8" }, "install-path": "../../web/core" }, @@ -3372,17 +3372,17 @@ }, { "name": "drupal/core-recommended", - "version": "9.4.7", - "version_normalized": "9.4.7.0", + "version": "9.4.8", + "version_normalized": "9.4.8.0", "source": { "type": "git", "url": "https://github.com/drupal/core-recommended.git", - "reference": "287868a598996f1eb04ea57dbefb741d3784db23" + "reference": "684cc844f7b729286f5d62f1ee4b20ab12586502" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/drupal/core-recommended/zipball/287868a598996f1eb04ea57dbefb741d3784db23", - "reference": "287868a598996f1eb04ea57dbefb741d3784db23", + "url": "https://api.github.com/repos/drupal/core-recommended/zipball/684cc844f7b729286f5d62f1ee4b20ab12586502", + "reference": "684cc844f7b729286f5d62f1ee4b20ab12586502", "shasum": "" }, "require": { @@ -3391,7 +3391,7 @@ "doctrine/annotations": "~1.13.2", "doctrine/lexer": "~1.2.3", "doctrine/reflection": "~1.2.3", - "drupal/core": "9.4.7", + "drupal/core": "9.4.8", "egulias/email-validator": "~3.2", "guzzlehttp/guzzle": "~6.5.8", "guzzlehttp/promises": "~1.5.1", @@ -3446,7 +3446,7 @@ "conflict": { "webflo/drupal-core-strict": "*" }, - "time": "2022-09-28T16:19:47+00:00", + "time": "2022-10-06T15:57:08+00:00", "type": "metapackage", "notification-url": "https://packagist.org/downloads/", "license": [ @@ -3454,7 +3454,7 @@ ], "description": "Core and its dependencies with known-compatible minor versions. Require this project INSTEAD OF drupal/core.", "support": { - "source": "https://github.com/drupal/core-recommended/tree/9.4.7" + "source": "https://github.com/drupal/core-recommended/tree/9.4.8" }, "install-path": null }, @@ -11476,6 +11476,11 @@ "facebook", "simplesamlphp" ], + "support": { + "issues": "https://github.com/simplesamlphp/simplesamlphp-module-authfacebook/issues", + "source": "https://github.com/simplesamlphp/simplesamlphp-module-authfacebook" + }, + "abandoned": true, "install-path": "../simplesamlphp/simplesamlphp/modules/authfacebook" }, { @@ -11640,6 +11645,11 @@ "windows", "windowslive" ], + "support": { + "issues": "https://github.com/tvdijen/simplesamlphp-module-authwindowslive/issues", + "source": "https://github.com/tvdijen/simplesamlphp-module-authwindowslive" + }, + "abandoned": true, "install-path": "../simplesamlphp/simplesamlphp/modules/authwindowslive" }, { @@ -11806,6 +11816,10 @@ "cas", "simplesamlphp" ], + "support": { + "issues": "https://github.com/tvdijen/simplesamlphp-module-cas/issues", + "source": "https://github.com/tvdijen/simplesamlphp-module-cas" + }, "install-path": "../simplesamlphp/simplesamlphp/modules/cas" }, { @@ -12073,6 +12087,10 @@ "exampleattributeserver", "simplesamlphp" ], + "support": { + "issues": "https://github.com/tvdijen/simplesamlphp-module-exampleattributeserver/issues", + "source": "https://github.com/tvdijen/simplesamlphp-module-exampleattributeserver" + }, "install-path": "../simplesamlphp/simplesamlphp/modules/exampleattributeserver" }, { @@ -12289,6 +12307,10 @@ "cookies", "simplesamlphp" ], + "support": { + "issues": "https://github.com/simplesamlphp/simplesamlphp-module-memcookie/issues", + "source": "https://github.com/simplesamlphp/simplesamlphp-module-memcookie/" + }, "install-path": "../simplesamlphp/simplesamlphp/modules/memcookie" }, { @@ -12613,6 +12635,11 @@ "riak", "simplesamlphp" ], + "support": { + "issues": "https://github.com/tvdijen/simplesamlphp-module-riak/issues", + "source": "https://github.com/tvdijen/simplesamlphp-module-riak" + }, + "abandoned": true, "install-path": "../simplesamlphp/simplesamlphp/modules/riak" }, { @@ -12662,6 +12689,10 @@ "sanitycheck", "simplesamlphp" ], + "support": { + "issues": "https://github.com/tvdijen/simplesamlphp-module-sanitycheck/issues", + "source": "https://github.com/tvdijen/simplesamlphp-module-sanitycheck" + }, "install-path": "../simplesamlphp/simplesamlphp/modules/sanitycheck" }, { @@ -12817,6 +12848,10 @@ "simplesamlphp", "statistics" ], + "support": { + "issues": "https://github.com/simplesamlphp/simplesamlphp-module-statistics/issues", + "source": "https://github.com/simplesamlphp/simplesamlphp-module-statistics" + }, "install-path": "../simplesamlphp/simplesamlphp/modules/statistics" }, { @@ -14381,17 +14416,17 @@ }, { "name": "symfony/http-foundation", - "version": "v4.4.45", - "version_normalized": "4.4.45.0", + "version": "v4.4.46", + "version_normalized": "4.4.46.0", "source": { "type": "git", "url": "https://github.com/symfony/http-foundation.git", - "reference": "b2f2e3cb66349d89cb46c939cea03c62ad71cf00" + "reference": "7acdc97f28a48b96def93af1efd77cfc5e8776dd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-foundation/zipball/b2f2e3cb66349d89cb46c939cea03c62ad71cf00", - "reference": "b2f2e3cb66349d89cb46c939cea03c62ad71cf00", + "url": "https://api.github.com/repos/symfony/http-foundation/zipball/7acdc97f28a48b96def93af1efd77cfc5e8776dd", + "reference": "7acdc97f28a48b96def93af1efd77cfc5e8776dd", "shasum": "" }, "require": { @@ -14404,7 +14439,7 @@ "predis/predis": "~1.0", "symfony/expression-language": "^3.4|^4.0|^5.0" }, - "time": "2022-08-17T15:29:03+00:00", + "time": "2022-09-13T06:14:47+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -14432,7 +14467,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.45" + "source": "https://github.com/symfony/http-foundation/tree/v4.4.46" }, "funding": [ { @@ -14452,17 +14487,17 @@ }, { "name": "symfony/http-kernel", - "version": "v4.4.45", - "version_normalized": "4.4.45.0", + "version": "v4.4.46", + "version_normalized": "4.4.46.0", "source": { "type": "git", "url": "https://github.com/symfony/http-kernel.git", - "reference": "4f2d38e9a3c6997ea0886ede5aaf337dfd0fc938" + "reference": "fb72bc54f300151fadef84fce79764138b1ef943" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/http-kernel/zipball/4f2d38e9a3c6997ea0886ede5aaf337dfd0fc938", - "reference": "4f2d38e9a3c6997ea0886ede5aaf337dfd0fc938", + "url": "https://api.github.com/repos/symfony/http-kernel/zipball/fb72bc54f300151fadef84fce79764138b1ef943", + "reference": "fb72bc54f300151fadef84fce79764138b1ef943", "shasum": "" }, "require": { @@ -14511,7 +14546,7 @@ "symfony/console": "", "symfony/dependency-injection": "" }, - "time": "2022-08-26T14:34:48+00:00", + "time": "2022-09-30T07:27:59+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -14539,7 +14574,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.45" + "source": "https://github.com/symfony/http-kernel/tree/v4.4.46" }, "funding": [ { @@ -14559,17 +14594,17 @@ }, { "name": "symfony/mime", - "version": "v5.4.12", - "version_normalized": "5.4.12.0", + "version": "v5.4.13", + "version_normalized": "5.4.13.0", "source": { "type": "git", "url": "https://github.com/symfony/mime.git", - "reference": "03876e9c5a36f5b45e7d9a381edda5421eff8a90" + "reference": "bb2ccf759e2b967dcd11bdee5bdf30dddd2290bd" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/mime/zipball/03876e9c5a36f5b45e7d9a381edda5421eff8a90", - "reference": "03876e9c5a36f5b45e7d9a381edda5421eff8a90", + "url": "https://api.github.com/repos/symfony/mime/zipball/bb2ccf759e2b967dcd11bdee5bdf30dddd2290bd", + "reference": "bb2ccf759e2b967dcd11bdee5bdf30dddd2290bd", "shasum": "" }, "require": { @@ -14593,7 +14628,7 @@ "symfony/property-info": "^4.4|^5.1|^6.0", "symfony/serializer": "^5.2|^6.0" }, - "time": "2022-08-19T14:24:03+00:00", + "time": "2022-09-01T18:18:29+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -14625,7 +14660,7 @@ "mime-type" ], "support": { - "source": "https://github.com/symfony/mime/tree/v5.4.12" + "source": "https://github.com/symfony/mime/tree/v5.4.13" }, "funding": [ { @@ -16012,17 +16047,17 @@ }, { "name": "symfony/validator", - "version": "v4.4.45", - "version_normalized": "4.4.45.0", + "version": "v4.4.46", + "version_normalized": "4.4.46.0", "source": { "type": "git", "url": "https://github.com/symfony/validator.git", - "reference": "06db9bfca8fefea4dfe8e804bbcd0aa79a414d0c" + "reference": "51d06a00a7a8e9c45b91735932040b9f1df2c994" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/validator/zipball/06db9bfca8fefea4dfe8e804bbcd0aa79a414d0c", - "reference": "06db9bfca8fefea4dfe8e804bbcd0aa79a414d0c", + "url": "https://api.github.com/repos/symfony/validator/zipball/51d06a00a7a8e9c45b91735932040b9f1df2c994", + "reference": "51d06a00a7a8e9c45b91735932040b9f1df2c994", "shasum": "" }, "require": { @@ -16073,7 +16108,7 @@ "symfony/translation": "For translating validation errors.", "symfony/yaml": "" }, - "time": "2022-08-04T16:19:35+00:00", + "time": "2022-09-15T12:26:05+00:00", "type": "library", "installation-source": "dist", "autoload": { @@ -16101,7 +16136,7 @@ "description": "Provides tools to validate values", "homepage": "https://symfony.com", "support": { - "source": "https://github.com/symfony/validator/tree/v4.4.45" + "source": "https://github.com/symfony/validator/tree/v4.4.46" }, "funding": [ { @@ -16121,17 +16156,17 @@ }, { "name": "symfony/var-dumper", - "version": "v5.4.11", - "version_normalized": "5.4.11.0", + "version": "v5.4.13", + "version_normalized": "5.4.13.0", "source": { "type": "git", "url": "https://github.com/symfony/var-dumper.git", - "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861" + "reference": "2bf2ccab581bec363191672f0df40e0c85569e1c" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/symfony/var-dumper/zipball/b8f306d7b8ef34fb3db3305be97ba8e088fb4861", - "reference": "b8f306d7b8ef34fb3db3305be97ba8e088fb4861", + "url": "https://api.github.com/repos/symfony/var-dumper/zipball/2bf2ccab581bec363191672f0df40e0c85569e1c", + "reference": "2bf2ccab581bec363191672f0df40e0c85569e1c", "shasum": "" }, "require": { @@ -16155,7 +16190,7 @@ "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-07-20T13:00:38+00:00", + "time": "2022-09-06T13:23:31+00:00", "bin": [ "Resources/bin/var-dump-server" ], @@ -16193,7 +16228,7 @@ "dump" ], "support": { - "source": "https://github.com/symfony/var-dumper/tree/v5.4.11" + "source": "https://github.com/symfony/var-dumper/tree/v5.4.13" }, "funding": [ { diff --git a/vendor/composer/installed.php b/vendor/composer/installed.php index e249c708842324e838e1acf38581fbd0a808b608..e516b3be7a07a589f5f0f6977274c33bdb05186c 100644 --- a/vendor/composer/installed.php +++ b/vendor/composer/installed.php @@ -3,7 +3,7 @@ 'name' => 'osu-asc-webservices/d8-upstream', 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '2d7a5f4dab146b60ec7cc817a51373f9d98e5936', + 'reference' => '428b8453a7944c761ef824cc634e6ec4f93cdb4d', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -491,9 +491,9 @@ 'dev_requirement' => false, ), 'drupal/core' => array( - 'pretty_version' => '9.4.7', - 'version' => '9.4.7.0', - 'reference' => '247431af7e33a8cf7c46677a79336103c6e83db1', + 'pretty_version' => '9.4.8', + 'version' => '9.4.8.0', + 'reference' => 'a627d1b2a00f2cef0572e37b94dea298800541f4', 'type' => 'drupal-core', 'install_path' => __DIR__ . '/../../web/core', 'aliases' => array(), @@ -502,25 +502,25 @@ 'drupal/core-annotation' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-assertion' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-bridge' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-class-finder' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-composer-scaffold' => array( @@ -535,97 +535,97 @@ 'drupal/core-datetime' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-dependency-injection' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-diff' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-discovery' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-event-dispatcher' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-file-cache' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-file-security' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-filesystem' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-front-matter' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-gettext' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-graph' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-http-foundation' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-php-storage' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-plugin' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-proxy-builder' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-recommended' => array( - 'pretty_version' => '9.4.7', - 'version' => '9.4.7.0', - 'reference' => '287868a598996f1eb04ea57dbefb741d3784db23', + 'pretty_version' => '9.4.8', + 'version' => '9.4.8.0', + 'reference' => '684cc844f7b729286f5d62f1ee4b20ab12586502', 'type' => 'metapackage', 'install_path' => NULL, 'aliases' => array(), @@ -634,37 +634,37 @@ 'drupal/core-render' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-serialization' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-transliteration' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-utility' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-uuid' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/core-version' => array( 'dev_requirement' => false, 'replaced' => array( - 0 => '9.4.7', + 0 => '9.4.8', ), ), 'drupal/crop' => array( @@ -1594,7 +1594,7 @@ 'osu-asc-webservices/d8-upstream' => array( 'pretty_version' => 'dev-master', 'version' => 'dev-master', - 'reference' => '2d7a5f4dab146b60ec7cc817a51373f9d98e5936', + 'reference' => '428b8453a7944c761ef824cc634e6ec4f93cdb4d', 'type' => 'project', 'install_path' => __DIR__ . '/../../', 'aliases' => array(), @@ -2277,27 +2277,27 @@ 'dev_requirement' => false, ), 'symfony/http-foundation' => array( - 'pretty_version' => 'v4.4.45', - 'version' => '4.4.45.0', - 'reference' => 'b2f2e3cb66349d89cb46c939cea03c62ad71cf00', + 'pretty_version' => 'v4.4.46', + 'version' => '4.4.46.0', + 'reference' => '7acdc97f28a48b96def93af1efd77cfc5e8776dd', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/http-foundation', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/http-kernel' => array( - 'pretty_version' => 'v4.4.45', - 'version' => '4.4.45.0', - 'reference' => '4f2d38e9a3c6997ea0886ede5aaf337dfd0fc938', + 'pretty_version' => 'v4.4.46', + 'version' => '4.4.46.0', + 'reference' => 'fb72bc54f300151fadef84fce79764138b1ef943', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/http-kernel', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/mime' => array( - 'pretty_version' => 'v5.4.12', - 'version' => '5.4.12.0', - 'reference' => '03876e9c5a36f5b45e7d9a381edda5421eff8a90', + 'pretty_version' => 'v5.4.13', + 'version' => '5.4.13.0', + 'reference' => 'bb2ccf759e2b967dcd11bdee5bdf30dddd2290bd', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/mime', 'aliases' => array(), @@ -2460,18 +2460,18 @@ ), ), 'symfony/validator' => array( - 'pretty_version' => 'v4.4.45', - 'version' => '4.4.45.0', - 'reference' => '06db9bfca8fefea4dfe8e804bbcd0aa79a414d0c', + 'pretty_version' => 'v4.4.46', + 'version' => '4.4.46.0', + 'reference' => '51d06a00a7a8e9c45b91735932040b9f1df2c994', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/validator', 'aliases' => array(), 'dev_requirement' => false, ), 'symfony/var-dumper' => array( - 'pretty_version' => 'v5.4.11', - 'version' => '5.4.11.0', - 'reference' => 'b8f306d7b8ef34fb3db3305be97ba8e088fb4861', + 'pretty_version' => 'v5.4.13', + 'version' => '5.4.13.0', + 'reference' => '2bf2ccab581bec363191672f0df40e0c85569e1c', 'type' => 'library', 'install_path' => __DIR__ . '/../symfony/var-dumper', 'aliases' => array(), diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/.php_cs.dist b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/.php_cs.dist new file mode 100644 index 0000000000000000000000000000000000000000..aba775e95879036ecc29dfdb23ccaf3d5adfee9f --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/.php_cs.dist @@ -0,0 +1,17 @@ +<?php +$finder = PhpCsFixer\Finder::create() + ->in([ + __DIR__ . '/lib', + __DIR__ . '/extlibinc', + __DIR__ . '/tests', + __DIR__ . '/www', + ]) +; +return PhpCsFixer\Config::create() + ->setRules([ + '@PSR2' => true, + '@PSR4' => true, + '@PSR5' => true, + ]) + ->setFinder($finder) +; diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/.travis.yml b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..208a6d6c78faaea8f1720aff7a6a2a756d266ab3 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/.travis.yml @@ -0,0 +1,30 @@ +sudo: required + +language: php + +php: + - 5.6 + - 7.0 + - 7.1 + - 7.2 + - 7.3 + +env: + - SIMPLESAMLPHP_VERSION=1.17.* + +before_script: + - composer require "simplesamlphp/simplesamlphp:${SIMPLESAMLPHP_VERSION}" --no-update + - composer update --no-interaction + +script: + - vendor/simplesamlphp/simplesamlphp-test-framework/bin/check-syntax-php.sh + - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then php vendor/phpunit/phpunit/phpunit; else php vendor/phpunit/phpunit/phpunit --no-coverage; fi + - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then vendor/bin/psalm; fi + +after_success: + # Codecov, need to edit bash uploader for incorrect TRAVIS_PYTHON_VERSION environment variable matching, at least until codecov/codecov-bash#133 is resolved + - curl -s https://codecov.io/bash > .codecov + - sed -i -e 's/TRAVIS_.*_VERSION/^TRAVIS_.*_VERSION=/' .codecov + - chmod +x .codecov + - if [[ $TRAVIS_PHP_VERSION == "5.6" ]]; then ./.codecov -X gcov; fi +# - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then bash <(curl -s https://codecov.io/bash); fi diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/LICENSE b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..0a041280bd00a9d068f503b8ee7ce35214bd24a1 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/LICENSE @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + 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 that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU 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 as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/codecov.yml b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/codecov.yml new file mode 100644 index 0000000000000000000000000000000000000000..f7f39e1e93d0ca23383d5ed120442f62f5f15ac9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/codecov.yml @@ -0,0 +1,11 @@ +coverage: + status: + project: yes + +comment: + layout: "diff" + behavior: once + require_changes: true + require_base: no + require_head: yes + branches: null diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/composer.json b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..ffee58ae498908d4b5fc3838585d507c5795af6c --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/composer.json @@ -0,0 +1,45 @@ +{ + "name": "simplesamlphp/simplesamlphp-module-authfacebook", + "description": "A module that is able to authenticate against Facebook", + "type": "simplesamlphp-module", + "keywords": ["simplesamlphp", "facebook"], + "license": "LGPL-3.0-or-later", + "authors": [ + { + "name": "Andjelko Horvat", + "email": "comel@vingd.com" + }, + { + "name": "Tim van Dijen", + "email": "tvdijen@gmail.com" + } + ], + "config": { + "preferred-install": { + "simplesamlphp/simplesamlphp": "source", + "*": "dist" + } + }, + "autoload": { + "psr-4": { + "SimpleSAML\\Module\\authfacebook\\": "lib/" + } + }, + "autoload-dev": { + "psr-4": { + "SimpleSAML\\Test\\Utils\\": "vendor/simplesamlphp/simplesamlphp/tests/Utils" + } + }, + "require": { + "php": ">=5.6", + "simplesamlphp/composer-module-installer": "~1.1" + }, + "require-dev": { + "simplesamlphp/simplesamlphp": "^1.17", + "simplesamlphp/simplesamlphp-test-framework": "^0.0.10" + }, + "support": { + "issues": "https://github.com/simplesamlphp/simplesamlphp-module-authfacebook/issues", + "source": "https://github.com/simplesamlphp/simplesamlphp-module-authfacebook" + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/default-disable b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/default-disable new file mode 100644 index 0000000000000000000000000000000000000000..fa0bd82e2df7bd79d57593d35bc53c1f9d3ef71f --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/default-disable @@ -0,0 +1,3 @@ +This file indicates that the default state of this module +is disabled. To enable, create a file named enable in the +same directory as this file. diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/docs/authfacebook.md b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/docs/authfacebook.md new file mode 100644 index 0000000000000000000000000000000000000000..41de42681fed292cb3aed7f6cddfdecde46d1116 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/docs/authfacebook.md @@ -0,0 +1,13 @@ +Using the Facebook authentication source with SimpleSAMLphp +=========================================================== + +Remember to configure `authsources.php`, with both App ID (or API Key) and App Secret. + +To get an App ID/API Key and secret, register the application at: + + * <http://www.facebook.com/developers/> + +Note: requests with App ID should be faster <https://github.com/facebook/php-sdk/issues/214>. + +This module needs the CURL and JSON PHP extensions. + diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/extlibinc/base_facebook.php b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/extlibinc/base_facebook.php new file mode 100644 index 0000000000000000000000000000000000000000..e53c2b2769ac343ab79d28dbb0cf51b161ba6ec9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/extlibinc/base_facebook.php @@ -0,0 +1,1488 @@ +<?php +/** + * Copyright 2011 Facebook, Inc. + * + * Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations + * under the License. + */ + +if (!function_exists('curl_init')) { + throw new Exception('Facebook needs the CURL PHP extension.'); +} +if (!function_exists('json_decode')) { + throw new Exception('Facebook needs the JSON PHP extension.'); +} + +/** + * Thrown when an API call returns an exception. + * + * @author Naitik Shah <naitik@facebook.com> + */ +class FacebookApiException extends Exception +{ + /** + * The result from the API server that represents the exception information. + */ + protected $result; + + /** + * Make a new API Exception with the given result. + * + * @param array $result The result from the API server + */ + public function __construct($result) + { + $this->result = $result; + + $code = isset($result['error_code']) ? $result['error_code'] : 0; + + if (isset($result['error_description'])) { + // OAuth 2.0 Draft 10 style + $msg = $result['error_description']; + } elseif (isset($result['error']) && is_array($result['error'])) { + // OAuth 2.0 Draft 00 style + $msg = $result['error']['message']; + } elseif (isset($result['error_msg'])) { + // Rest server style + $msg = $result['error_msg']; + } else { + $msg = 'Unknown Error. Check getResult()'; + } + + parent::__construct($msg, $code); + } + + /** + * Return the associated result object returned by the API server. + * + * @return array The result from the API server + */ + public function getResult() + { + return $this->result; + } + + /** + * Returns the associated type for the error. This will default to + * 'Exception' when a type is not available. + * + * @return string + */ + public function getType() + { + if (isset($this->result['error'])) { + $error = $this->result['error']; + if (is_string($error)) { + // OAuth 2.0 Draft 10 style + return $error; + } elseif (is_array($error)) { + // OAuth 2.0 Draft 00 style + if (isset($error['type'])) { + return $error['type']; + } + } + } + + return 'Exception'; + } + + /** + * To make debugging easier. + * + * @return string The string representation of the error + */ + public function __toString() + { + $str = $this->getType() . ': '; + if ($this->code != 0) { + $str .= $this->code . ': '; + } + return $str . $this->message; + } +} + +/** + * Provides access to the Facebook Platform. This class provides + * a majority of the functionality needed, but the class is abstract + * because it is designed to be sub-classed. The subclass must + * implement the four abstract methods listed at the bottom of + * the file. + * + * @author Naitik Shah <naitik@facebook.com> + */ +abstract class BaseFacebook +{ + /** + * Version. + */ + const VERSION = '3.2.2'; + + /** + * Signed Request Algorithm. + */ + const SIGNED_REQUEST_ALGORITHM = 'HMAC-SHA256'; + + /** + * Default options for curl. + */ + public static $CURL_OPTS = [ + CURLOPT_CONNECTTIMEOUT => 10, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_TIMEOUT => 60, + CURLOPT_USERAGENT => 'facebook-php-3.2', + ]; + + /** + * Maps aliases to Facebook domains. + */ + public static $DOMAIN_MAP = [ + 'api' => 'https://api.facebook.com/', + 'api_video' => 'https://api-video.facebook.com/', + 'api_read' => 'https://api-read.facebook.com/', + 'graph' => 'https://graph.facebook.com/', + 'graph_video' => 'https://graph-video.facebook.com/', + 'www' => 'https://www.facebook.com/', + ]; + + /** + * The Application ID. + * + * @var string + */ + protected $appId; + + /** + * The Application App Secret. + * + * @var string + */ + protected $appSecret; + + /** + * The ID of the Facebook user, or 0 if the user is logged out. + * + * @var integer|null + */ + protected $user = null; + + /** + * The data from the signed_request token. + * @var array|null + */ + protected $signedRequest = null; + + /** + * A CSRF state variable to assist in the defense against CSRF attacks. + * @var string|null + */ + protected $state = null; + + /** + * The OAuth access token received in exchange for a valid authorization + * code. null means the access token has yet to be determined. + * + * @var string|null + */ + protected $accessToken = null; + + /** + * Indicates if the CURL based @ syntax for file uploads is enabled. + * + * @var boolean + */ + protected $fileUploadSupport = false; + + /** + * Indicates if we trust HTTP_X_FORWARDED_* headers. + * + * @var boolean + */ + protected $trustForwarded = false; + + /** + * Initialize a Facebook Application. + * + * The configuration: + * - appId: the application ID + * - secret: the application secret + * - fileUpload: (optional) boolean indicating if file uploads are enabled + * + * @param array $config The application configuration + */ + public function __construct($config) + { + $this->setAppId($config['appId']); + $this->setAppSecret($config['secret']); + if (isset($config['fileUpload'])) { + $this->setFileUploadSupport($config['fileUpload']); + } + if (isset($config['trustForwarded']) && $config['trustForwarded']) { + $this->trustForwarded = true; + } + $state = $this->getPersistentData('state'); + if (!empty($state)) { + $this->state = $state; + } + } + + /** + * Set the Application ID. + * + * @param string $appId The Application ID + * @return BaseFacebook + */ + public function setAppId($appId) + { + $this->appId = $appId; + return $this; + } + + /** + * Get the Application ID. + * + * @return string the Application ID + */ + public function getAppId() + { + return $this->appId; + } + + /** + * Set the App Secret. + * + * @param string $apiSecret The App Secret + * @return BaseFacebook + * @deprecated + */ + public function setApiSecret($apiSecret) + { + $this->setAppSecret($apiSecret); + return $this; + } + + /** + * Set the App Secret. + * + * @param string $appSecret The App Secret + * @return BaseFacebook + */ + public function setAppSecret($appSecret) + { + $this->appSecret = $appSecret; + return $this; + } + + /** + * Get the App Secret. + * + * @return string the App Secret + * @deprecated + */ + public function getApiSecret() + { + return $this->getAppSecret(); + } + + /** + * Get the App Secret. + * + * @return string the App Secret + */ + public function getAppSecret() + { + return $this->appSecret; + } + + /** + * Set the file upload support status. + * + * @param boolean $fileUploadSupport The file upload support status. + * @return BaseFacebook + */ + public function setFileUploadSupport($fileUploadSupport) + { + $this->fileUploadSupport = $fileUploadSupport; + return $this; + } + + /** + * Get the file upload support status. + * + * @return boolean true if and only if the server supports file upload. + */ + public function getFileUploadSupport() + { + return $this->fileUploadSupport; + } + + /** + * DEPRECATED! Please use getFileUploadSupport instead. + * + * Get the file upload support status. + * + * @return boolean true if and only if the server supports file upload. + */ + public function useFileUploadSupport() + { + return $this->getFileUploadSupport(); + } + + /** + * Sets the access token for api calls. Use this if you get + * your access token by other means and just want the SDK + * to use it. + * + * @param string $access_token an access token. + * @return BaseFacebook + */ + public function setAccessToken($access_token) + { + $this->accessToken = $access_token; + return $this; + } + + /** + * Extend an access token, while removing the short-lived token that might + * have been generated via client-side flow. Thanks to http://bit.ly/b0Pt0H + * for the workaround. + * + * @return boolean Return true is the access token is set. + */ + public function setExtendedAccessToken() + { + try { + // need to circumvent json_decode by calling _oauthRequest + // directly, since response isn't JSON format + $access_token_response = $this->_oauthRequest( + $this->getUrl('graph', '/oauth/access_token'), + $params = [ + 'client_id' => $this->getAppId(), + 'client_secret' => $this->getAppSecret(), + 'grant_type' => 'fb_exchange_token', + 'fb_exchange_token' => $this->getAccessToken(), + ] + ); + } catch (FacebookApiException $e) { + // most likely that user very recently revoked authorization + // In any event, we don't have an access token, so say so + return false; + } + + if (empty($access_token_response)) { + return false; + } + + $response_params = []; + parse_str($access_token_response, $response_params); + + if (!isset($response_params['access_token'])) { + return false; + } + + $this->destroySession(); + + $this->setPersistentData( + 'access_token', + $response_params['access_token'] + ); + return true; + } + + /** + * Determines the access token that should be used for API calls. + * The first time this is called, $this->accessToken is set equal + * to either a valid user access token, or it's set to the application + * access token if a valid user access token wasn't available. Subsequent + * calls return whatever the first call returned. + * + * @return string|null The access token + */ + public function getAccessToken() + { + if ($this->accessToken !== null) { + // we've done this already and cached it. Just return. + return $this->accessToken; + } + + // first establish access token to be the application + // access token, in case we navigate to the /oauth/access_token + // endpoint, where SOME access token is required + $this->setAccessToken($this->getApplicationAccessToken()); + $user_access_token = $this->getUserAccessToken(); + if ($user_access_token) { + $this->setAccessToken($user_access_token); + } + + return $this->accessToken; + } + + /** + * Determines and returns the user access token, first using + * the signed request if present, and then falling back on + * the authorization code if present. The intent is to + * return a valid user access token, or false if one is determined + * to not be available. + * + * @return false|string A valid user access token, or false if one + * could not be determined. + */ + protected function getUserAccessToken() + { + // first, consider a signed request if it's supplied + // if there is a signed request, then it alone determines + // the access token + $signed_request = $this->getSignedRequest(); + if ($signed_request) { + // apps.facebook.com hands the access_token in the signed_request + if (array_key_exists('oauth_token', $signed_request)) { + $access_token = $signed_request['oauth_token']; + $this->setPersistentData('access_token', $access_token); + return $access_token; + } + + // the JS SDK puts a code in with the redirect_uri of '' + if (array_key_exists('code', $signed_request)) { + $code = $signed_request['code']; + if ($code && $code == $this->getPersistentData('code')) { + // short-circuit if the code we have is the same as the one presented + return $this->getPersistentData('access_token'); + } + + $access_token = $this->getAccessTokenFromCode($code, ''); + if ($access_token) { + $this->setPersistentData('code', $code); + $this->setPersistentData('access_token', $access_token); + return $access_token; + } + } + + // signed request states there's no access token, so anything + // stored should be cleared + $this->clearAllPersistentData(); + return false; + // respect the signed request's data, even if there's an authorization code or something else + } + + $code = $this->getCode(); + if ($code && $code != $this->getPersistentData('code')) { + $access_token = $this->getAccessTokenFromCode($code); + if ($access_token) { + $this->setPersistentData('code', $code); + $this->setPersistentData('access_token', $access_token); + return $access_token; + } + + // code was bogus, so everything based on it should be invalidated + $this->clearAllPersistentData(); + return false; + } + + // as a fallback, just return whatever is in the persistent + // store, knowing nothing explicit (signed request, authorization + // code, etc.) was present to shadow it (or we saw a code in $_REQUEST, + // but it's the same as what's in the persistent store) + return $this->getPersistentData('access_token'); + } + + /** + * Retrieve the signed request, either from a request parameter or, + * if not present, from a cookie. + * + * @return array|null the signed request, if available, or null otherwise. + */ + public function getSignedRequest() + { + if (!$this->signedRequest) { + if (!empty($_REQUEST['signed_request'])) { + $this->signedRequest = $this->parseSignedRequest( + $_REQUEST['signed_request'] + ); + } elseif (!empty($_COOKIE[$this->getSignedRequestCookieName()])) { + $this->signedRequest = $this->parseSignedRequest( + $_COOKIE[$this->getSignedRequestCookieName()] + ); + } + } + return $this->signedRequest; + } + + /** + * Get the UID of the connected user, or 0 + * if the Facebook user is not connected. + * + * @return int the UID if available. + */ + public function getUser() + { + if ($this->user !== null) { + // we've already determined this and cached the value + return $this->user; + } + + return $this->user = $this->getUserFromAvailableData(); + } + + /** + * Determines the connected user by first examining any signed + * requests, then considering an authorization code, and then + * falling back to any persistent store storing the user. + * + * @return int The id of the connected Facebook user, + * or 0 if no such user exists. + */ + protected function getUserFromAvailableData() + { + // if a signed request is supplied, then it solely determines + // who the user is + $signed_request = $this->getSignedRequest(); + if ($signed_request) { + if (array_key_exists('user_id', $signed_request)) { + $user = $signed_request['user_id']; + + if ($user != $this->getPersistentData('user_id')) { + $this->clearAllPersistentData(); + } + + $this->setPersistentData('user_id', $signed_request['user_id']); + return $user; + } + + // if the signed request didn't present a user id, then invalidate + // all entries in any persistent store + $this->clearAllPersistentData(); + return 0; + } + + $user = $this->getPersistentData('user_id', $default = false); + $persisted_access_token = $this->getPersistentData('access_token'); + + // use access_token to fetch user id if we have a user access_token, or if + // the cached access token has changed + $access_token = $this->getAccessToken(); + if ( + $access_token + && $access_token != $this->getApplicationAccessToken() + && !($user + && $persisted_access_token == $access_token) + ) { + $user = $this->getUserFromAccessToken(); + if ($user) { + $this->setPersistentData('user_id', $user); + } else { + $this->clearAllPersistentData(); + } + } + + return $user; + } + + /** + * Get a Login URL for use with redirects. By default, full page redirect is + * assumed. If you are using the generated URL with a window.open() call in + * JavaScript, you can pass in display=popup as part of the $params. + * + * The parameters: + * - redirect_uri: the URL to go to after a successful login + * - scope: comma separated list of requested extended perms + * + * @param array $params Provide custom parameters + * @return string The URL for the login flow + */ + public function getLoginUrl($params = []) + { + $this->establishCSRFTokenState(); + $currentUrl = $this->getCurrentUrl(); + + // if 'scope' is passed as an array, convert to comma separated list + $scopeParams = isset($params['scope']) ? $params['scope'] : null; + if ($scopeParams && is_array($scopeParams)) { + $params['scope'] = implode(',', $scopeParams); + } + + return $this->getUrl( + 'www', + 'dialog/oauth', + array_merge( + [ + 'client_id' => $this->getAppId(), + 'redirect_uri' => $currentUrl, // possibly overwritten + 'state' => $this->state + ], + $params + ) + ); + } + + /** + * Get a Logout URL suitable for use with redirects. + * + * The parameters: + * - next: the URL to go to after a successful logout + * + * @param array $params Provide custom parameters + * @return string The URL for the logout flow + */ + public function getLogoutUrl($params = []) + { + return $this->getUrl( + 'www', + 'logout.php', + array_merge([ + 'next' => $this->getCurrentUrl(), + 'access_token' => $this->getUserAccessToken(), + ], $params) + ); + } + + /** + * Get a login status URL to fetch the status from Facebook. + * + * The parameters: + * - ok_session: the URL to go to if a session is found + * - no_session: the URL to go to if the user is not connected + * - no_user: the URL to go to if the user is not signed into facebook + * + * @param array $params Provide custom parameters + * @return string The URL for the logout flow + */ + public function getLoginStatusUrl($params = []) + { + return $this->getUrl( + 'www', + 'extern/login_status.php', + array_merge([ + 'api_key' => $this->getAppId(), + 'no_session' => $this->getCurrentUrl(), + 'no_user' => $this->getCurrentUrl(), + 'ok_session' => $this->getCurrentUrl(), + 'session_version' => 3, + ], $params) + ); + } + + /** + * Make an API call. + * + * @return mixed The decoded response + */ + public function api(/* polymorphic */) + { + $args = func_get_args(); + if (is_array($args[0])) { + return $this->_restserver($args[0]); + } else { + return call_user_func_array([$this, '_graph'], $args); + } + } + + /** + * Constructs and returns the name of the cookie that + * potentially houses the signed request for the app user. + * The cookie is not set by the BaseFacebook class, but + * it may be set by the JavaScript SDK. + * + * @return string the name of the cookie that would house + * the signed request value. + */ + protected function getSignedRequestCookieName() + { + return 'fbsr_' . $this->getAppId(); + } + + /** + * Constructs and returns the name of the coookie that potentially contain + * metadata. The cookie is not set by the BaseFacebook class, but it may be + * set by the JavaScript SDK. + * + * @return string the name of the cookie that would house metadata. + */ + protected function getMetadataCookieName() + { + return 'fbm_' . $this->getAppId(); + } + + /** + * Get the authorization code from the query parameters, if it exists, + * and otherwise return false to signal no authorization code was + * discoverable. + * + * @return mixed The authorization code, or false if the authorization + * code could not be determined. + */ + protected function getCode() + { + if (isset($_REQUEST['code'])) { + if ( + $this->state !== null + && isset($_REQUEST['state']) + && $this->state === $_REQUEST['state'] + ) { + // CSRF state has done its job, so clear it + $this->state = null; + $this->clearPersistentData('state'); + return $_REQUEST['code']; + } else { + self::errorLog( + 'CSRF state token does not match one provided. ' . strval($this->state) . '!=' . $_REQUEST['state'] + ); + return false; + } + } + + return false; + } + + /** + * Retrieves the UID with the understanding that + * $this->accessToken has already been set and is + * seemingly legitimate. It relies on Facebook's Graph API + * to retrieve user information and then extract + * the user ID. + * + * @return integer Returns the UID of the Facebook user, or 0 + * if the Facebook user could not be determined. + */ + protected function getUserFromAccessToken() + { + try { + $user_info = $this->api('/me'); + return $user_info['id']; + } catch (FacebookApiException $e) { + return 0; + } + } + + /** + * Returns the access token that should be used for logged out + * users when no authorization code is available. + * + * @return string The application access token, useful for gathering + * public information about users and applications. + */ + protected function getApplicationAccessToken() + { + return $this->appId . '|' . $this->appSecret; + } + + /** + * Lays down a CSRF state token for this process. + * + * @return void + */ + protected function establishCSRFTokenState() + { + if ($this->state === null) { + $this->state = md5(uniqid(strval(mt_rand()), true)); + $this->setPersistentData('state', $this->state); + } + } + + /** + * Retrieves an access token for the given authorization code + * (previously generated from www.facebook.com on behalf of + * a specific user). The authorization code is sent to graph.facebook.com + * and a legitimate access token is generated provided the access token + * and the user for which it was generated all match, and the user is + * either logged in to Facebook or has granted an offline access permission. + * + * @param string $code An authorization code. + * @param string|null $redirect_uri + * @return mixed An access token exchanged for the authorization code, or + * false if an access token could not be generated. + */ + protected function getAccessTokenFromCode($code, $redirect_uri = null) + { + if (empty($code)) { + return false; + } + + if ($redirect_uri === null) { + $redirect_uri = $this->getCurrentUrl(); + } + + try { + //self::errorLog('Redirect uri is ' . $redirect_uri); + // need to circumvent json_decode by calling _oauthRequest + // directly, since response isn't JSON format + $access_token_response = + $this->_oauthRequest( + $this->getUrl('graph', '/oauth/access_token'), + $params = [ + 'client_id' => $this->getAppId(), + 'client_secret' => $this->getAppSecret(), + 'redirect_uri' => $redirect_uri, + 'code' => $code + ] + ); + } catch (FacebookApiException $e) { + self::errorLog($e->getMessage()); + // most likely that user very recently revoked authorization. + // In any event, we don't have an access token, so say so. + return false; + } + + if (empty($access_token_response)) { + self::errorLog('No access token response'); + return false; + } + + $response_params = json_decode($access_token_response, true); + if (!isset($response_params['access_token'])) { + self::errorLog('No access token in response. ' . $access_token_response); + return false; + } + + return $response_params['access_token']; + } + + /** + * Invoke the old restserver.php endpoint. + * + * @param array $params Method call object + * + * @return mixed The decoded response object + * @throws FacebookApiException + */ + protected function _restserver($params) + { + // generic application level parameters + $params['api_key'] = $this->getAppId(); + $params['format'] = 'json-strings'; + + $result = $this->_oauthRequest( + $this->getApiUrl($params['method']), + $params + ); + + $result = json_decode($result, true); + + // results are returned, errors are thrown + if (is_array($result) && isset($result['error_code'])) { + $this->throwAPIException($result); + // @codeCoverageIgnoreStart + } + // @codeCoverageIgnoreEnd + + $method = strtolower($params['method']); + if ( + $method === 'auth.expiresession' + || $method === 'auth.revokeauthorization' + ) { + $this->destroySession(); + } + + return $result; + } + + /** + * Return true if this is video post. + * + * @param string $path The path + * @param string $method The http method (default 'GET') + * + * @return boolean true if this is video post + */ + protected function isVideoPost($path, $method = 'GET') + { + if ($method == 'POST' && preg_match("/^(\/)(.+)(\/)(videos)$/", $path)) { + return true; + } + return false; + } + + /** + * Invoke the Graph API. + * + * @param string $path The path (required) + * @param array|string $method The http method (default 'GET') + * @param array $params The query/post data + * + * @return mixed The decoded response object + * @throws FacebookApiException + */ + protected function _graph($path, $method = 'GET', $params = []) + { + if (is_array($method) && empty($params)) { + $params = $method; + $method = 'GET'; + } + + /** @var string $method */ + $params['method'] = $method; // method override as we always do a POST + + if ($this->isVideoPost($path, $method)) { + $domainKey = 'graph_video'; + } else { + $domainKey = 'graph'; + } + + $result = $this->_oauthRequest( + $this->getUrl($domainKey, $path), + $params + ); + + $result = json_decode($result, true); + + // results are returned, errors are thrown + if (is_array($result) && isset($result['error'])) { + $this->throwAPIException($result); + // @codeCoverageIgnoreStart + } + // @codeCoverageIgnoreEnd + + return $result; + } + + /** + * Make a OAuth Request. + * + * @param string $url The path (required) + * @param array $params The query/post data + * + * @return string The decoded response object + * @throws FacebookApiException + */ + protected function _oauthRequest($url, $params) + { + if (!isset($params['access_token'])) { + $params['access_token'] = $this->getAccessToken(); + } + + // json_encode all params values that are not strings + foreach ($params as $key => $value) { + if (!is_string($value)) { + $params[$key] = json_encode($value); + } + } + + return $this->makeRequest($url, $params); + } + + /** + * Makes an HTTP request. This method can be overridden by subclasses if + * developers want to do fancier things or use something other than curl to + * make the request. + * + * @param string $url The URL to make the request to + * @param array $params The parameters to use for the POST body + * @param resource|null $ch Initialized curl handle + * + * @return string The response text + */ + protected function makeRequest($url, $params, $ch = null) + { + if ($ch === null) { + $ch = curl_init(); + } + + $opts = self::$CURL_OPTS; + if ($this->getFileUploadSupport()) { + $opts[CURLOPT_POSTFIELDS] = $params; + } else { + $opts[CURLOPT_POSTFIELDS] = http_build_query($params, null, '&'); + } + $opts[CURLOPT_URL] = $url; + + // disable the 'Expect: 100-continue' behaviour. This causes CURL to wait + // for 2 seconds if the server does not support this header + if (isset($opts[CURLOPT_HTTPHEADER])) { + $existing_headers = $opts[CURLOPT_HTTPHEADER]; + $existing_headers[] = 'Expect:'; + $opts[CURLOPT_HTTPHEADER] = $existing_headers; + } else { + $opts[CURLOPT_HTTPHEADER] = ['Expect:']; + } + + curl_setopt_array($ch, $opts); + $result = curl_exec($ch); + + if (curl_errno($ch) == 60) { + // CURLE_SSL_CACERT + self::errorLog('Invalid or no certificate authority found, using bundled information'); + curl_setopt($ch, CURLOPT_CAINFO, dirname(__FILE__) . '/fb_ca_chain_bundle.crt'); + $result = curl_exec($ch); + } + + // With dual stacked DNS responses, it's possible for a server to + // have IPv6 enabled but not have IPv6 connectivity. If this is + // the case, curl will try IPv4 first and if that fails, then it will + // fall back to IPv6 and the error EHOSTUNREACH is returned by the + // operating system + if ($result === false && empty($opts[CURLOPT_IPRESOLVE])) { + $matches = []; + $regex = '/Failed to connect to ([^:].*): Network is unreachable/'; + if (preg_match($regex, curl_error($ch), $matches)) { + if (strlen(@inet_pton($matches[1])) === 16) { + self::errorLog('Invalid IPv6 configuration on server, ' . + 'Please disable or get native IPv6 on your server.'); + self::$CURL_OPTS[CURLOPT_IPRESOLVE] = CURL_IPRESOLVE_V4; + curl_setopt($ch, CURLOPT_IPRESOLVE, CURL_IPRESOLVE_V4); + $result = curl_exec($ch); + } + } + } + + if ($result === false) { + $e = new FacebookApiException([ + 'error_code' => curl_errno($ch), + 'error' => [ + 'message' => curl_error($ch), + 'type' => 'CurlException', + ], + ]); + curl_close($ch); + throw $e; + } + curl_close($ch); + /** @var string $result */ + return $result; + } + + /** + * Parses a signed_request and validates the signature. + * + * @param string $signed_request A signed token + * @return array|null The payload inside it or null if the sig is wrong + */ + protected function parseSignedRequest($signed_request) + { + list($encoded_sig, $payload) = explode('.', $signed_request, 2); + + // decode the data + $sig = self::base64UrlDecode($encoded_sig); + $data = json_decode(self::base64UrlDecode($payload), true); + + if (strtoupper($data['algorithm']) !== self::SIGNED_REQUEST_ALGORITHM) { + self::errorLog('Unknown algorithm. Expected ' . self::SIGNED_REQUEST_ALGORITHM); + return null; + } + + // check sig + $expected_sig = hash_hmac('sha256', $payload, $this->getAppSecret(), $raw = true); + if ($sig !== $expected_sig) { + self::errorLog('Bad Signed JSON signature!'); + return null; + } + + return $data; + } + + /** + * Makes a signed_request blob using the given data. + * + * @param array $data The data array. + * @return string The signed request. + */ + protected function makeSignedRequest(array $data) + { + $data['algorithm'] = self::SIGNED_REQUEST_ALGORITHM; + $data['issued_at'] = time(); + $json = json_encode($data); + $b64 = self::base64UrlEncode($json); + $raw_sig = hash_hmac('sha256', $b64, $this->getAppSecret(), $raw = true); + $sig = self::base64UrlEncode($raw_sig); + return $sig . ' . ' . $b64; + } + + /** + * Build the URL for api given parameters. + * + * @param string $method String the method name. + * @return string The URL for the given parameters + */ + protected function getApiUrl($method) + { + static $READ_ONLY_CALLS = + [ + 'admin.getallocation' => 1, + 'admin.getappproperties' => 1, + 'admin.getbannedusers' => 1, + 'admin.getlivestreamvialink' => 1, + 'admin.getmetrics' => 1, + 'admin.getrestrictioninfo' => 1, + 'application.getpublicinfo' => 1, + 'auth.getapppublickey' => 1, + 'auth.getsession' => 1, + 'auth.getsignedpublicsessiondata' => 1, + 'comments.get' => 1, + 'connect.getunconnectedfriendscount' => 1, + 'dashboard.getactivity' => 1, + 'dashboard.getcount' => 1, + 'dashboard.getglobalnews' => 1, + 'dashboard.getnews' => 1, + 'dashboard.multigetcount' => 1, + 'dashboard.multigetnews' => 1, + 'data.getcookies' => 1, + 'events.get' => 1, + 'events.getmembers' => 1, + 'fbml.getcustomtags' => 1, + 'feed.getappfriendstories' => 1, + 'feed.getregisteredtemplatebundlebyid' => 1, + 'feed.getregisteredtemplatebundles' => 1, + 'fql.multiquery' => 1, + 'fql.query' => 1, + 'friends.arefriends' => 1, + 'friends.get' => 1, + 'friends.getappusers' => 1, + 'friends.getlists' => 1, + 'friends.getmutualfriends' => 1, + 'gifts.get' => 1, + 'groups.get' => 1, + 'groups.getmembers' => 1, + 'intl.gettranslations' => 1, + 'links.get' => 1, + 'notes.get' => 1, + 'notifications.get' => 1, + 'pages.getinfo' => 1, + 'pages.isadmin' => 1, + 'pages.isappadded' => 1, + 'pages.isfan' => 1, + 'permissions.checkavailableapiaccess' => 1, + 'permissions.checkgrantedapiaccess' => 1, + 'photos.get' => 1, + 'photos.getalbums' => 1, + 'photos.gettags' => 1, + 'profile.getinfo' => 1, + 'profile.getinfooptions' => 1, + 'stream.get' => 1, + 'stream.getcomments' => 1, + 'stream.getfilters' => 1, + 'users.getinfo' => 1, + 'users.getloggedinuser' => 1, + 'users.getstandardinfo' => 1, + 'users.hasapppermission' => 1, + 'users.isappuser' => 1, + 'users.isverified' => 1, + 'video.getuploadlimits' => 1 + ]; + $name = 'api'; + if (isset($READ_ONLY_CALLS[strtolower($method)])) { + $name = 'api_read'; + } elseif (strtolower($method) == 'video.upload') { + $name = 'api_video'; + } + return $this->getUrl($name, 'restserver.php'); + } + + /** + * Build the URL for given domain alias, path and parameters. + * + * @param string $name The name of the domain + * @param string $path Optional path (without a leading slash) + * @param array $params Optional query parameters + * + * @return string The URL for the given parameters + */ + protected function getUrl($name, $path = '', $params = []) + { + $url = self::$DOMAIN_MAP[$name]; + if ($path) { + if ($path[0] === '/') { + $path = substr($path, 1); + } + $url .= $path; + } + if (!empty($params)) { + $url .= '?' . http_build_query($params, null, '&'); + } + + return $url; + } + + /** + * @return string + */ + protected function getHttpHost() + { + if ($this->trustForwarded && isset($_SERVER['HTTP_X_FORWARDED_HOST'])) { + return $_SERVER['HTTP_X_FORWARDED_HOST']; + } + return $_SERVER['HTTP_HOST']; + } + + /** + * @return string + */ + protected function getHttpProtocol() + { + if ($this->trustForwarded && isset($_SERVER['HTTP_X_FORWARDED_PROTO'])) { + if ($_SERVER['HTTP_X_FORWARDED_PROTO'] === 'https') { + return 'https'; + } + return 'http'; + } + /*apache + variants specific way of checking for https*/ + if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS'] === 'on' || $_SERVER['HTTPS'] == 1)) { + return 'https'; + } + /*nginx way of checking for https*/ + if (isset($_SERVER['SERVER_PORT']) && ($_SERVER['SERVER_PORT'] === '443')) { + return 'https'; + } + return 'http'; + } + + /** + * Get the base domain used for the cookie. + * @return string + */ + protected function getBaseDomain() + { + // The base domain is stored in the metadata cookie if not we fallback + // to the current hostname + $metadata = $this->getMetadataCookie(); + if (array_key_exists('base_domain', $metadata) && !empty($metadata['base_domain'])) { + return trim($metadata['base_domain'], '.'); + } + return $this->getHttpHost(); + } + + /** + * Returns the Current URL, stripping it of known FB parameters that should + * not persist. + * + * @return string The current URL + */ + protected function getCurrentUrl() + { + $protocol = $this->getHttpProtocol() . '://'; + $host = $this->getHttpHost(); + $currentUrl = $protocol . $host . $_SERVER['REQUEST_URI']; + $parts = parse_url($currentUrl); + + // use port if non default + $port = + isset($parts['port']) && + (($protocol === 'http://' && $parts['port'] !== 80) || + ($protocol === 'https://' && $parts['port'] !== 443)) + ? ':' . $parts['port'] : ''; + + // rebuild + return $protocol . $parts['host'] . $port . $parts['path']; + } + + /** + * Analyzes the supplied result to see if it was thrown + * because the access token is no longer valid. If that is + * the case, then we destroy the session. + * + * @param array $result A record storing the error message returned + * by a failed API call. + * @return void + */ + protected function throwAPIException($result) + { + $e = new FacebookApiException($result); + switch ($e->getType()) { + // OAuth 2.0 Draft 00 style + case 'OAuthException': + // OAuth 2.0 Draft 10 style + case 'invalid_token': + // REST server errors are just Exceptions + case 'Exception': + $message = $e->getMessage(); + if ( + (strpos($message, 'Error validating access token') !== false) || + (strpos($message, 'Invalid OAuth access token') !== false) || + (strpos($message, 'An active access token must be used') !== false) + ) { + $this->destroySession(); + } + break; + } + + throw $e; + } + + + /** + * Prints to the error log if you aren't in command line mode. + * + * @param string $msg Log message + * @return void + */ + protected static function errorLog($msg) + { + // disable error log if we are running in a CLI environment + // @codeCoverageIgnoreStart + if (php_sapi_name() != 'cli') { + error_log($msg); + } + // @codeCoverageIgnoreEnd + } + + /** + * Base64 encoding that doesn't need to be urlencode()ed. + * Exactly the same as base64_encode except it uses + * - instead of + + * _ instead of / + * No padded = + * + * @param string $input base64UrlEncoded string + * @return string + */ + protected static function base64UrlDecode($input) + { + return base64_decode(strtr($input, '-_', '+/')); + } + + /** + * Base64 encoding that doesn't need to be urlencode()ed. + * Exactly the same as base64_encode except it uses + * - instead of + + * _ instead of / + * + * @param string $input string + * @return string base64Url encoded string + */ + protected static function base64UrlEncode($input) + { + $str = strtr(base64_encode($input), '+/', '-_'); + $str = str_replace('=', '', $str); + return $str; + } + + /** + * Destroy the current session + * @return void + */ + public function destroySession() + { + $this->accessToken = null; + $this->signedRequest = null; + $this->user = null; + $this->clearAllPersistentData(); + + // Javascript sets a cookie that will be used in getSignedRequest that we + // need to clear if we can + $cookie_name = $this->getSignedRequestCookieName(); + if (array_key_exists($cookie_name, $_COOKIE)) { + unset($_COOKIE[$cookie_name]); + if (!headers_sent()) { + $base_domain = $this->getBaseDomain(); + setcookie($cookie_name, '', 1, '/', '.' . $base_domain); + } else { + // @codeCoverageIgnoreStart + self::errorLog( + 'There exists a cookie that we wanted to clear that we couldn\'t ' . + 'clear because headers was already sent. Make sure to do the first ' . + 'API call before outputing anything.' + ); + // @codeCoverageIgnoreEnd + } + } + } + + /** + * Parses the metadata cookie that our Javascript API set + * + * @return array an array mapping key to value + */ + protected function getMetadataCookie() + { + $cookie_name = $this->getMetadataCookieName(); + if (!array_key_exists($cookie_name, $_COOKIE)) { + return []; + } + + // The cookie value can be wrapped in "-characters so remove them + $cookie_value = trim($_COOKIE[$cookie_name], '"'); + + if (empty($cookie_value)) { + return []; + } + + $parts = explode('&', $cookie_value); + $metadata = []; + foreach ($parts as $part) { + $pair = explode('=', $part, 2); + if (!empty($pair[0])) { + $metadata[urldecode($pair[0])] = (count($pair) > 1) ? urldecode($pair[1]) : ''; + } + } + + return $metadata; + } + + /** + * @param string $big + * @param string $small + * @return string|bool + */ + protected static function isAllowedDomain($big, $small) + { + if ($big === $small) { + return true; + } + return self::endsWith($big, '.' . $small); + } + + /** + * @param string $big + * @param string $small + * @return string|bool + */ + protected static function endsWith($big, $small) + { + $len = strlen($small); + if ($len === 0) { + return true; + } + return substr($big, -$len) === $small; + } + + /** + * Each of the following four methods should be overridden in + * a concrete subclass, as they are in the provided Facebook class. + * The Facebook class uses PHP sessions to provide a primitive + * persistent store, but another subclass--one that you implement-- + * might use a database, memcache, or an in-memory cache. + * + * @see Facebook + */ + + /** + * Stores the given ($key, $value) pair, so that future calls to + * getPersistentData($key) return $value. This call may be in another request. + * + * @param string $key + * @param mixed $value + * + * @return void + */ + abstract protected function setPersistentData($key, $value); + + /** + * Get the data for $key, persisted by BaseFacebook::setPersistentData() + * + * @param string $key The key of the data to retrieve + * @param boolean $default The default value to return if $key is not found + * + * @return mixed + */ + abstract protected function getPersistentData($key, $default = false); + + /** + * Clear the data with $key from the persistent storage + * + * @param string $key + * @return void + */ + abstract protected function clearPersistentData($key); + + /** + * Clear all data from the persistent storage + * + * @return void + */ + abstract protected function clearAllPersistentData(); +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/extlibinc/fb_ca_chain_bundle.crt b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/extlibinc/fb_ca_chain_bundle.crt new file mode 100644 index 0000000000000000000000000000000000000000..969239ff6768a1f8a650fbcff0ff6cb96d786fce --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/extlibinc/fb_ca_chain_bundle.crt @@ -0,0 +1,3920 @@ +## +## ca-bundle.crt -- Bundle of CA Root Certificates +## +## Certificate data from Mozilla as of: Thu Oct 18 19:05:59 2012 +## +## This is a bundle of X.509 certificates of public Certificate Authorities +## (CA). These were automatically extracted from Mozilla's root certificates +## file (certdata.txt). This file can be found in the mozilla source tree: +## http://mxr.mozilla.org/mozilla/source/security/nss/lib/ckfw/builtins/certdata.txt?raw=1 +## +## It contains the certificates in PEM format and therefore +## can be directly used with curl / libcurl / php_curl, or with +## an Apache+mod_ssl webserver for SSL client authentication. +## Just configure this file as the SSLCACertificateFile. +## + +# @(#) $RCSfile: certdata.txt,v $ $Revision: 1.86 $ $Date: 2012/10/18 16:26:52 $ + +GTE CyberTrust Global Root +========================== +-----BEGIN CERTIFICATE----- +MIICWjCCAcMCAgGlMA0GCSqGSIb3DQEBBAUAMHUxCzAJBgNVBAYTAlVTMRgwFgYDVQQKEw9HVEUg +Q29ycG9yYXRpb24xJzAlBgNVBAsTHkdURSBDeWJlclRydXN0IFNvbHV0aW9ucywgSW5jLjEjMCEG +A1UEAxMaR1RFIEN5YmVyVHJ1c3QgR2xvYmFsIFJvb3QwHhcNOTgwODEzMDAyOTAwWhcNMTgwODEz +MjM1OTAwWjB1MQswCQYDVQQGEwJVUzEYMBYGA1UEChMPR1RFIENvcnBvcmF0aW9uMScwJQYDVQQL +Ex5HVEUgQ3liZXJUcnVzdCBTb2x1dGlvbnMsIEluYy4xIzAhBgNVBAMTGkdURSBDeWJlclRydXN0 +IEdsb2JhbCBSb290MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCVD6C28FCc6HrHiM3dFw4u +sJTQGz0O9pTAipTHBsiQl8i4ZBp6fmw8U+E3KHNgf7KXUwefU/ltWJTSr41tiGeA5u2ylc9yMcql +HHK6XALnZELn+aks1joNrI1CqiQBOeacPwGFVw1Yh0X404Wqk2kmhXBIgD8SFcd5tB8FLztimQID +AQABMA0GCSqGSIb3DQEBBAUAA4GBAG3rGwnpXtlR22ciYaQqPEh346B8pt5zohQDhT37qw4wxYMW +M4ETCJ57NE7fQMh017l93PR2VX2bY1QY6fDq81yx2YtCHrnAlU66+tXifPVoYb+O7AWXX1uw16OF +NMQkpw0PlZPvy5TYnh+dXIVtx6quTx8itc2VrbqnzPmrC3p/ +-----END CERTIFICATE----- + +Thawte Server CA +================ +-----BEGIN CERTIFICATE----- +MIIDEzCCAnygAwIBAgIBATANBgkqhkiG9w0BAQQFADCBxDELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs +dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcGA1UE +AxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0ZS5j +b20wHhcNOTYwODAxMDAwMDAwWhcNMjAxMjMxMjM1OTU5WjCBxDELMAkGA1UEBhMCWkExFTATBgNV +BAgTDFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29u +c3VsdGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEZMBcG +A1UEAxMQVGhhd3RlIFNlcnZlciBDQTEmMCQGCSqGSIb3DQEJARYXc2VydmVyLWNlcnRzQHRoYXd0 +ZS5jb20wgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBANOkUG7I/1Zr5s9dtuoMaHVHoqrC2oQl +/Kj0R1HahbUgdJSGHg91yekIYfUGbTBuFRkC6VLAYttNmZ7iagxEOM3+vuNkCXDF/rFrKbYvScg7 +1CcEJRCXL+eQbcAoQpnXTEPew/UhbVSfXcNY4cDk2VuwuNy0e982OsK1ZiIS1ocNAgMBAAGjEzAR +MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEEBQADgYEAB/pMaVz7lcxG7oWDTSEwjsrZqG9J +GubaUeNgcGyEYRGhGshIPllDfU+VPaGLtwtimHp1it2ITk6eQNuozDJ0uW8NxuOzRAvZim+aKZuZ +GCg70eNAKJpaPNW15yAbi8qkq43pUdniTCxZqdq5snUb9kLy78fyGPmJvKP/iiMucEc= +-----END CERTIFICATE----- + +Thawte Premium Server CA +======================== +-----BEGIN CERTIFICATE----- +MIIDJzCCApCgAwIBAgIBATANBgkqhkiG9w0BAQQFADCBzjELMAkGA1UEBhMCWkExFTATBgNVBAgT +DFdlc3Rlcm4gQ2FwZTESMBAGA1UEBxMJQ2FwZSBUb3duMR0wGwYDVQQKExRUaGF3dGUgQ29uc3Vs +dGluZyBjYzEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjEhMB8GA1UE +AxMYVGhhd3RlIFByZW1pdW0gU2VydmVyIENBMSgwJgYJKoZIhvcNAQkBFhlwcmVtaXVtLXNlcnZl +ckB0aGF3dGUuY29tMB4XDTk2MDgwMTAwMDAwMFoXDTIwMTIzMTIzNTk1OVowgc4xCzAJBgNVBAYT +AlpBMRUwEwYDVQQIEwxXZXN0ZXJuIENhcGUxEjAQBgNVBAcTCUNhcGUgVG93bjEdMBsGA1UEChMU +VGhhd3RlIENvbnN1bHRpbmcgY2MxKDAmBgNVBAsTH0NlcnRpZmljYXRpb24gU2VydmljZXMgRGl2 +aXNpb24xITAfBgNVBAMTGFRoYXd0ZSBQcmVtaXVtIFNlcnZlciBDQTEoMCYGCSqGSIb3DQEJARYZ +cHJlbWl1bS1zZXJ2ZXJAdGhhd3RlLmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA0jY2 +aovXwlue2oFBYo847kkEVdbQ7xwblRZH7xhINTpS9CtqBo87L+pW46+GjZ4X9560ZXUCTe/LCaIh +Udib0GfQug2SBhRz1JPLlyoAnFxODLz6FVL88kRu2hFKbgifLy3j+ao6hnO2RlNYyIkFvYMRuHM/ +qgeN9EJN50CdHDcCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQQFAAOBgQAm +SCwWwlj66BZ0DKqqX1Q/8tfJeGBeXm43YyJ3Nn6yF8Q0ufUIhfzJATj/Tb7yFkJD57taRvvBxhEf +8UqwKEbJw8RCfbz6q1lu1bdRiBHjpIUZa4JMpAwSremkrj/xw0llmozFyD4lt5SZu5IycQfwhl7t +UCemDaYj+bvLpgcUQg== +-----END CERTIFICATE----- + +Equifax Secure CA +================= +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIENd70zzANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEQMA4GA1UE +ChMHRXF1aWZheDEtMCsGA1UECxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5 +MB4XDTk4MDgyMjE2NDE1MVoXDTE4MDgyMjE2NDE1MVowTjELMAkGA1UEBhMCVVMxEDAOBgNVBAoT +B0VxdWlmYXgxLTArBgNVBAsTJEVxdWlmYXggU2VjdXJlIENlcnRpZmljYXRlIEF1dGhvcml0eTCB +nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAwV2xWGcIYu6gmi0fCG2RFGiYCh7+2gRvE4RiIcPR +fM6fBeC4AfBONOziipUEZKzxa1NfBbPLZ4C/QgKO/t0BCezhABRP/PvwDN1Dulsr4R+AcJkVV5MW +8Q+XarfCaCMczE1ZMKxRHjuvK9buY0V7xdlfUNLjUA86iOe/FP3gx7kCAwEAAaOCAQkwggEFMHAG +A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEQMA4GA1UEChMHRXF1aWZheDEtMCsGA1UE +CxMkRXF1aWZheCBTZWN1cmUgQ2VydGlmaWNhdGUgQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMBoG +A1UdEAQTMBGBDzIwMTgwODIyMTY0MTUxWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUSOZo+SvS +spXXR9gjIBBPM5iQn9QwHQYDVR0OBBYEFEjmaPkr0rKV10fYIyAQTzOYkJ/UMAwGA1UdEwQFMAMB +Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAFjOKer89961 +zgK5F7WF0bnj4JXMJTENAKaSbn+2kmOeUJXRmm/kEd5jhW6Y7qj/WsjTVbJmcVfewCHrPSqnI0kB +BIZCe/zuf6IWUrVnZ9NA2zsmWLIodz2uFHdh1voqZiegDfqnc1zqcPGUIWVEX/r87yloqaKHee95 +70+sB3c4 +-----END CERTIFICATE----- + +Digital Signature Trust Co. Global CA 1 +======================================= +-----BEGIN CERTIFICATE----- +MIIDKTCCApKgAwIBAgIENnAVljANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE +ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMTAeFw05ODEy +MTAxODEwMjNaFw0xODEyMTAxODQwMjNaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs +IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUxMIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQCgbIGpzzQeJN3+hijM3oMv+V7UQtLodGBmE5gGHKlREmlvMVW5SXIACH7TpWJE +NySZj9mDSI+ZbZUTu0M7LklOiDfBu1h//uG9+LthzfNHwJmm8fOR6Hh8AMthyUQncWlVSn5JTe2i +o74CTADKAqjuAQIxZA9SLRN0dja1erQtcQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo +BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 +dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTExDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw +IoAPMTk5ODEyMTAxODEwMjNagQ8yMDE4MTIxMDE4MTAyM1owCwYDVR0PBAQDAgEGMB8GA1UdIwQY +MBaAFGp5fpFpRhgTCgJ3pVlbYJglDqL4MB0GA1UdDgQWBBRqeX6RaUYYEwoCd6VZW2CYJQ6i+DAM +BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB +ACIS2Hod3IEGtgllsofIH160L+nEHvI8wbsEkBFKg05+k7lNQseSJqBcNJo4cvj9axY+IO6CizEq +kzaFI4iKPANo08kJD038bKTaKHKTDomAsH3+gG9lbRgzl4vCa4nuYD3Im+9/KzJic5PLPON74nZ4 +RbyhkwS7hp86W0N6w4pl +-----END CERTIFICATE----- + +Digital Signature Trust Co. Global CA 3 +======================================= +-----BEGIN CERTIFICATE----- +MIIDKTCCApKgAwIBAgIENm7TzjANBgkqhkiG9w0BAQUFADBGMQswCQYDVQQGEwJVUzEkMCIGA1UE +ChMbRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QgQ28uMREwDwYDVQQLEwhEU1RDQSBFMjAeFw05ODEy +MDkxOTE3MjZaFw0xODEyMDkxOTQ3MjZaMEYxCzAJBgNVBAYTAlVTMSQwIgYDVQQKExtEaWdpdGFs +IFNpZ25hdHVyZSBUcnVzdCBDby4xETAPBgNVBAsTCERTVENBIEUyMIGdMA0GCSqGSIb3DQEBAQUA +A4GLADCBhwKBgQC/k48Xku8zExjrEH9OFr//Bo8qhbxe+SSmJIi2A7fBw18DW9Fvrn5C6mYjuGOD +VvsoLeE4i7TuqAHhzhy2iCoiRoX7n6dwqUcUP87eZfCocfdPJmyMvMa1795JJ/9IKn3oTQPMx7JS +xhcxEzu1TdvIxPbDDyQq2gyd55FbgM2UnQIBA6OCASQwggEgMBEGCWCGSAGG+EIBAQQEAwIABzBo +BgNVHR8EYTBfMF2gW6BZpFcwVTELMAkGA1UEBhMCVVMxJDAiBgNVBAoTG0RpZ2l0YWwgU2lnbmF0 +dXJlIFRydXN0IENvLjERMA8GA1UECxMIRFNUQ0EgRTIxDTALBgNVBAMTBENSTDEwKwYDVR0QBCQw +IoAPMTk5ODEyMDkxOTE3MjZagQ8yMDE4MTIwOTE5MTcyNlowCwYDVR0PBAQDAgEGMB8GA1UdIwQY +MBaAFB6CTShlgDzJQW6sNS5ay97u+DlbMB0GA1UdDgQWBBQegk0oZYA8yUFurDUuWsve7vg5WzAM +BgNVHRMEBTADAQH/MBkGCSqGSIb2fQdBAAQMMAobBFY0LjADAgSQMA0GCSqGSIb3DQEBBQUAA4GB +AEeNg61i8tuwnkUiBbmi1gMOOHLnnvx75pO2mqWilMg0HZHRxdf0CiUPPXiBng+xZ8SQTGPdXqfi +up/1902lMXucKS1M/mQ+7LZT/uqb7YLbdHVLB3luHtgZg3Pe9T7Qtd7nS2h9Qy4qIOF+oHhEngj1 +mPnHfxsb1gYgAlihw6ID +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEHC65B0Q2Sk0tjjKewPMur8wDQYJKoZIhvcNAQECBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMTIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 +f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol +hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBAgUAA4GBALtMEivPLCYA +TxQT3ab7/AoRhIzzKBxnki98tsX63/Dolbwdj2wsqFHMc9ikwFPwTtYmwHYBV4GSXiHx0bH/59Ah +WM1pF+NEHJwZRDmJXNycAA9WjQKZ7aKQRUzkuxCkPfAyAw7xzvjoyVGM5mKf5p/AfbdynMk2Omuf +Tqj/ZA1k +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEEzH6qqYPnHTkxD4PTqJkZIwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMSBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQCq0Lq+Fi24g9TK0g+8djHKlNgd +k4xWArzZbxpvUjZudVYKVdPfQ4chEWWKfo+9Id5rMj8bhDSVBZ1BNeuS65bdqlk/AVNtmU/t5eIq +WpDBucSmFc/IReumXY6cPvBkJHalzasab7bYe1FhbqZ/h8jit+U03EGI6glAvnOSPWvndQIDAQAB +MA0GCSqGSIb3DQEBBQUAA4GBAKlPww3HZ74sy9mozS11534Vnjty637rXC0Jh9ZrbWB85a7FkCMM +XErQr7Fd88e2CtvgFZMN3QO8x3aKtd1Pw5sTdbgBwObJW2uluIncrKTdcu1OofdPvAbT6shkdHvC +lUGcZXNY8ZCaPGqxmMnEh7zPRW1F4m4iP/68DzFc6PLZ +-----END CERTIFICATE----- + +Verisign Class 2 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAzCCAmwCEQC5L2DMiJ+hekYJuFtwbIqvMA0GCSqGSIb3DQEBBQUAMIHBMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h +cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp +Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1 +c3QgTmV0d29yazAeFw05ODA1MTgwMDAwMDBaFw0yODA4MDEyMzU5NTlaMIHBMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xPDA6BgNVBAsTM0NsYXNzIDIgUHVibGljIFByaW1h +cnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjE6MDgGA1UECxMxKGMpIDE5OTggVmVyaVNp +Z24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1 +c3QgTmV0d29yazCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAp4gBIXQs5xoD8JjhlzwPIQjx +nNuX6Zr8wgQGE75fUsjMHiwSViy4AWkszJkfrbCWrnkE8hM5wXuYuggs6MKEEyyqaekJ9MepAqRC +wiNPStjwDqL7MWzJ5m+ZJwf15vRMeJ5t60aG+rmGyVTyssSv1EYcWskVMP8NbPUtDm3Of3cCAwEA +ATANBgkqhkiG9w0BAQUFAAOBgQByLvl/0fFx+8Se9sVeUYpAmLho+Jscg9jinb3/7aHmZuovCfTK +1+qlK5X2JGCGTUQug6XELaDTrnhpb3LabK4I8GOSN+a7xDAXrXfMSTWqz9iP0b63GJZHc2pUIjRk +LbYWm1lbtFFZOrMLFPQS32eg9K0yZF6xRnInjBJ7xUS0rg== +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G2 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDAjCCAmsCEH3Z/gfPqB63EHln+6eJNMYwDQYJKoZIhvcNAQEFBQAwgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMB4XDTk4MDUxODAwMDAwMFoXDTI4MDgwMTIzNTk1OVowgcExCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjE8MDoGA1UECxMzQ2xhc3MgMyBQdWJsaWMgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMTowOAYDVQQLEzEoYykgMTk5OCBWZXJpU2ln +biwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVzZSBvbmx5MR8wHQYDVQQLExZWZXJpU2lnbiBUcnVz +dCBOZXR3b3JrMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDMXtERXVxp0KvTuWpMmR9ZmDCO +FoUgRm1HP9SFIIThbbP4pO0M8RcPO/mn+SXXwc+EY/J8Y8+iR/LGWzOOZEAEaMGAuWQcRXfH2G71 +lSk8UOg013gfqLptQ5GVj0VXXn7F+8qkBOvqlzdUMG+7AUcyM83cV5tkaWH4mx0ciU9cZwIDAQAB +MA0GCSqGSIb3DQEBBQUAA4GBAFFNzb5cy5gZnBWyATl4Lk0PZ3BwmcYQWpSkU01UbSuvDV1Ai2TT +1+7eVmGSX6bEHRBhNtMsJzzoKQm5EWR0zLVznxxIqbxhAe7iF6YM40AIOw7n60RzKprxaZLvcRTD +Oaxxp5EJb+RxBrO6WVcmeQD2+A2iMzAo1KpYoJ2daZH9 +-----END CERTIFICATE----- + +GlobalSign Root CA +================== +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx +GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds +b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD +VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc +THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb +Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP +c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX +gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF +AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj +Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG +j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH +hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC +X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +GlobalSign Root CA - R2 +======================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 +ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp +s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN +S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL +TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C +ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i +YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN +BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp +9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu +01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 +9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +ValiCert Class 1 VA +=================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDEgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNTIy +MjM0OFoXDTE5MDYyNTIyMjM0OFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDEg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDYWYJ6ibiWuqYvaG9YLqdUHAZu9OqNSLwxlBfw8068srg1knaw0KWlAdcAAxIi +GQj4/xEjm84H9b9pGib+TunRf50sQB1ZaG6m+FiwnRqP0z/x3BkGgagO4DrdyFNFCQbmD3DD+kCm +DuJWBQ8YTfwggtFzVXSNdnKgHZ0dwN0/cQIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFBoPUn0LBwG +lN+VYH+Wexf+T3GtZMjdd9LvWVXoP+iOBSoh8gfStadS/pyxtuJbdxdA6nLWI8sogTLDAHkY7FkX +icnGah5xyf23dKUlRWnFSKsZ4UWKJWsZ7uW7EvV/96aNUcPwnXS3qT6gpf+2SQMT2iLM7XGCK5nP +Orf1LXLI +-----END CERTIFICATE----- + +ValiCert Class 2 VA +=================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDIgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw +MTk1NFoXDTE5MDYyNjAwMTk1NFowgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDIg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDOOnHK5avIWZJV16vYdA757tn2VUdZZUcOBVXc65g2PFxTXdMwzzjsvUGJ7SVC +CSRrCl6zfN1SLUzm1NZ9WlmpZdRJEy0kTRxQb7XBhVQ7/nHk01xC+YDgkRoKWzk2Z/M/VXwbP7Rf +ZHM047QSv4dk+NoS/zcnwbNDu+97bi5p9wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBADt/UG9vUJSZ +SWI4OB9L+KXIPqeCgfYrx+jFzug6EILLGACOTb2oWH+heQC1u+mNr0HZDzTuIYEZoDJJKPTEjlbV +UjP9UNV+mWwD5MlM/Mtsq2azSiGM5bUMMj4QssxsodyamEwCW/POuZ6lcg5Ktz885hZo+L7tdEy8 +W9ViH0Pd +-----END CERTIFICATE----- + +RSA Root Certificate 1 +====================== +-----BEGIN CERTIFICATE----- +MIIC5zCCAlACAQEwDQYJKoZIhvcNAQEFBQAwgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRp +b24gTmV0d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENs +YXNzIDMgUG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZh +bGljZXJ0LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMB4XDTk5MDYyNjAw +MjIzM1oXDTE5MDYyNjAwMjIzM1owgbsxJDAiBgNVBAcTG1ZhbGlDZXJ0IFZhbGlkYXRpb24gTmV0 +d29yazEXMBUGA1UEChMOVmFsaUNlcnQsIEluYy4xNTAzBgNVBAsTLFZhbGlDZXJ0IENsYXNzIDMg +UG9saWN5IFZhbGlkYXRpb24gQXV0aG9yaXR5MSEwHwYDVQQDExhodHRwOi8vd3d3LnZhbGljZXJ0 +LmNvbS8xIDAeBgkqhkiG9w0BCQEWEWluZm9AdmFsaWNlcnQuY29tMIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDjmFGWHOjVsQaBalfDcnWTq8+epvzzFlLWLU2fNUSoLgRNB0mKOCn1dzfnt6td +3zZxFJmP3MKS8edgkpfs2Ejcv8ECIMYkpChMMFp2bbFc893enhBxoYjHW5tBbcqwuI4V7q0zK89H +BFx1cQqYJJgpp0lZpd34t0NiYfPT4tBVPwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFa7AliEZwgs +3x/be0kz9dNnnfS0ChCzycUs4pJqcXgn8nCDQtM+z6lU9PHYkhaM0QTLS6vJn0WuPIqpsHEzXcjF +V9+vqDWzf4mH6eglkrh/hXqu1rweN1gqZ8mRzyqBPu3GOd/APhmcGcwTTYJBtYze4D1gCCAPRX5r +on+jjBXu +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCLW3VWhFSFCwDPrzhIzrGkMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDEgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAN2E1Lm0+afY8wR4nN493GwTFtl63SRRZsDHJlkNrAYIwpTRMx/wgzUfbhvI3qpuFU5UJ+/E +bRrsC+MO8ESlV8dAWB6jRx9x7GD2bZTIGDnt/kIYVt/kTEkQeE4BdjVjEjbdZrwBBDajVWjVojYJ +rKshJlQGrT/KFOCsyq0GHZXi+J3x4GD/wn91K0zM2v6HmSHquv4+VNfSWXjbPG7PoBMAGrgnoeS+ +Z5bKoMWznN3JdZ7rMJpfo83ZrngZPyPpXNspva1VyBtUjGP26KbqxzcSXKMpHgLZ2x87tNcPVkeB +FQRKr4Mn0cVYiMHd9qqnoxjaaKptEVHhv2Vrn5Z20T0CAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +q2aN17O6x5q25lXQBfGfMY1aqtmqRiYPce2lrVNWYgFHKkTp/j90CxObufRNG7LRX7K20ohcs5/N +y9Sn2WCVhDr4wTcdYcrnsMXlkdpUpqwxga6X3s0IrLjAl4B/bnKk52kTlWUfxJM8/XmPBNQ+T+r3 +ns7NZ3xPZQL/kYVUc8f/NveGLezQXk//EZ9yBta4GvFMDSZl4kSAHsef493oCtrspSCAaWihT37h +a88HQfqDjrw43bAuEbFrskLMmrz5SCJ5ShkPshw+IHTZasO+8ih4E1Z5T21Q6huwtVexN2ZYI/Pc +D98Kh8TvhgXVOBRgmaNL3gaWcSzy27YfpO8/7g== +-----END CERTIFICATE----- + +Verisign Class 2 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGTCCAwECEGFwy0mMX5hFKeewptlQW3owDQYJKoZIhvcNAQEFBQAwgcoxCzAJBgNVBAYTAlVT +MRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1c3QgTmV0d29y +azE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ug +b25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSAtIEczMB4XDTk5MTAwMTAwMDAwMFoXDTM2MDcxNjIzNTk1OVowgcoxCzAJ +BgNVBAYTAlVTMRcwFQYDVQQKEw5WZXJpU2lnbiwgSW5jLjEfMB0GA1UECxMWVmVyaVNpZ24gVHJ1 +c3QgTmV0d29yazE6MDgGA1UECxMxKGMpIDE5OTkgVmVyaVNpZ24sIEluYy4gLSBGb3IgYXV0aG9y +aXplZCB1c2Ugb25seTFFMEMGA1UEAxM8VmVyaVNpZ24gQ2xhc3MgMiBQdWJsaWMgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEArwoNwtUs22e5LeWUJ92lvuCwTY+zYVY81nzD9M0+hsuiiOLh2KRpxbXiv8GmR1BeRjmL1Za6 +tW8UvxDOJxOeBUebMXoT2B/Z0wI3i60sR/COgQanDTAM6/c8DyAd3HJG7qUCyFvDyVZpTMUYwZF7 +C9UTAJu878NIPkZgIIUq1ZC2zYugzDLdt/1AVbJQHFauzI13TccgTacxdu9okoqQHgiBVrKtaaNS +0MscxCM9H5n+TOgWY47GCI72MfbS+uV23bUckqNJzc0BzWjNqWm6o+sdDZykIKbBoMXRRkwXbdKs +Zj+WjOCE1Db/IlnF+RFgqF8EffIa9iVCYQ/ESrg+iQIDAQABMA0GCSqGSIb3DQEBBQUAA4IBAQA0 +JhU8wI1NQ0kdvekhktdmnLfexbjQ5F1fdiLAJvmEOjr5jLX77GDx6M4EsMjdpwOPMPOY36TmpDHf +0xwLRtxyID+u7gU8pDM/CzmscHhzS5kr3zDCVLCoO1Wh/hYozUK9dG6A2ydEp85EXdQbkJgNHkKU +sQAsBNB0owIFImNjzYO1+8FtYmtpdf1dcEG59b98377BMnMiIYtYgXsVkXq642RIsH/7NiXaldDx +JBQX3RiAa0YjOVT1jmIJBB2UkKab5iXiQkWquJCtvgiPqQtCGJTPcjnhsUPgKM+351psE2tJs//j +GHyJizNdrDPXp/naOlXJWBD5qu9ats9LS98q +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 +EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc +cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw +EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj +055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f +j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 +xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa +t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +Verisign Class 4 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQDsoKeLbnVqAc/EfMwvlF7XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDQgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAK3LpRFpxlmr8Y+1GQ9Wzsy1HyDkniYlS+BzZYlZ3tCD5PUPtbut8XzoIfzk6AzufEUiGXaS +tBO3IFsJ+mGuqPKljYXCKtbeZjbSmwL0qJJgfJxptI8kHtCGUvYynEFYHiK9zUVilQhu0GbdU6LM +8BDcVHOLBKFGMzNcF0C5nk3T875Vg+ixiY5afJqWIpA7iCXy0lOIAgwLePLmNxdLMEYH5IBtptiW +Lugs+BGzOA1mppvqySNb247i8xOOGlktqgLw7KSHZtzBP/XYufTsgsbSPZUd5cBPhMnZo0QoBmrX +Razwa2rvTl/4EYIeOGM0ZlDUPpNz+jDDZq3/ky2X7wMCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +j/ola09b5KROJ1WrIhVZPMq1CtRK26vdoV9TxaBXOcLORyu+OshWv8LZJxA6sQU8wHcxuzrTBXtt +mhwwjIDLk5Mqg6sFUYICABFna/OIYUdfA5PVWw3g8dShMjWFsjrbsIKr0csKvE+MW8VLADsfKoKm +fjaF3H48ZwC15DtS4KjrXRX5xm3wrR0OhbepmnMUWluPQSjA1egtTaRezarZ7c7c2NU8Qh0XwRJd +RTjDOPP8hS6DRkiy1yBfkjaP53kPmF6Z6PDQpLv1U70qzlmwr25/bLvSHgCwIe34QWKCudiyxLtG +UPMxxY8BqHTr9Xgn2uf3ZkPznoM+IKrDNWCRzg== +-----END CERTIFICATE----- + +Entrust.net Secure Server CA +============================ +-----BEGIN CERTIFICATE----- +MIIE2DCCBEGgAwIBAgIEN0rSQzANBgkqhkiG9w0BAQUFADCBwzELMAkGA1UEBhMCVVMxFDASBgNV +BAoTC0VudHJ1c3QubmV0MTswOQYDVQQLEzJ3d3cuZW50cnVzdC5uZXQvQ1BTIGluY29ycC4gYnkg +cmVmLiAobGltaXRzIGxpYWIuKTElMCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRl +ZDE6MDgGA1UEAxMxRW50cnVzdC5uZXQgU2VjdXJlIFNlcnZlciBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eTAeFw05OTA1MjUxNjA5NDBaFw0xOTA1MjUxNjM5NDBaMIHDMQswCQYDVQQGEwJVUzEUMBIG +A1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5ldC9DUFMgaW5jb3JwLiBi +eSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBFbnRydXN0Lm5ldCBMaW1p +dGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIGdMA0GCSqGSIb3DQEBAQUAA4GLADCBhwKBgQDNKIM0VBuJ8w+vN5Ex/68xYMmo6LIQ +aO2f55M28Qpku0f1BBc/I0dNxScZgSYMVHINiC3ZH5oSn7yzcdOAGT9HZnuMNSjSuQrfJNqc1lB5 +gXpa0zf3wkrYKZImZNHkmGw6AIr1NJtl+O3jEP/9uElY3KDegjlrgbEWGWG5VLbmQwIBA6OCAdcw +ggHTMBEGCWCGSAGG+EIBAQQEAwIABzCCARkGA1UdHwSCARAwggEMMIHeoIHboIHYpIHVMIHSMQsw +CQYDVQQGEwJVUzEUMBIGA1UEChMLRW50cnVzdC5uZXQxOzA5BgNVBAsTMnd3dy5lbnRydXN0Lm5l +dC9DUFMgaW5jb3JwLiBieSByZWYuIChsaW1pdHMgbGlhYi4pMSUwIwYDVQQLExwoYykgMTk5OSBF +bnRydXN0Lm5ldCBMaW1pdGVkMTowOAYDVQQDEzFFbnRydXN0Lm5ldCBTZWN1cmUgU2VydmVyIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5MQ0wCwYDVQQDEwRDUkwxMCmgJ6AlhiNodHRwOi8vd3d3LmVu +dHJ1c3QubmV0L0NSTC9uZXQxLmNybDArBgNVHRAEJDAigA8xOTk5MDUyNTE2MDk0MFqBDzIwMTkw +NTI1MTYwOTQwWjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAU8BdiE1U9s/8KAGv7UISX8+1i0Bow +HQYDVR0OBBYEFPAXYhNVPbP/CgBr+1CEl/PtYtAaMAwGA1UdEwQFMAMBAf8wGQYJKoZIhvZ9B0EA +BAwwChsEVjQuMAMCBJAwDQYJKoZIhvcNAQEFBQADgYEAkNwwAvpkdMKnCqV8IY00F6j7Rw7/JXyN +Ewr75Ji174z4xRAN95K+8cPV1ZVqBLssziY2ZcgxxufuP+NXdYR6Ee9GTxj005i7qIcyunL2POI9 +n9cd2cNgQ4xYDiKWL2KjLB+6rQXvqzJ4h6BUcxm1XAX5Uj5tLUUL9wqT6u0G+bI= +-----END CERTIFICATE----- + +Entrust.net Premium 2048 Secure Server CA +========================================= +-----BEGIN CERTIFICATE----- +MIIEXDCCA0SgAwIBAgIEOGO5ZjANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u +ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp +bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV +BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx +NzUwNTFaFw0xOTEyMjQxODIwNTFaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 +d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl +MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr +hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW +nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi +VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo3QwcjARBglghkgBhvhC +AQEEBAMCAAcwHwYDVR0jBBgwFoAUVeSB0RGAvtiJuQijMfmhJAkWuXAwHQYDVR0OBBYEFFXkgdER +gL7YibkIozH5oSQJFrlwMB0GCSqGSIb2fQdBAAQQMA4bCFY1LjA6NC4wAwIEkDANBgkqhkiG9w0B +AQUFAAOCAQEAWUesIYSKF8mciVMeuoCFGsY8Tj6xnLZ8xpJdGGQC49MGCBFhfGPjK50xA3B20qMo +oPS7mmNz7W3lKtvtFKkrxjYR0CvrB4ul2p5cGZ1WEvVUKcgF7bISKo30Axv/55IQh7A6tcOdBTcS +o8f0FbnVpDkWm1M6I5HxqIKiaohowXkCIryqptau37AUX7iH0N18f3v/rxzP5tsHrV7bhZ3QKw0z +2wTR5klAEyt2+z7pnIkPFc4YsIV4IU9rTw76NmfNB/L/CNDi3tm/Kq+4h4YhPATKt5Rof8886ZjX +OP/swNlQ8C5LWK5Gb9Auw2DaclVyvUxFnmG6v4SBkgPR0ml8xQ== +-----END CERTIFICATE----- + +Baltimore CyberTrust Root +========================= +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE +ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li +ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC +SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs +dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME +uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB +UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C +G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 +XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr +l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI +VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh +cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 +hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa +Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H +RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +Equifax Secure Global eBusiness CA +================================== +-----BEGIN CERTIFICATE----- +MIICkDCCAfmgAwIBAgIBATANBgkqhkiG9w0BAQQFADBaMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +RXF1aWZheCBTZWN1cmUgSW5jLjEtMCsGA1UEAxMkRXF1aWZheCBTZWN1cmUgR2xvYmFsIGVCdXNp +bmVzcyBDQS0xMB4XDTk5MDYyMTA0MDAwMFoXDTIwMDYyMTA0MDAwMFowWjELMAkGA1UEBhMCVVMx +HDAaBgNVBAoTE0VxdWlmYXggU2VjdXJlIEluYy4xLTArBgNVBAMTJEVxdWlmYXggU2VjdXJlIEds +b2JhbCBlQnVzaW5lc3MgQ0EtMTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAuucXkAJlsTRV +PEnCUdXfp9E3j9HngXNBUmCbnaEXJnitx7HoJpQytd4zjTov2/KaelpzmKNc6fuKcxtc58O/gGzN +qfTWK8D3+ZmqY6KxRwIP1ORROhI8bIpaVIRw28HFkM9yRcuoWcDNM50/o5brhTMhHD4ePmBudpxn +hcXIw2ECAwEAAaNmMGQwEQYJYIZIAYb4QgEBBAQDAgAHMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0j +BBgwFoAUvqigdHJQa0S3ySPY+6j/s1draGwwHQYDVR0OBBYEFL6ooHRyUGtEt8kj2Puo/7NXa2hs +MA0GCSqGSIb3DQEBBAUAA4GBADDiAVGqx+pf2rnQZQ8w1j7aDRRJbpGTJxQx78T3LUX47Me/okEN +I7SS+RkAZ70Br83gcfxaz2TE4JaY0KNA4gGK7ycH8WUBikQtBmV1UsCGECAhX2xrD2yuCRyv8qIY +NMR1pHMc8Y3c7635s3a0kr/clRAevsvIO1qEYBlWlKlV +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 1 +============================= +-----BEGIN CERTIFICATE----- +MIICgjCCAeugAwIBAgIBBDANBgkqhkiG9w0BAQQFADBTMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +RXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNzIENB +LTEwHhcNOTkwNjIxMDQwMDAwWhcNMjAwNjIxMDQwMDAwWjBTMQswCQYDVQQGEwJVUzEcMBoGA1UE +ChMTRXF1aWZheCBTZWN1cmUgSW5jLjEmMCQGA1UEAxMdRXF1aWZheCBTZWN1cmUgZUJ1c2luZXNz +IENBLTEwgZ8wDQYJKoZIhvcNAQEBBQADgY0AMIGJAoGBAM4vGbwXt3fek6lfWg0XTzQaDJj0ItlZ +1MRoRvC0NcWFAyDGr0WlIVFFQesWWDYyb+JQYmT5/VGcqiTZ9J2DKocKIdMSODRsjQBuWqDZQu4a +IZX5UkxVWsUPOE9G+m34LjXWHXzr4vCwdYDIqROsvojvOm6rXyo4YgKwEnv+j6YDAgMBAAGjZjBk +MBEGCWCGSAGG+EIBAQQEAwIABzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFEp4MlIR21kW +Nl7fwRQ2QGpHfEyhMB0GA1UdDgQWBBRKeDJSEdtZFjZe38EUNkBqR3xMoTANBgkqhkiG9w0BAQQF +AAOBgQB1W6ibAxHm6VZMzfmpTMANmvPMZWnmJXbMWbfWVMMdzZmsGd20hdXgPfxiIKeES1hl8eL5 +lSE/9dR+WB5Hh1Q+WKG1tfgq73HnvMP2sUlG4tega+VWeponmHxGYhTnyfxuAxJ5gDgdSIKN/Bf+ +KpYrtWKmpj29f5JZzVoqgrI3eQ== +-----END CERTIFICATE----- + +Equifax Secure eBusiness CA 2 +============================= +-----BEGIN CERTIFICATE----- +MIIDIDCCAomgAwIBAgIEN3DPtTANBgkqhkiG9w0BAQUFADBOMQswCQYDVQQGEwJVUzEXMBUGA1UE +ChMORXF1aWZheCBTZWN1cmUxJjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0y +MB4XDTk5MDYyMzEyMTQ0NVoXDTE5MDYyMzEyMTQ0NVowTjELMAkGA1UEBhMCVVMxFzAVBgNVBAoT +DkVxdWlmYXggU2VjdXJlMSYwJAYDVQQLEx1FcXVpZmF4IFNlY3VyZSBlQnVzaW5lc3MgQ0EtMjCB +nzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEA5Dk5kx5SBhsoNviyoynF7Y6yEb3+6+e0dMKP/wXn +2Z0GvxLIPw7y1tEkshHe0XMJitSxLJgJDR5QRrKDpkWNYmi7hRsgcDKqQM2mll/EcTc/BPO3QSQ5 +BxoeLmFYoBIL5aXfxavqN3HMHMg3OrmXUqesxWoklE6ce8/AatbfIb0CAwEAAaOCAQkwggEFMHAG +A1UdHwRpMGcwZaBjoGGkXzBdMQswCQYDVQQGEwJVUzEXMBUGA1UEChMORXF1aWZheCBTZWN1cmUx +JjAkBgNVBAsTHUVxdWlmYXggU2VjdXJlIGVCdXNpbmVzcyBDQS0yMQ0wCwYDVQQDEwRDUkwxMBoG +A1UdEAQTMBGBDzIwMTkwNjIzMTIxNDQ1WjALBgNVHQ8EBAMCAQYwHwYDVR0jBBgwFoAUUJ4L6q9e +uSBIplBqy/3YIHqngnYwHQYDVR0OBBYEFFCeC+qvXrkgSKZQasv92CB6p4J2MAwGA1UdEwQFMAMB +Af8wGgYJKoZIhvZ9B0EABA0wCxsFVjMuMGMDAgbAMA0GCSqGSIb3DQEBBQUAA4GBAAyGgq3oThr1 +jokn4jVYPSm0B482UJW/bsGe68SQsoWou7dC4A8HOd/7npCy0cE+U58DRLB+S/Rv5Hwf5+Kx5Lia +78O9zt4LMjTZ3ijtM2vE1Nc9ElirfQkty3D1E4qUoSek1nDFbZS1yX2doNLGCEnZZpum0/QL3MUm +V+GRMOrN +-----END CERTIFICATE----- + +AddTrust Low-Value Services Root +================================ +-----BEGIN CERTIFICATE----- +MIIEGDCCAwCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEwHwYDVQQDExhBZGRU +cnVzdCBDbGFzcyAxIENBIFJvb3QwHhcNMDAwNTMwMTAzODMxWhcNMjAwNTMwMTAzODMxWjBlMQsw +CQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBO +ZXR3b3JrMSEwHwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3QwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQCWltQhSWDia+hBBwzexODcEyPNwTXH+9ZOEQpnXvUGW2ulCDtbKRY6 +54eyNAbFvAWlA3yCyykQruGIgb3WntP+LVbBFc7jJp0VLhD7Bo8wBN6ntGO0/7Gcrjyvd7ZWxbWr +oulpOj0OM3kyP3CCkplhbY0wCI9xP6ZIVxn4JdxLZlyldI+Yrsj5wAYi56xz36Uu+1LcsRVlIPo1 +Zmne3yzxbrww2ywkEtvrNTVokMsAsJchPXQhI2U0K7t4WaPW4XY5mqRJjox0r26kmqPZm9I4XJui +GMx1I4S+6+JNM3GOGvDC+Mcdoq0Dlyz4zyXG9rgkMbFjXZJ/Y/AlyVMuH79NAgMBAAGjgdIwgc8w +HQYDVR0OBBYEFJWxtPCUtr3H2tERCSG+wa9J/RB7MAsGA1UdDwQEAwIBBjAPBgNVHRMBAf8EBTAD +AQH/MIGPBgNVHSMEgYcwgYSAFJWxtPCUtr3H2tERCSG+wa9J/RB7oWmkZzBlMQswCQYDVQQGEwJT +RTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSEw +HwYDVQQDExhBZGRUcnVzdCBDbGFzcyAxIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBACxt +ZBsfzQ3duQH6lmM0MkhHma6X7f1yFqZzR1r0693p9db7RcwpiURdv0Y5PejuvE1Uhh4dbOMXJ0Ph +iVYrqW9yTkkz43J8KiOavD7/KCrto/8cI7pDVwlnTUtiBi34/2ydYB7YHEt9tTEv2dB8Xfjea4MY +eDdXL+gzB2ffHsdrKpV2ro9Xo/D0UrSpUwjP4E/TelOL/bscVjby/rK25Xa71SJlpz/+0WatC7xr +mYbvP33zGDLKe8bjq2RGlfgmadlVg3sslgf/WSxEo8bl6ancoWOAWiFeIc9TVPC6b4nbqKqVz4vj +ccweGyBECMB6tkD9xOQ14R0WHNC8K47Wcdk= +-----END CERTIFICATE----- + +AddTrust External Root +====================== +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD +VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw +NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU +cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg +Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 ++iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw +Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo +aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy +2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 +7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL +VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk +VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl +j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 +e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u +G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +AddTrust Public Services Root +============================= +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIBATANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSAwHgYDVQQDExdBZGRU +cnVzdCBQdWJsaWMgQ0EgUm9vdDAeFw0wMDA1MzAxMDQxNTBaFw0yMDA1MzAxMDQxNTBaMGQxCzAJ +BgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQIE5l +dHdvcmsxIDAeBgNVBAMTF0FkZFRydXN0IFB1YmxpYyBDQSBSb290MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA6Rowj4OIFMEg2Dybjxt+A3S72mnTRqX4jsIMEZBRpS9mVEBV6tsfSlbu +nyNu9DnLoblv8n75XYcmYZ4c+OLspoH4IcUkzBEMP9smcnrHAZcHF/nXGCwwfQ56HmIexkvA/X1i +d9NEHif2P0tEs7c42TkfYNVRknMDtABp4/MUTu7R3AnPdzRGULD4EfL+OHn3Bzn+UZKXC1sIXzSG +Aa2Il+tmzV7R/9x98oTaunet3IAIx6eH1lWfl2royBFkuucZKT8Rs3iQhCBSWxHveNCD9tVIkNAw +HM+A+WD+eeSI8t0A65RF62WUaUC6wNW0uLp9BBGo6zEFlpROWCGOn9Bg/QIDAQABo4HRMIHOMB0G +A1UdDgQWBBSBPjfYkrAfd59ctKtzquf2NGAv+jALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBjgYDVR0jBIGGMIGDgBSBPjfYkrAfd59ctKtzquf2NGAv+qFopGYwZDELMAkGA1UEBhMCU0Ux +FDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29yazEgMB4G +A1UEAxMXQWRkVHJ1c3QgUHVibGljIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBAAP3FUr4 +JNojVhaTdt02KLmuG7jD8WS6IBh4lSknVwW8fCr0uVFV2ocC3g8WFzH4qnkuCRO7r7IgGRLlk/lL ++YPoRNWyQSW/iHVv/xD8SlTQX/D67zZzfRs2RcYhbbQVuE7PnFylPVoAjgbjPGsye/Kf8Lb93/Ao +GEjwxrzQvzSAlsJKsW2Ox5BF3i9nrEUEo3rcVZLJR2bYGozH7ZxOmuASu7VqTITh4SINhwBk/ox9 +Yjllpu9CtoAlEmEBqCQTcAARJl/6NVDFSMwGR+gn2HCNX2TmoUQmXiLsks3/QppEIW1cxeMiHV9H +EufOX1362KqxMy3ZdvJOOjMMK7MtkAY= +-----END CERTIFICATE----- + +AddTrust Qualified Certificates Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEHjCCAwagAwIBAgIBATANBgkqhkiG9w0BAQUFADBnMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxHTAbBgNVBAsTFEFkZFRydXN0IFRUUCBOZXR3b3JrMSMwIQYDVQQDExpBZGRU +cnVzdCBRdWFsaWZpZWQgQ0EgUm9vdDAeFw0wMDA1MzAxMDQ0NTBaFw0yMDA1MzAxMDQ0NTBaMGcx +CzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEdMBsGA1UECxMUQWRkVHJ1c3QgVFRQ +IE5ldHdvcmsxIzAhBgNVBAMTGkFkZFRydXN0IFF1YWxpZmllZCBDQSBSb290MIIBIjANBgkqhkiG +9w0BAQEFAAOCAQ8AMIIBCgKCAQEA5B6a/twJWoekn0e+EV+vhDTbYjx5eLfpMLXsDBwqxBb/4Oxx +64r1EW7tTw2R0hIYLUkVAcKkIhPHEWT/IhKauY5cLwjPcWqzZwFZ8V1G87B4pfYOQnrjfxvM0PC3 +KP0q6p6zsLkEqv32x7SxuCqg+1jxGaBvcCV+PmlKfw8i2O+tCBGaKZnhqkRFmhJePp1tUvznoD1o +L/BLcHwTOK28FSXx1s6rosAx1i+f4P8UWfyEk9mHfExUE+uf0S0R+Bg6Ot4l2ffTQO2kBhLEO+GR +wVY18BTcZTYJbqukB8c10cIDMzZbdSZtQvESa0NvS3GU+jQd7RNuyoB/mC9suWXY6QIDAQABo4HU +MIHRMB0GA1UdDgQWBBQ5lYtii1zJ1IC6WA+XPxUIQ8yYpzALBgNVHQ8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zCBkQYDVR0jBIGJMIGGgBQ5lYtii1zJ1IC6WA+XPxUIQ8yYp6FrpGkwZzELMAkGA1UE +BhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMR0wGwYDVQQLExRBZGRUcnVzdCBUVFAgTmV0d29y +azEjMCEGA1UEAxMaQWRkVHJ1c3QgUXVhbGlmaWVkIENBIFJvb3SCAQEwDQYJKoZIhvcNAQEFBQAD +ggEBABmrder4i2VhlRO6aQTvhsoToMeqT2QbPxj2qC0sVY8FtzDqQmodwCVRLae/DLPt7wh/bDxG +GuoYQ992zPlmhpwsaPXpF/gxsxjE1kh9I0xowX67ARRvxdlu3rsEQmr49lx95dr6h+sNNVJn0J6X +dgWTP5XHAeZpVTh/EGGZyeNfpso+gmNIquIISD6q8rKFYqa0p9m9N5xotS1WfbC3P6CxB9bpT9ze +RXEwMn8bLgn5v1Kh7sKAPgZcLlVAwRv1cEWw3F369nJad9Jjzc9YiQBCYz95OdBEsIJuQRno3eDB +iFrRHnGTHyQwdOUeqN48Jzd/g66ed8/wMLH/S5noxqE= +-----END CERTIFICATE----- + +Entrust Root Certification Authority +==================================== +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw +b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG +A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 +MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu +MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu +Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v +dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz +A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww +Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 +j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN +rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 +MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH +hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM +Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa +v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS +W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 +tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +RSA Security 2048 v3 +==================== +-----BEGIN CERTIFICATE----- +MIIDYTCCAkmgAwIBAgIQCgEBAQAAAnwAAAAKAAAAAjANBgkqhkiG9w0BAQUFADA6MRkwFwYDVQQK +ExBSU0EgU2VjdXJpdHkgSW5jMR0wGwYDVQQLExRSU0EgU2VjdXJpdHkgMjA0OCBWMzAeFw0wMTAy +MjIyMDM5MjNaFw0yNjAyMjIyMDM5MjNaMDoxGTAXBgNVBAoTEFJTQSBTZWN1cml0eSBJbmMxHTAb +BgNVBAsTFFJTQSBTZWN1cml0eSAyMDQ4IFYzMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKC +AQEAt49VcdKA3XtpeafwGFAyPGJn9gqVB93mG/Oe2dJBVGutn3y+Gc37RqtBaB4Y6lXIL5F4iSj7 +Jylg/9+PjDvJSZu1pJTOAeo+tWN7fyb9Gd3AIb2E0S1PRsNO3Ng3OTsor8udGuorryGlwSMiuLgb +WhOHV4PR8CDn6E8jQrAApX2J6elhc5SYcSa8LWrg903w8bYqODGBDSnhAMFRD0xS+ARaqn1y07iH +KrtjEAMqs6FPDVpeRrc9DvV07Jmf+T0kgYim3WBU6JU2PcYJk5qjEoAAVZkZR73QpXzDuvsf9/UP ++Ky5tfQ3mBMY3oVbtwyCO4dvlTlYMNpuAWgXIszACwIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/ +MA4GA1UdDwEB/wQEAwIBBjAfBgNVHSMEGDAWgBQHw1EwpKrpRa41JPr/JCwz0LGdjDAdBgNVHQ4E +FgQUB8NRMKSq6UWuNST6/yQsM9CxnYwwDQYJKoZIhvcNAQEFBQADggEBAF8+hnZuuDU8TjYcHnmY +v/3VEhF5Ug7uMYm83X/50cYVIeiKAVQNOvtUudZj1LGqlk2iQk3UUx+LEN5/Zb5gEydxiKRz44Rj +0aRV4VCT5hsOedBnvEbIvz8XDZXmxpBp3ue0L96VfdASPz0+f00/FGj1EVDVwfSQpQgdMWD/YIwj +VAqv/qFuxdF6Kmh4zx6CCiC0H63lhbJqaHVOrSU3lIW+vaHU6rcMSzyd6BIA8F+sDeGscGNz9395 +nzIlQnQFgCi/vcEkllgVsRch6YlL2weIZ/QVrXA+L02FO8K32/6YaCOJ4XQP3vTFhGMpG8zLB8kA +pKnXwiJPZ9d37CAFYd4= +-----END CERTIFICATE----- + +GeoTrust Global CA +================== +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw +MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo +BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet +8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc +T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU +vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q +zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 +d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 +mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p +XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm +Mw== +-----END CERTIFICATE----- + +GeoTrust Global CA 2 +==================== +-----BEGIN CERTIFICATE----- +MIIDZjCCAk6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwHhcNMDQwMzA0MDUw +MDAwWhcNMTkwMzA0MDUwMDAwWjBEMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEdMBsGA1UEAxMUR2VvVHJ1c3QgR2xvYmFsIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDvPE1APRDfO1MA4Wf+lGAVPoWI8YkNkMgoI5kF6CsgncbzYEbYwbLVjDHZ3CB5JIG/ +NTL8Y2nbsSpr7iFY8gjpeMtvy/wWUsiRxP89c96xPqfCfWbB9X5SJBri1WeR0IIQ13hLTytCOb1k +LUCgsBDTOEhGiKEMuzozKmKY+wCdE1l/bztyqu6mD4b5BWHqZ38MN5aL5mkWRxHCJ1kDs6ZgwiFA +Vvqgx306E+PsV8ez1q6diYD3Aecs9pYrEw15LNnA5IZ7S4wMcoKK+xfNAGw6EzywhIdLFnopsk/b +HdQL82Y3vdj2V7teJHq4PIu5+pIaGoSe2HSPqht/XvT+RSIhAgMBAAGjYzBhMA8GA1UdEwEB/wQF +MAMBAf8wHQYDVR0OBBYEFHE4NvICMVNHK266ZUapEBVYIAUJMB8GA1UdIwQYMBaAFHE4NvICMVNH +K266ZUapEBVYIAUJMA4GA1UdDwEB/wQEAwIBhjANBgkqhkiG9w0BAQUFAAOCAQEAA/e1K6tdEPx7 +srJerJsOflN4WT5CBP51o62sgU7XAotexC3IUnbHLB/8gTKY0UvGkpMzNTEv/NgdRN3ggX+d6Yvh +ZJFiCzkIjKx0nVnZellSlxG5FntvRdOW2TF9AjYPnDtuzywNA0ZF66D0f0hExghAzN4bcLUprbqL +OzRldRtxIR0sFAqwlpW41uryZfspuk/qkZN0abby/+Ea0AzRdoXLiiW9l14sbxWZJue2Kf8i7MkC +x1YAzUm5s2x7UwQa4qjJqhIFI8LO57sEAszAR6LkxCkvW0VXiVHuPOtSCP8HNR6fNWpHSlaY0VqF +H4z1Ir+rzoPz4iIprn2DQKi6bA== +-----END CERTIFICATE----- + +GeoTrust Universal CA +===================== +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 +MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu +Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t +JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e +RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs +7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d +8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V +qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga +Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB +Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu +KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 +ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 +XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB +hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 +qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL +oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK +xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF +KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 +DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK +xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU +p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI +P/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +GeoTrust Universal CA 2 +======================= +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 +MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg +SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 +DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 +j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q +JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a +QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 +WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP +20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn +ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC +SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG +8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 ++/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E +BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ +4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ +mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq +A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg +Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP +pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d +FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp +gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm +X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +UTN-USER First-Network Applications +=================================== +-----BEGIN CERTIFICATE----- +MIIEZDCCA0ygAwIBAgIQRL4Mi1AAJLQR0zYwS8AzdzANBgkqhkiG9w0BAQUFADCBozELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzAp +BgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBBcHBsaWNhdGlvbnMwHhcNOTkwNzA5MTg0ODM5 +WhcNMTkwNzA5MTg1NzQ5WjCBozELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5T +YWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExho +dHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xKzApBgNVBAMTIlVUTi1VU0VSRmlyc3QtTmV0d29yayBB +cHBsaWNhdGlvbnMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCz+5Gh5DZVhawGNFug +mliy+LUPBXeDrjKxdpJo7CNKyXY/45y2N3kDuatpjQclthln5LAbGHNhSuh+zdMvZOOmfAz6F4Cj +DUeJT1FxL+78P/m4FoCHiZMlIJpDgmkkdihZNaEdwH+DBmQWICzTSaSFtMBhf1EI+GgVkYDLpdXu +Ozr0hAReYFmnjDRy7rh4xdE7EkpvfmUnuaRVxblvQ6TFHSyZwFKkeEwVs0CYCGtDxgGwenv1axwi +P8vv/6jQOkt2FZ7S0cYu49tXGzKiuG/ohqY/cKvlcJKrRB5AUPuco2LkbG6gyN7igEL66S/ozjIE +j3yNtxyjNTwV3Z7DrpelAgMBAAGjgZEwgY4wCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8w +HQYDVR0OBBYEFPqGydvguul49Uuo1hXf8NPhahQ8ME8GA1UdHwRIMEYwRKBCoECGPmh0dHA6Ly9j +cmwudXNlcnRydXN0LmNvbS9VVE4tVVNFUkZpcnN0LU5ldHdvcmtBcHBsaWNhdGlvbnMuY3JsMA0G +CSqGSIb3DQEBBQUAA4IBAQCk8yXM0dSRgyLQzDKrm5ZONJFUICU0YV8qAhXhi6r/fWRRzwr/vH3Y +IWp4yy9Rb/hCHTO967V7lMPDqaAt39EpHx3+jz+7qEUqf9FuVSTiuwL7MT++6LzsQCv4AdRWOOTK +RIK1YSAhZ2X28AvnNPilwpyjXEAfhZOVBt5P1CeptqX8Fs1zMT+4ZSfP1FMa8Kxun08FDAOBp4Qp +xFq9ZFdyrTvPNximmMatBrTcCKME1SmklpoSZ0qMYEWd8SOasACcaLWYUNPvji6SZbFIPiG+FTAq +DbUMo2s/rn9X9R+WfN9v3YIwLGUbQErNaLly7HF27FSOH4UMAWr6pjisH8SE +-----END CERTIFICATE----- + +America Online Root Certification Authority 1 +============================================= +-----BEGIN CERTIFICATE----- +MIIDpDCCAoygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSAxMB4XDTAyMDUyODA2MDAwMFoXDTM3MTExOTIwNDMwMFowYzELMAkG +A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg +T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKgv6KRpBgNHw+kqmP8ZonCaxlCyfqXfaE0bfA+2l2h9LaaLl+lkhsmj76CG +v2BlnEtUiMJIxUo5vxTjWVXlGbR0yLQFOVwWpeKVBeASrlmLojNoWBym1BW32J/X3HGrfpq/m44z +DyL9Hy7nBzbvYjnF3cu6JRQj3gzGPTzOggjmZj7aUTsWOqMFf6Dch9Wc/HKpoH145LcxVR5lu9Rh +sCFg7RAycsWSJR74kEoYeEfffjA3PlAb2xzTa5qGUwew76wGePiEmf4hjUyAtgyC9mZweRrTT6PP +8c9GsEsPPt2IYriMqQkoO3rHl+Ee5fSfwMCuJKDIodkP1nsmgmkyPacCAwEAAaNjMGEwDwYDVR0T +AQH/BAUwAwEB/zAdBgNVHQ4EFgQUAK3Zo/Z59m50qX8zPYEX10zPM94wHwYDVR0jBBgwFoAUAK3Z +o/Z59m50qX8zPYEX10zPM94wDgYDVR0PAQH/BAQDAgGGMA0GCSqGSIb3DQEBBQUAA4IBAQB8itEf +GDeC4Liwo+1WlchiYZwFos3CYiZhzRAW18y0ZTTQEYqtqKkFZu90821fnZmv9ov761KyBZiibyrF +VL0lvV+uyIbqRizBs73B6UlwGBaXCBOMIOAbLjpHyx7kADCVW/RFo8AasAFOq73AI25jP4BKxQft +3OJvx8Fi8eNy1gTIdGcL+oiroQHIb/AUr9KZzVGTfu0uOMe9zkZQPXLjeSWdm4grECDdpbgyn43g +Kd8hdIaC2y+CMMbHNYaz+ZZfRtsMRf3zUMNvxsNIrUam4SdHCh0Om7bCd39j8uB9Gr784N/Xx6ds +sPmuujz9dLQR6FgNgLzTqIA6me11zEZ7 +-----END CERTIFICATE----- + +America Online Root Certification Authority 2 +============================================= +-----BEGIN CERTIFICATE----- +MIIFpDCCA4ygAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEcMBoGA1UEChMT +QW1lcmljYSBPbmxpbmUgSW5jLjE2MDQGA1UEAxMtQW1lcmljYSBPbmxpbmUgUm9vdCBDZXJ0aWZp +Y2F0aW9uIEF1dGhvcml0eSAyMB4XDTAyMDUyODA2MDAwMFoXDTM3MDkyOTE0MDgwMFowYzELMAkG +A1UEBhMCVVMxHDAaBgNVBAoTE0FtZXJpY2EgT25saW5lIEluYy4xNjA0BgNVBAMTLUFtZXJpY2Eg +T25saW5lIFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgMjCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAMxBRR3pPU0Q9oyxQcngXssNt79Hc9PwVU3dxgz6sWYFas14tNwC206B89en +fHG8dWOgXeMHDEjsJcQDIPT/DjsS/5uN4cbVG7RtIuOx238hZK+GvFciKtZHgVdEglZTvYYUAQv8 +f3SkWq7xuhG1m1hagLQ3eAkzfDJHA1zEpYNI9FdWboE2JxhP7JsowtS013wMPgwr38oE18aO6lhO +qKSlGBxsRZijQdEt0sdtjRnxrXm3gT+9BoInLRBYBbV4Bbkv2wxrkJB+FFk4u5QkE+XRnRTf04JN +RvCAOVIyD+OEsnpD8l7eXz8d3eOyG6ChKiMDbi4BFYdcpnV1x5dhvt6G3NRI270qv0pV2uh9UPu0 +gBe4lL8BPeraunzgWGcXuVjgiIZGZ2ydEEdYMtA1fHkqkKJaEBEjNa0vzORKW6fIJ/KD3l67Xnfn +6KVuY8INXWHQjNJsWiEOyiijzirplcdIz5ZvHZIlyMbGwcEMBawmxNJ10uEqZ8A9W6Wa6897Gqid +FEXlD6CaZd4vKL3Ob5Rmg0gp2OpljK+T2WSfVVcmv2/LNzGZo2C7HK2JNDJiuEMhBnIMoVxtRsX6 +Kc8w3onccVvdtjc+31D1uAclJuW8tf48ArO3+L5DwYcRlJ4jbBeKuIonDFRH8KmzwICMoCfrHRnj +B453cMor9H124HhnAgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFE1FwWg4u3Op +aaEg5+31IqEjFNeeMB8GA1UdIwQYMBaAFE1FwWg4u3OpaaEg5+31IqEjFNeeMA4GA1UdDwEB/wQE +AwIBhjANBgkqhkiG9w0BAQUFAAOCAgEAZ2sGuV9FOypLM7PmG2tZTiLMubekJcmnxPBUlgtk87FY +T15R/LKXeydlwuXK5w0MJXti4/qftIe3RUavg6WXSIylvfEWK5t2LHo1YGwRgJfMqZJS5ivmae2p ++DYtLHe/YUjRYwu5W1LtGLBDQiKmsXeu3mnFzcccobGlHBD7GL4acN3Bkku+KVqdPzW+5X1R+FXg +JXUjhx5c3LqdsKyzadsXg8n33gy8CNyRnqjQ1xU3c6U1uPx+xURABsPr+CKAXEfOAuMRn0T//Zoy +zH1kUQ7rVyZ2OuMeIjzCpjbdGe+n/BLzJsBZMYVMnNjP36TMzCmT/5RtdlwTCJfy7aULTd3oyWgO +ZtMADjMSW7yV5TKQqLPGbIOtd+6Lfn6xqavT4fG2wLHqiMDn05DpKJKUe2h7lyoKZy2FAjgQ5ANh +1NolNscIWC2hp1GvMApJ9aZphwctREZ2jirlmjvXGKL8nDgQzMY70rUXOm/9riW99XJZZLF0Kjhf +GEzfz3EEWjbUvy+ZnOjZurGV5gJLIaFb1cFPj65pbVPbAZO1XB4Y3WRayhgoPmMEEf0cjQAPuDff +Z4qdZqkCapH/E8ovXYO8h5Ns3CRRFgQlZvqz2cK6Kb6aSDiCmfS/O0oxGfm/jiEzFMpPVF/7zvuP +cX/9XhmgD0uRuMRUvAawRY8mkaKO/qk= +-----END CERTIFICATE----- + +Visa eCommerce Root +=================== +-----BEGIN CERTIFICATE----- +MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG +EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug +QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2 +WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm +VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv +bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL +F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b +RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0 +TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI +/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs +GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG +MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc +CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW +YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz +zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu +YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt +398znM/jra6O1I7mT1GvFpLgXPYHDw== +-----END CERTIFICATE----- + +Certum Root CA +============== +-----BEGIN CERTIFICATE----- +MIIDDDCCAfSgAwIBAgIDAQAgMA0GCSqGSIb3DQEBBQUAMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQK +ExJVbml6ZXRvIFNwLiB6IG8uby4xEjAQBgNVBAMTCUNlcnR1bSBDQTAeFw0wMjA2MTExMDQ2Mzla +Fw0yNzA2MTExMDQ2MzlaMD4xCzAJBgNVBAYTAlBMMRswGQYDVQQKExJVbml6ZXRvIFNwLiB6IG8u +by4xEjAQBgNVBAMTCUNlcnR1bSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAM6x +wS7TT3zNJc4YPk/EjG+AanPIW1H4m9LcuwBcsaD8dQPugfCI7iNS6eYVM42sLQnFdvkrOYCJ5JdL +kKWoePhzQ3ukYbDYWMzhbGZ+nPMJXlVjhNWo7/OxLjBos8Q82KxujZlakE403Daaj4GIULdtlkIJ +89eVgw1BS7Bqa/j8D35in2fE7SZfECYPCE/wpFcozo+47UX2bu4lXapuOb7kky/ZR6By6/qmW6/K +Uz/iDsaWVhFu9+lmqSbYf5VT7QqFiLpPKaVCjF62/IUgAKpoC6EahQGcxEZjgoi2IrHu/qpGWX7P +NSzVttpd90gzFFS269lvzs2I1qsb2pY7HVkCAwEAAaMTMBEwDwYDVR0TAQH/BAUwAwEB/zANBgkq +hkiG9w0BAQUFAAOCAQEAuI3O7+cUus/usESSbLQ5PqKEbq24IXfS1HeCh+YgQYHu4vgRt2PRFze+ +GXYkHAQaTOs9qmdvLdTN/mUxcMUbpgIKumB7bVjCmkn+YzILa+M6wKyrO7Do0wlRjBCDxjTgxSvg +GrZgFCdsMneMvLJymM/NzD+5yCRCFNZX/OYmQ6kd5YCQzgNUKD73P9P4Te1qCjqTE5s7FCMTY5w/ +0YcneeVMUeMBrYVdGjux1XMQpNPyvG5k9VpWkKjHDkx0Dy5xO/fIR/RpbxXyEV6DHpx8Uq79AtoS +qFlnGNu8cN2bsWntgM6JQEhqDjXKKWYVIZQs6GAqm4VKQPNriiTsBhYscw== +-----END CERTIFICATE----- + +Comodo AAA Services root +======================== +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw +MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl +c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG +C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs +i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW +Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH +Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK +Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f +BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl +cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz +LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm +7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z +8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C +12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +Comodo Secure Services root +=========================== +-----BEGIN CERTIFICATE----- +MIIEPzCCAyegAwIBAgIBATANBgkqhkiG9w0BAQUFADB+MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEkMCIGA1UEAwwbU2VjdXJlIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAw +MDAwMFoXDTI4MTIzMTIzNTk1OVowfjELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFu +Y2hlc3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxJDAi +BgNVBAMMG1NlY3VyZSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBAMBxM4KK0HDrc4eCQNUd5MvJDkKQ+d40uaG6EfQlhfPMcm3ye5drswfxdySRXyWP +9nQ95IDC+DwN879A6vfIUtFyb+/Iq0G4bi4XKpVpDM3SHpR7LZQdqnXXs5jLrLxkU0C8j6ysNstc +rbvd4JQX7NFc0L/vpZXJkMWwrPsbQ996CF23uPJAGysnnlDOXmWCiIxe004MeuoIkbY2qitC++rC +oznl2yY4rYsK7hljxxwk3wN42ubqwUcaCwtGCd0C/N7Lh1/XMGNooa7cMqG6vv5Eq2i2pRcV/b3V +p6ea5EQz6YiO/O1R65NxTq0B50SOqy3LqP4BSUjwwN3HaNiS/j0CAwEAAaOBxzCBxDAdBgNVHQ4E +FgQUPNiTiMLAggnMAZkGkyDpnnAJY08wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8w +gYEGA1UdHwR6MHgwO6A5oDeGNWh0dHA6Ly9jcmwuY29tb2RvY2EuY29tL1NlY3VyZUNlcnRpZmlj +YXRlU2VydmljZXMuY3JsMDmgN6A1hjNodHRwOi8vY3JsLmNvbW9kby5uZXQvU2VjdXJlQ2VydGlm +aWNhdGVTZXJ2aWNlcy5jcmwwDQYJKoZIhvcNAQEFBQADggEBAIcBbSMdflsXfcFhMs+P5/OKlFlm +4J4oqF7Tt/Q05qo5spcWxYJvMqTpjOev/e/C6LlLqqP05tqNZSH7uoDrJiiFGv45jN5bBAS0VPmj +Z55B+glSzAVIqMk/IQQezkhr/IXownuvf7fM+F86/TXGDe+X3EyrEeFryzHRbPtIgKvcnDe4IRRL +DXE97IMzbtFuMhbsmMcWi1mmNKsFVy2T96oTy9IT4rcuO81rUBcJaD61JlfutuC23bkpgHl9j6Pw +pCikFcSF9CfUa7/lXORlAnZUtOM3ZiTTGWHIUhDlizeauan5Hb/qmZJhlv8BzaFfDbxxvA6sCx1H +RR3B7Hzs/Sk= +-----END CERTIFICATE----- + +Comodo Trusted Services root +============================ +-----BEGIN CERTIFICATE----- +MIIEQzCCAyugAwIBAgIBATANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDElMCMGA1UEAwwcVHJ1c3RlZCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczAeFw0wNDAxMDEw +MDAwMDBaFw0yODEyMzEyMzU5NTlaMH8xCzAJBgNVBAYTAkdCMRswGQYDVQQIDBJHcmVhdGVyIE1h +bmNoZXN0ZXIxEDAOBgNVBAcMB1NhbGZvcmQxGjAYBgNVBAoMEUNvbW9kbyBDQSBMaW1pdGVkMSUw +IwYDVQQDDBxUcnVzdGVkIENlcnRpZmljYXRlIFNlcnZpY2VzMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA33FvNlhTWvI2VFeAxHQIIO0Yfyod5jWaHiWsnOWWfnJSoBVC21ndZHoa0Lh7 +3TkVvFVIxO06AOoxEbrycXQaZ7jPM8yoMa+j49d/vzMtTGo87IvDktJTdyR0nAducPy9C1t2ul/y +/9c3S0pgePfw+spwtOpZqqPOSC+pw7ILfhdyFgymBwwbOM/JYrc/oJOlh0Hyt3BAd9i+FHzjqMB6 +juljatEPmsbS9Is6FARW1O24zG71++IsWL1/T2sr92AkWCTOJu80kTrV44HQsvAEAtdbtz6SrGsS +ivnkBbA7kUlcsutT6vifR4buv5XAwAaf0lteERv0xwQ1KdJVXOTt6wIDAQABo4HJMIHGMB0GA1Ud +DgQWBBTFe1i97doladL3WRaoszLAeydb9DAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB +/zCBgwYDVR0fBHwwejA8oDqgOIY2aHR0cDovL2NybC5jb21vZG9jYS5jb20vVHJ1c3RlZENlcnRp +ZmljYXRlU2VydmljZXMuY3JsMDqgOKA2hjRodHRwOi8vY3JsLmNvbW9kby5uZXQvVHJ1c3RlZENl +cnRpZmljYXRlU2VydmljZXMuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQDIk4E7ibSvuIQSTI3S8Ntw +uleGFTQQuS9/HrCoiWChisJ3DFBKmwCL2Iv0QeLQg4pKHBQGsKNoBXAxMKdTmw7pSqBYaWcOrp32 +pSxBvzwGa+RZzG0Q8ZZvH9/0BAKkn0U+yNj6NkZEUD+Cl5EfKNsYEYwq5GWDVxISjBc/lDb+XbDA +BHcTuPQV1T84zJQ6VdCsmPW6AF/ghhmBeC8owH7TzEIK9a5QoNE+xqFx7D+gIIxmOom0jtTYsU0l +R+4viMi14QVFwL4Ucd56/Y57fU0IlqUSc/AtyjcndBInTMu2l+nZrghtWjlA3QVHdWpaIbOjGM9O +9y5Xt5hwXsjEeLBi +-----END CERTIFICATE----- + +QuoVadis Root CA +================ +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE +ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz +MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp +cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD +EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk +J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL +F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL +YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen +AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w +PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y +ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 +MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj +YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs +ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW +Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu +BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw +FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 +tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo +fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul +LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x +gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi +5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi +5nrQNiOKSnQ2+Q== +-----END CERTIFICATE----- + +QuoVadis Root CA 2 +================== +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx +ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 +XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk +lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB +lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy +lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt +66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn +wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh +D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy +BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie +J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud +DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU +a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv +Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 +UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm +VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK ++JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW +IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 +WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X +f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II +4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 +VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +QuoVadis Root CA 3 +================== +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx +OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg +DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij +KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K +DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv +BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp +p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8 +nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX +MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM +Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz +uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT +BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj +YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB +BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD +VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4 +ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE +AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV +qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s +hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z +POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2 +Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp +8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC +bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu +g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p +vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr +qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +Security Communication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw +8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM +DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX +5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd +DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 +JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g +0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a +mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ +s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ +6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi +FL39vmwLAw== +-----END CERTIFICATE----- + +Sonera Class 1 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBJDANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MxIENBMB4XDTAxMDQwNjEwNDkxM1oXDTIxMDQw +NjEwNDkxM1owOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALWJHytPZwp5/8Ue+H88 +7dF+2rDNbS82rDTG29lkFwhjMDMiikzujrsPDUJVyZ0upe/3p4zDq7mXy47vPxVnqIJyY1MPQYx9 +EJUkoVqlBvqSV536pQHydekfvFYmUk54GWVYVQNYwBSujHxVX3BbdyMGNpfzJLWaRpXk3w0LBUXl +0fIdgrvGE+D+qnr9aTCU89JFhfzyMlsy3uhsXR/LpCJ0sICOXZT3BgBLqdReLjVQCfOAl/QMF645 +2F/NM8EcyonCIvdFEu1eEpOdY6uCLrnrQkFEy0oaAIINnvmLVz5MxxftLItyM19yejhW1ebZrgUa +HXVFsculJRwSVzb9IjcCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQIR+IMi/ZT +iFIwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQCLGrLJXWG04bkruVPRsoWdd44W7hE9 +28Jj2VuXZfsSZ9gqXLar5V7DtxYvyOirHYr9qxp81V9jz9yw3Xe5qObSIjiHBxTZ/75Wtf0HDjxV +yhbMp6Z3N/vbXB9OWQaHowND9Rart4S9Tu+fMTfwRvFAttEMpWT4Y14h21VOTzF2nBBhjrZTOqMR +vq9tfB69ri3iDGnHhVNoomG6xT60eVR4ngrHAr5i0RGCS2UvkVrCqIexVmiUefkl98HVrhq4uz2P +qYo4Ffdz0Fpg0YCw8NzVUM1O7pJIae2yIx4wzMiUyLb1O4Z/P6Yun/Y+LLWSlj7fLJOK/4GMDw9Z +IRlXvVWa +-----END CERTIFICATE----- + +Sonera Class 2 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw +NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 +/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT +dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG +f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P +tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH +nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT +XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt +0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI +cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph +Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx +EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH +llpwrN9M +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA +============================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgIEAJiWijANBgkqhkiG9w0BAQUFADBVMQswCQYDVQQGEwJOTDEeMBwGA1UE +ChMVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSYwJAYDVQQDEx1TdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQTAeFw0wMjEyMTcwOTIzNDlaFw0xNTEyMTYwOTE1MzhaMFUxCzAJBgNVBAYTAk5MMR4w +HAYDVQQKExVTdGFhdCBkZXIgTmVkZXJsYW5kZW4xJjAkBgNVBAMTHVN0YWF0IGRlciBOZWRlcmxh +bmRlbiBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAmNK1URF6gaYUmHFt +vsznExvWJw56s2oYHLZhWtVhCb/ekBPHZ+7d89rFDBKeNVU+LCeIQGv33N0iYfXCxw719tV2U02P +jLwYdjeFnejKScfST5gTCaI+Ioicf9byEGW07l8Y1Rfj+MX94p2i71MOhXeiD+EwR+4A5zN9RGca +C1Hoi6CeUJhoNFIfLm0B8mBF8jHrqTFoKbt6QZ7GGX+UtFE5A3+y3qcym7RHjm+0Sq7lr7HcsBth +vJly3uSJt3omXdozSVtSnA71iq3DuD3oBmrC1SoLbHuEvVYFy4ZlkuxEK7COudxwC0barbxjiDn6 +22r+I/q85Ej0ZytqERAhSQIDAQABo4GRMIGOMAwGA1UdEwQFMAMBAf8wTwYDVR0gBEgwRjBEBgRV +HSAAMDwwOgYIKwYBBQUHAgEWLmh0dHA6Ly93d3cucGtpb3ZlcmhlaWQubmwvcG9saWNpZXMvcm9v +dC1wb2xpY3kwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBSofeu8Y6R0E3QA7Jbg0zTBLL9s+DAN +BgkqhkiG9w0BAQUFAAOCAQEABYSHVXQ2YcG70dTGFagTtJ+k/rvuFbQvBgwp8qiSpGEN/KtcCFtR +EytNwiphyPgJWPwtArI5fZlmgb9uXJVFIGzmeafR2Bwp/MIgJ1HI8XxdNGdphREwxgDS1/PTfLbw +MVcoEoJz6TMvplW0C5GUR5z6u3pCMuiufi3IvKwUv9kP2Vv8wfl6leF9fpb8cbDCTMjfRTTJzg3y +nGQI0DvDKcWy7ZAEwbEpkcUwb8GpcjPM/l0WFywRaed+/sWDCN+83CI6LiBpIzlWYGeQiy52OfsR +iJf2fL1LuCAWZwWN4jvBcj+UlTfHXbme2JOhF4//DGYVwSR8MnwDHTuhWEUykw== +-----END CERTIFICATE----- + +TDC Internet Root CA +==================== +-----BEGIN CERTIFICATE----- +MIIEKzCCAxOgAwIBAgIEOsylTDANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJESzEVMBMGA1UE +ChMMVERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTAeFw0wMTA0MDUx +NjMzMTdaFw0yMTA0MDUxNzAzMTdaMEMxCzAJBgNVBAYTAkRLMRUwEwYDVQQKEwxUREMgSW50ZXJu +ZXQxHTAbBgNVBAsTFFREQyBJbnRlcm5ldCBSb290IENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAxLhAvJHVYx/XmaCLDEAedLdInUaMArLgJF/wGROnN4NrXceO+YQwzho7+vvOi20j +xsNuZp+Jpd/gQlBn+h9sHvTQBda/ytZO5GhgbEaqHF1j4QeGDmUApy6mcca8uYGoOn0a0vnRrEvL +znWv3Hv6gXPU/Lq9QYjUdLP5Xjg6PEOo0pVOd20TDJ2PeAG3WiAfAzc14izbSysseLlJ28TQx5yc +5IogCSEWVmb/Bexb4/DPqyQkXsN/cHoSxNK1EKC2IeGNeGlVRGn1ypYcNIUXJXfi9i8nmHj9eQY6 +otZaQ8H/7AQ77hPv01ha/5Lr7K7a8jcDR0G2l8ktCkEiu7vmpwIDAQABo4IBJTCCASEwEQYJYIZI +AYb4QgEBBAQDAgAHMGUGA1UdHwReMFwwWqBYoFakVDBSMQswCQYDVQQGEwJESzEVMBMGA1UEChMM +VERDIEludGVybmV0MR0wGwYDVQQLExRUREMgSW50ZXJuZXQgUm9vdCBDQTENMAsGA1UEAxMEQ1JM +MTArBgNVHRAEJDAigA8yMDAxMDQwNTE2MzMxN1qBDzIwMjEwNDA1MTcwMzE3WjALBgNVHQ8EBAMC +AQYwHwYDVR0jBBgwFoAUbGQBx/2FbazI2p5QCIUItTxWqFAwHQYDVR0OBBYEFGxkAcf9hW2syNqe +UAiFCLU8VqhQMAwGA1UdEwQFMAMBAf8wHQYJKoZIhvZ9B0EABBAwDhsIVjUuMDo0LjADAgSQMA0G +CSqGSIb3DQEBBQUAA4IBAQBOQ8zR3R0QGwZ/t6T609lN+yOfI1Rb5osvBCiLtSdtiaHsmGnc540m +gwV5dOy0uaOXwTUA/RXaOYE6lTGQ3pfphqiZdwzlWqCE/xIWrG64jcN7ksKsLtB9KOy282A4aW8+ +2ARVPp7MVdK6/rtHBNcK2RYKNCn1WBPVT8+PVkuzHu7TmHnaCB4Mb7j4Fifvwm899qNLPg7kbWzb +O0ESm70NRyN/PErQr8Cv9u8btRXE64PECV90i9kR+8JWsTz4cMo0jUNAE4z9mQNUecYu6oah9jrU +Cbz0vGbMPVjQV0kK7iXiQe4T+Zs4NNEA9X7nlB38aQNiuJkFBT1reBK9sG9l +-----END CERTIFICATE----- + +TDC OCES Root CA +================ +-----BEGIN CERTIFICATE----- +MIIFGTCCBAGgAwIBAgIEPki9xDANBgkqhkiG9w0BAQUFADAxMQswCQYDVQQGEwJESzEMMAoGA1UE +ChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTAeFw0wMzAyMTEwODM5MzBaFw0zNzAyMTEwOTA5 +MzBaMDExCzAJBgNVBAYTAkRLMQwwCgYDVQQKEwNUREMxFDASBgNVBAMTC1REQyBPQ0VTIENBMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEArGL2YSCyz8DGhdfjeebM7fI5kqSXLmSjhFuH +nEz9pPPEXyG9VhDr2y5h7JNp46PMvZnDBfwGuMo2HP6QjklMxFaaL1a8z3sM8W9Hpg1DTeLpHTk0 +zY0s2RKY+ePhwUp8hjjEqcRhiNJerxomTdXkoCJHhNlktxmW/OwZ5LKXJk5KTMuPJItUGBxIYXvV +iGjaXbXqzRowwYCDdlCqT9HU3Tjw7xb04QxQBr/q+3pJoSgrHPb8FTKjdGqPqcNiKXEx5TukYBde +dObaE+3pHx8b0bJoc8YQNHVGEBDjkAB2QMuLt0MJIf+rTpPGWOmlgtt3xDqZsXKVSQTwtyv6e1mO +3QIDAQABo4ICNzCCAjMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwgewGA1UdIASB +5DCB4TCB3gYIKoFQgSkBAQEwgdEwLwYIKwYBBQUHAgEWI2h0dHA6Ly93d3cuY2VydGlmaWthdC5k +ay9yZXBvc2l0b3J5MIGdBggrBgEFBQcCAjCBkDAKFgNUREMwAwIBARqBgUNlcnRpZmlrYXRlciBm +cmEgZGVubmUgQ0EgdWRzdGVkZXMgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4xLiBDZXJ0aWZp +Y2F0ZXMgZnJvbSB0aGlzIENBIGFyZSBpc3N1ZWQgdW5kZXIgT0lEIDEuMi4yMDguMTY5LjEuMS4x +LjARBglghkgBhvhCAQEEBAMCAAcwgYEGA1UdHwR6MHgwSKBGoESkQjBAMQswCQYDVQQGEwJESzEM +MAoGA1UEChMDVERDMRQwEgYDVQQDEwtUREMgT0NFUyBDQTENMAsGA1UEAxMEQ1JMMTAsoCqgKIYm +aHR0cDovL2NybC5vY2VzLmNlcnRpZmlrYXQuZGsvb2Nlcy5jcmwwKwYDVR0QBCQwIoAPMjAwMzAy +MTEwODM5MzBagQ8yMDM3MDIxMTA5MDkzMFowHwYDVR0jBBgwFoAUYLWF7FZkfhIZJ2cdUBVLc647 ++RIwHQYDVR0OBBYEFGC1hexWZH4SGSdnHVAVS3OuO/kSMB0GCSqGSIb2fQdBAAQQMA4bCFY2LjA6 +NC4wAwIEkDANBgkqhkiG9w0BAQUFAAOCAQEACromJkbTc6gJ82sLMJn9iuFXehHTuJTXCRBuo7E4 +A9G28kNBKWKnctj7fAXmMXAnVBhOinxO5dHKjHiIzxvTkIvmI/gLDjNDfZziChmPyQE+dF10yYsc +A+UYyAFMP8uXBV2YcaaYb7Z8vTd/vuGTJW1v8AqtFxjhA7wHKcitJuj4YfD9IQl+mo6paH1IYnK9 +AOoBmbgGglGBTvH1tJFUuSN6AJqfXY3gPGS5GhKSKseCRHI53OI8xthV9RVOyAUO28bQYqbsFbS1 +AoLbrIyigfCbmTH1ICCoiGEKB5+U/NDXG8wuF/MEJ3Zn61SD/aSQfgY9BKNDLdr8C2LqL19iUw== +-----END CERTIFICATE----- + +UTN DATACorp SGC Root CA +======================== +-----BEGIN CERTIFICATE----- +MIIEXjCCA0agAwIBAgIQRL4Mi1AAIbQR0ypoBqmtaTANBgkqhkiG9w0BAQUFADCBkzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xGzAZ +BgNVBAMTElVUTiAtIERBVEFDb3JwIFNHQzAeFw05OTA2MjQxODU3MjFaFw0xOTA2MjQxOTA2MzBa +MIGTMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQxFzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4w +HAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRy +dXN0LmNvbTEbMBkGA1UEAxMSVVROIC0gREFUQUNvcnAgU0dDMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA3+5YEKIrblXEjr8uRgnn4AgPLit6E5Qbvfa2gI5lBZMAHryv4g+OGQ0SR+ys +raP6LnD43m77VkIVni5c7yPeIbkFdicZD0/Ww5y0vpQZY/KmEQrrU0icvvIpOxboGqBMpsn0GFlo +wHDyUwDAXlCCpVZvNvlK4ESGoE1O1kduSUrLZ9emxAW5jh70/P/N5zbgnAVssjMiFdC04MwXwLLA +9P4yPykqlXvY8qdOD1R8oQ2AswkDwf9c3V6aPryuvEeKaq5xyh+xKrhfQgUL7EYw0XILyulWbfXv +33i+Ybqypa4ETLyorGkVl73v67SMvzX41MPRKA5cOp9wGDMgd8SirwIDAQABo4GrMIGoMAsGA1Ud +DwQEAwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRTMtGzz3/64PGgXYVOktKeRR20TzA9 +BgNVHR8ENjA0MDKgMKAuhixodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLURBVEFDb3JwU0dD +LmNybDAqBgNVHSUEIzAhBggrBgEFBQcDAQYKKwYBBAGCNwoDAwYJYIZIAYb4QgQBMA0GCSqGSIb3 +DQEBBQUAA4IBAQAnNZcAiosovcYzMB4p/OL31ZjUQLtgyr+rFywJNn9Q+kHcrpY6CiM+iVnJowft +Gzet/Hy+UUla3joKVAgWRcKZsYfNjGjgaQPpxE6YsjuMFrMOoAyYUJuTqXAJyCyjj98C5OBxOvG0 +I3KgqgHf35g+FFCgMSa9KOlaMCZ1+XtgHI3zzVAmbQQnmt/VDUVHKWss5nbZqSl9Mt3JNjy9rjXx +EZ4du5A/EkdOjtd+D2JzHVImOBwYSf0wdJrE5SIv2MCN7ZF6TACPcn9d2t0bi0Vr591pl6jFVkwP +DPafepE39peC4N1xaf92P2BNPM/3mfnGV/TJVTl4uix5yaaIK/QI +-----END CERTIFICATE----- + +UTN USERFirst Email Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIEojCCA4qgAwIBAgIQRL4Mi1AAJLQR0zYlJWfJiTANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xNjA0 +BgNVBAMTLVVUTi1VU0VSRmlyc3QtQ2xpZW50IEF1dGhlbnRpY2F0aW9uIGFuZCBFbWFpbDAeFw05 +OTA3MDkxNzI4NTBaFw0xOTA3MDkxNzM2NThaMIGuMQswCQYDVQQGEwJVUzELMAkGA1UECBMCVVQx +FzAVBgNVBAcTDlNhbHQgTGFrZSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsx +ITAfBgNVBAsTGGh0dHA6Ly93d3cudXNlcnRydXN0LmNvbTE2MDQGA1UEAxMtVVROLVVTRVJGaXJz +dC1DbGllbnQgQXV0aGVudGljYXRpb24gYW5kIEVtYWlsMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsjmFpPJ9q0E7YkY3rs3BYHW8OWX5ShpHornMSMxqmNVNNRm5pELlzkniii8efNIx +B8dOtINknS4p1aJkxIW9hVE1eaROaJB7HHqkkqgX8pgV8pPMyaQylbsMTzC9mKALi+VuG6JG+ni8 +om+rWV6lL8/K2m2qL+usobNqqrcuZzWLeeEeaYji5kbNoKXqvgvOdjp6Dpvq/NonWz1zHyLmSGHG +TPNpsaguG7bUMSAsvIKKjqQOpdeJQ/wWWq8dcdcRWdq6hw2v+vPhwvCkxWeM1tZUOt4KpLoDd7Nl +yP0e03RiqhjKaJMeoYV+9Udly/hNVyh00jT/MLbu9mIwFIws6wIDAQABo4G5MIG2MAsGA1UdDwQE +AwIBxjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBSJgmd9xJ0mcABLtFBIfN49rgRufTBYBgNV +HR8EUTBPME2gS6BJhkdodHRwOi8vY3JsLnVzZXJ0cnVzdC5jb20vVVROLVVTRVJGaXJzdC1DbGll +bnRBdXRoZW50aWNhdGlvbmFuZEVtYWlsLmNybDAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUH +AwQwDQYJKoZIhvcNAQEFBQADggEBALFtYV2mGn98q0rkMPxTbyUkxsrt4jFcKw7u7mFVbwQ+zzne +xRtJlOTrIEy05p5QLnLZjfWqo7NK2lYcYJeA3IKirUq9iiv/Cwm0xtcgBEXkzYABurorbs6q15L+ +5K/r9CYdFip/bDCVNy8zEqx/3cfREYxRmLLQo5HQrfafnoOTHh1CuEava2bwm3/q4wMC5QJRwarV +NZ1yQAOJujEdxRBoUp7fooXFXAimeOZTT7Hot9MUnpOmw2TjrH5xzbyf6QMbzPvprDHBr3wVdAKZ +w7JHpsIyYdfHb0gkUSeh1YdV8nuPmD0Wnu51tvjQjvLzxq4oW6fw8zYX/MMF08oDSlQ= +-----END CERTIFICATE----- + +UTN USERFirst Hardware Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIEdDCCA1ygAwIBAgIQRL4Mi1AAJLQR0zYq/mUK/TANBgkqhkiG9w0BAQUFADCBlzELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHzAd +BgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwHhcNOTkwNzA5MTgxMDQyWhcNMTkwNzA5MTgx +OTIyWjCBlzELMAkGA1UEBhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0 +eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVz +ZXJ0cnVzdC5jb20xHzAdBgNVBAMTFlVUTi1VU0VSRmlyc3QtSGFyZHdhcmUwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCx98M4P7Sof885glFn0G2f0v9Y8+efK+wNiVSZuTiZFvfgIXlI +wrthdBKWHTxqctU8EGc6Oe0rE81m65UJM6Rsl7HoxuzBdXmcRl6Nq9Bq/bkqVRcQVLMZ8Jr28bFd +tqdt++BxF2uiiPsA3/4aMXcMmgF6sTLjKwEHOG7DpV4jvEWbe1DByTCP2+UretNb+zNAHqDVmBe8 +i4fDidNdoI6yqqr2jmmIBsX6iSHzCJ1pLgkzmykNRg+MzEk0sGlRvfkGzWitZky8PqxhvQqIDsjf +Pe58BEydCl5rkdbux+0ojatNh4lz0G6k0B4WixThdkQDf2Os5M1JnMWS9KsyoUhbAgMBAAGjgbkw +gbYwCwYDVR0PBAQDAgHGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFKFyXyYbKJhDlV0HN9WF +lp1L0sNFMEQGA1UdHwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9VVE4tVVNF +UkZpcnN0LUhhcmR3YXJlLmNybDAxBgNVHSUEKjAoBggrBgEFBQcDAQYIKwYBBQUHAwUGCCsGAQUF +BwMGBggrBgEFBQcDBzANBgkqhkiG9w0BAQUFAAOCAQEARxkP3nTGmZev/K0oXnWO6y1n7k57K9cM +//bey1WiCuFMVGWTYGufEpytXoMs61quwOQt9ABjHbjAbPLPSbtNk28GpgoiskliCE7/yMgUsogW +XecB5BKV5UU0s4tpvc+0hY91UZ59Ojg6FEgSxvunOxqNDYJAB+gECJChicsZUN/KHAG8HQQZexB2 +lzvukJDKxA4fFm517zP4029bHpbj4HR3dHuKom4t3XbWOTCC8KucUvIqx69JXn7HaOWCgchqJ/kn +iCrVWFCVH/A7HFe7fRQ5YiuayZSSKqMiDP+JJn1fIytH1xUdqWqeUQ0qUZ6B+dQ7XnASfxAynB67 +nfhmqA== +-----END CERTIFICATE----- + +UTN USERFirst Object Root CA +============================ +-----BEGIN CERTIFICATE----- +MIIEZjCCA06gAwIBAgIQRL4Mi1AAJLQR0zYt4LNfGzANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UE +BhMCVVMxCzAJBgNVBAgTAlVUMRcwFQYDVQQHEw5TYWx0IExha2UgQ2l0eTEeMBwGA1UEChMVVGhl +IFVTRVJUUlVTVCBOZXR3b3JrMSEwHwYDVQQLExhodHRwOi8vd3d3LnVzZXJ0cnVzdC5jb20xHTAb +BgNVBAMTFFVUTi1VU0VSRmlyc3QtT2JqZWN0MB4XDTk5MDcwOTE4MzEyMFoXDTE5MDcwOTE4NDAz +NlowgZUxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJVVDEXMBUGA1UEBxMOU2FsdCBMYWtlIENpdHkx +HjAcBgNVBAoTFVRoZSBVU0VSVFJVU1QgTmV0d29yazEhMB8GA1UECxMYaHR0cDovL3d3dy51c2Vy +dHJ1c3QuY29tMR0wGwYDVQQDExRVVE4tVVNFUkZpcnN0LU9iamVjdDCCASIwDQYJKoZIhvcNAQEB +BQADggEPADCCAQoCggEBAM6qgT+jo2F4qjEAVZURnicPHxzfOpuCaDDASmEd8S8O+r5596Uj71VR +loTN2+O5bj4x2AogZ8f02b+U60cEPgLOKqJdhwQJ9jCdGIqXsqoc/EHSoTbL+z2RuufZcDX65OeQ +w5ujm9M89RKZd7G3CeBo5hy485RjiGpq/gt2yb70IuRnuasaXnfBhQfdDWy/7gbHd2pBnqcP1/vu +lBe3/IW+pKvEHDHd17bR5PDv3xaPslKT16HUiaEHLr/hARJCHhrh2JU022R5KP+6LhHC5ehbkkj7 +RwvCbNqtMoNB86XlQXD9ZZBt+vpRxPm9lisZBCzTbafc8H9vg2XiaquHhnUCAwEAAaOBrzCBrDAL +BgNVHQ8EBAMCAcYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQU2u1kdBScFDyr3ZmpvVsoTYs8 +ydgwQgYDVR0fBDswOTA3oDWgM4YxaHR0cDovL2NybC51c2VydHJ1c3QuY29tL1VUTi1VU0VSRmly +c3QtT2JqZWN0LmNybDApBgNVHSUEIjAgBggrBgEFBQcDAwYIKwYBBQUHAwgGCisGAQQBgjcKAwQw +DQYJKoZIhvcNAQEFBQADggEBAAgfUrE3RHjb/c652pWWmKpVZIC1WkDdIaXFwfNfLEzIR1pp6ujw +NTX00CXzyKakh0q9G7FzCL3Uw8q2NbtZhncxzaeAFK4T7/yxSPlrJSUtUbYsbUXBmMiKVl0+7kNO +PmsnjtA6S4ULX9Ptaqd1y9Fahy85dRNacrACgZ++8A+EVCBibGnU4U3GDZlDAQ0Slox4nb9QorFE +qmrPF3rPbw/U+CRVX/A0FklmPlBGyWNxODFiuGK581OtbLUrohKqGU8J2l7nk8aOFAj+8DCAGKCG +hU3IfdeLA/5u1fedFqySLKAj5ZyRUh+U3xeUc8OzwcFxBSAAeL0TUh2oPs0AH8g= +-----END CERTIFICATE----- + +Camerfirma Chambers of Commerce Root +==================================== +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBADANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEiMCAGA1UEAxMZQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdDAeFw0wMzA5MzAx +NjEzNDNaFw0zNzA5MzAxNjEzNDRaMH8xCzAJBgNVBAYTAkVVMScwJQYDVQQKEx5BQyBDYW1lcmZp +cm1hIFNBIENJRiBBODI3NDMyODcxIzAhBgNVBAsTGmh0dHA6Ly93d3cuY2hhbWJlcnNpZ24ub3Jn +MSIwIAYDVQQDExlDaGFtYmVycyBvZiBDb21tZXJjZSBSb290MIIBIDANBgkqhkiG9w0BAQEFAAOC +AQ0AMIIBCAKCAQEAtzZV5aVdGDDg2olUkfzIx1L4L1DZ77F1c2VHfRtbunXF/KGIJPov7coISjlU +xFF6tdpg6jg8gbLL8bvZkSM/SAFwdakFKq0fcfPJVD0dBmpAPrMMhe5cG3nCYsS4No41XQEMIwRH +NaqbYE6gZj3LJgqcQKH0XZi/caulAGgq7YN6D6IUtdQis4CwPAxaUWktWBiP7Zme8a7ileb2R6jW +DA+wWFjbw2Y3npuRVDM30pQcakjJyfKl2qUMI/cjDpwyVV5xnIQFUZot/eZOKjRa3spAN2cMVCFV +d9oKDMyXroDclDZK9D7ONhMeU+SsTjoF7Nuucpw4i9A5O4kKPnf+dQIBA6OCAUQwggFAMBIGA1Ud +EwEB/wQIMAYBAf8CAQwwPAYDVR0fBDUwMzAxoC+gLYYraHR0cDovL2NybC5jaGFtYmVyc2lnbi5v +cmcvY2hhbWJlcnNyb290LmNybDAdBgNVHQ4EFgQU45T1sU3p26EpW1eLTXYGduHRooowDgYDVR0P +AQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzAnBgNVHREEIDAegRxjaGFtYmVyc3Jvb3RAY2hh +bWJlcnNpZ24ub3JnMCcGA1UdEgQgMB6BHGNoYW1iZXJzcm9vdEBjaGFtYmVyc2lnbi5vcmcwWAYD +VR0gBFEwTzBNBgsrBgEEAYGHLgoDATA+MDwGCCsGAQUFBwIBFjBodHRwOi8vY3BzLmNoYW1iZXJz +aWduLm9yZy9jcHMvY2hhbWJlcnNyb290Lmh0bWwwDQYJKoZIhvcNAQEFBQADggEBAAxBl8IahsAi +fJ/7kPMa0QOx7xP5IV8EnNrJpY0nbJaHkb5BkAFyk+cefV/2icZdp0AJPaxJRUXcLo0waLIJuvvD +L8y6C98/d3tGfToSJI6WjzwFCm/SlCgdbQzALogi1djPHRPH8EjX1wWnz8dHnjs8NMiAT9QUu/wN +UPf6s+xCX6ndbcj0dc97wXImsQEcXCz9ek60AcUFV7nnPKoF2YjpB0ZBzu9Bga5Y34OirsrXdx/n +ADydb47kMgkdTXg0eDQ8lJsm7U9xxhl6vSAiSFr+S30Dt+dYvsYyTnQeaN2oaFuzPu5ifdmA6Ap1 +erfutGWaIZDgqtCYvDi1czyL+Nw= +-----END CERTIFICATE----- + +Camerfirma Global Chambersign Root +================================== +-----BEGIN CERTIFICATE----- +MIIExTCCA62gAwIBAgIBADANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMe +QUMgQ2FtZXJmaXJtYSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1i +ZXJzaWduLm9yZzEgMB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwHhcNMDMwOTMwMTYx +NDE4WhcNMzcwOTMwMTYxNDE4WjB9MQswCQYDVQQGEwJFVTEnMCUGA1UEChMeQUMgQ2FtZXJmaXJt +YSBTQSBDSUYgQTgyNzQzMjg3MSMwIQYDVQQLExpodHRwOi8vd3d3LmNoYW1iZXJzaWduLm9yZzEg +MB4GA1UEAxMXR2xvYmFsIENoYW1iZXJzaWduIFJvb3QwggEgMA0GCSqGSIb3DQEBAQUAA4IBDQAw +ggEIAoIBAQCicKLQn0KuWxfH2H3PFIP8T8mhtxOviteePgQKkotgVvq0Mi+ITaFgCPS3CU6gSS9J +1tPfnZdan5QEcOw/Wdm3zGaLmFIoCQLfxS+EjXqXd7/sQJ0lcqu1PzKY+7e3/HKE5TWH+VX6ox8O +by4o3Wmg2UIQxvi1RMLQQ3/bvOSiPGpVeAp3qdjqGTK3L/5cPxvusZjsyq16aUXjlg9V9ubtdepl +6DJWk0aJqCWKZQbua795B9Dxt6/tLE2Su8CoX6dnfQTyFQhwrJLWfQTSM/tMtgsL+xrJxI0DqX5c +8lCrEqWhz0hQpe/SyBoT+rB/sYIcd2oPX9wLlY/vQ37mRQklAgEDo4IBUDCCAUwwEgYDVR0TAQH/ +BAgwBgEB/wIBDDA/BgNVHR8EODA2MDSgMqAwhi5odHRwOi8vY3JsLmNoYW1iZXJzaWduLm9yZy9j +aGFtYmVyc2lnbnJvb3QuY3JsMB0GA1UdDgQWBBRDnDafsJ4wTcbOX60Qq+UDpfqpFDAOBgNVHQ8B +Af8EBAMCAQYwEQYJYIZIAYb4QgEBBAQDAgAHMCoGA1UdEQQjMCGBH2NoYW1iZXJzaWducm9vdEBj +aGFtYmVyc2lnbi5vcmcwKgYDVR0SBCMwIYEfY2hhbWJlcnNpZ25yb290QGNoYW1iZXJzaWduLm9y +ZzBbBgNVHSAEVDBSMFAGCysGAQQBgYcuCgEBMEEwPwYIKwYBBQUHAgEWM2h0dHA6Ly9jcHMuY2hh +bWJlcnNpZ24ub3JnL2Nwcy9jaGFtYmVyc2lnbnJvb3QuaHRtbDANBgkqhkiG9w0BAQUFAAOCAQEA +PDtwkfkEVCeR4e3t/mh/YV3lQWVPMvEYBZRqHN4fcNs+ezICNLUMbKGKfKX0j//U2K0X1S0E0T9Y +gOKBWYi+wONGkyT+kL0mojAt6JcmVzWJdJYY9hXiryQZVgICsroPFOrGimbBhkVVi76SvpykBMdJ +PJ7oKXqJ1/6v/2j1pReQvayZzKWGVwlnRtvWFsJG8eSpUPWP0ZIV018+xgBJOm5YstHRJw0lyDL4 +IBHNfTIzSJRUTN3cecQwn+uOuFW114hcxWokPbLTBQNRxgfvzBRydD1ucs4YKIxKoHflCStFREes +t2d/AYoFWpO+ocH/+OcOZ6RHSXZddZAa9SaP8A== +-----END CERTIFICATE----- + +NetLock Qualified (Class QA) Root +================================= +-----BEGIN CERTIFICATE----- +MIIG0TCCBbmgAwIBAgIBezANBgkqhkiG9w0BAQUFADCByTELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMUIwQAYDVQQDEzlOZXRMb2NrIE1pbm9zaXRldHQgS296amVn +eXpvaSAoQ2xhc3MgUUEpIFRhbnVzaXR2YW55a2lhZG8xHjAcBgkqhkiG9w0BCQEWD2luZm9AbmV0 +bG9jay5odTAeFw0wMzAzMzAwMTQ3MTFaFw0yMjEyMTUwMTQ3MTFaMIHJMQswCQYDVQQGEwJIVTER +MA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRvbnNhZ2kgS2Z0 +LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxQjBABgNVBAMTOU5ldExvY2sgTWlub3NpdGV0 +dCBLb3pqZWd5em9pIChDbGFzcyBRQSkgVGFudXNpdHZhbnlraWFkbzEeMBwGCSqGSIb3DQEJARYP +aW5mb0BuZXRsb2NrLmh1MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx1Ilstg91IRV +CacbvWy5FPSKAtt2/GoqeKvld/Bu4IwjZ9ulZJm53QE+b+8tmjwi8F3JV6BVQX/yQ15YglMxZc4e +8ia6AFQer7C8HORSjKAyr7c3sVNnaHRnUPYtLmTeriZ539+Zhqurf4XsoPuAzPS4DB6TRWO53Lhb +m+1bOdRfYrCnjnxmOCyqsQhjF2d9zL2z8cM/z1A57dEZgxXbhxInlrfa6uWdvLrqOU+L73Sa58XQ +0uqGURzk/mQIKAR5BevKxXEOC++r6uwSEaEYBTJp0QwsGj0lmT+1fMptsK6ZmfoIYOcZwvK9UdPM +0wKswREMgM6r3JSda6M5UzrWhQIDAMV9o4ICwDCCArwwEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV +HQ8BAf8EBAMCAQYwggJ1BglghkgBhvhCAQ0EggJmFoICYkZJR1lFTEVNISBFemVuIHRhbnVzaXR2 +YW55IGEgTmV0TG9jayBLZnQuIE1pbm9zaXRldHQgU3pvbGdhbHRhdGFzaSBTemFiYWx5emF0YWJh +biBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBBIG1pbm9zaXRldHQgZWxla3Ryb25p +a3VzIGFsYWlyYXMgam9naGF0YXMgZXJ2ZW55ZXN1bGVzZW5laywgdmFsYW1pbnQgZWxmb2dhZGFz +YW5hayBmZWx0ZXRlbGUgYSBNaW5vc2l0ZXR0IFN6b2xnYWx0YXRhc2kgU3phYmFseXphdGJhbiwg +YXogQWx0YWxhbm9zIFN6ZXJ6b2Rlc2kgRmVsdGV0ZWxla2JlbiBlbG9pcnQgZWxsZW5vcnplc2kg +ZWxqYXJhcyBtZWd0ZXRlbGUuIEEgZG9rdW1lbnR1bW9rIG1lZ3RhbGFsaGF0b2sgYSBodHRwczov +L3d3dy5uZXRsb2NrLmh1L2RvY3MvIGNpbWVuIHZhZ3kga2VyaGV0b2sgYXogaW5mb0BuZXRsb2Nr +Lm5ldCBlLW1haWwgY2ltZW4uIFdBUk5JTkchIFRoZSBpc3N1YW5jZSBhbmQgdGhlIHVzZSBvZiB0 +aGlzIGNlcnRpZmljYXRlIGFyZSBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIFF1YWxpZmllZCBDUFMg +YXZhaWxhYmxlIGF0IGh0dHBzOi8vd3d3Lm5ldGxvY2suaHUvZG9jcy8gb3IgYnkgZS1tYWlsIGF0 +IGluZm9AbmV0bG9jay5uZXQwHQYDVR0OBBYEFAlqYhaSsFq7VQ7LdTI6MuWyIckoMA0GCSqGSIb3 +DQEBBQUAA4IBAQCRalCc23iBmz+LQuM7/KbD7kPgz/PigDVJRXYC4uMvBcXxKufAQTPGtpvQMznN +wNuhrWw3AkxYQTvyl5LGSKjN5Yo5iWH5Upfpvfb5lHTocQ68d4bDBsxafEp+NFAwLvt/MpqNPfMg +W/hqyobzMUwsWYACff44yTB1HLdV47yfuqhthCgFdbOLDcCRVCHnpgu0mfVRQdzNo0ci2ccBgcTc +R08m6h/t280NmPSjnLRzMkqWmf68f8glWPhY83ZmiVSkpj7EUFy6iRiCdUgh0k8T6GB+B3bbELVR +5qq5aKrN9p2QdRLqOBrKROi3macqaJVmlaut74nLYKkGEsaUR+ko +-----END CERTIFICATE----- + +NetLock Notary (Class A) Root +============================= +-----BEGIN CERTIFICATE----- +MIIGfTCCBWWgAwIBAgICAQMwDQYJKoZIhvcNAQEEBQAwga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQI +EwdIdW5nYXJ5MREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 +dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9j +ayBLb3pqZWd5em9pIChDbGFzcyBBKSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNDIzMTQ0N1oX +DTE5MDIxOTIzMTQ0N1owga8xCzAJBgNVBAYTAkhVMRAwDgYDVQQIEwdIdW5nYXJ5MREwDwYDVQQH +EwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6dG9uc2FnaSBLZnQuMRowGAYD +VQQLExFUYW51c2l0dmFueWtpYWRvazE2MDQGA1UEAxMtTmV0TG9jayBLb3pqZWd5em9pIChDbGFz +cyBBKSBUYW51c2l0dmFueWtpYWRvMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAvHSM +D7tM9DceqQWC2ObhbHDqeLVu0ThEDaiDzl3S1tWBxdRL51uUcCbbO51qTGL3cfNk1mE7PetzozfZ +z+qMkjvN9wfcZnSX9EUi3fRc4L9t875lM+QVOr/bmJBVOMTtplVjC7B4BPTjbsE/jvxReB+SnoPC +/tmwqcm8WgD/qaiYdPv2LD4VOQ22BFWoDpggQrOxJa1+mm9dU7GrDPzr4PN6s6iz/0b2Y6LYOph7 +tqyF/7AlT3Rj5xMHpQqPBffAZG9+pyeAlt7ULoZgx2srXnN7F+eRP2QM2EsiNCubMvJIH5+hCoR6 +4sKtlz2O1cH5VqNQ6ca0+pii7pXmKgOM3wIDAQABo4ICnzCCApswDgYDVR0PAQH/BAQDAgAGMBIG +A1UdEwEB/wQIMAYBAf8CAQQwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaC +Ak1GSUdZRUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pv +bGdhbHRhdGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQu +IEEgaGl0ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2Vn +LWJpenRvc2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0 +ZXRlbGUgYXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFz +IGxlaXJhc2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBh +IGh0dHBzOi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVu +b3J6ZXNAbmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBh +bmQgdGhlIHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sg +Q1BTIGF2YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFp +bCBhdCBjcHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4IBAQBIJEb3ulZv+sgoA0BO5TE5 +ayZrU3/b39/zcT0mwBQOxmd7I6gMc90Bu8bKbjc5VdXHjFYgDigKDtIqpLBJUsY4B/6+CgmM0ZjP +ytoUMaFP0jn8DxEsQ8Pdq5PHVT5HfBgaANzze9jyf1JsIPQLX2lS9O74silg6+NJMSEN1rUQQeJB +CWziGppWS3cC9qCbmieH6FUpccKQn0V4GuEVZD3QDtigdp+uxdAu6tYPVuxkf1qbFFgBJ34TUMdr +KuZoPL9coAob4Q566eKAw+np9v1sEZ7Q5SgnK1QyQhSCdeZK8CtmdWOMovsEPoMOmzbwGOQmIMOM +8CgHrTwXZoi1/baI +-----END CERTIFICATE----- + +NetLock Business (Class B) Root +=============================== +-----BEGIN CERTIFICATE----- +MIIFSzCCBLSgAwIBAgIBaTANBgkqhkiG9w0BAQQFADCBmTELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMTIwMAYDVQQDEylOZXRMb2NrIFV6bGV0aSAoQ2xhc3MgQikg +VGFudXNpdHZhbnlraWFkbzAeFw05OTAyMjUxNDEwMjJaFw0xOTAyMjAxNDEwMjJaMIGZMQswCQYD +VQQGEwJIVTERMA8GA1UEBxMIQnVkYXBlc3QxJzAlBgNVBAoTHk5ldExvY2sgSGFsb3phdGJpenRv +bnNhZ2kgS2Z0LjEaMBgGA1UECxMRVGFudXNpdHZhbnlraWFkb2sxMjAwBgNVBAMTKU5ldExvY2sg +VXpsZXRpIChDbGFzcyBCKSBUYW51c2l0dmFueWtpYWRvMIGfMA0GCSqGSIb3DQEBAQUAA4GNADCB +iQKBgQCx6gTsIKAjwo84YM/HRrPVG/77uZmeBNwcf4xKgZjupNTKihe5In+DCnVMm8Bp2GQ5o+2S +o/1bXHQawEfKOml2mrriRBf8TKPV/riXiK+IA4kfpPIEPsgHC+b5sy96YhQJRhTKZPWLgLViqNhr +1nGTLbO/CVRY7QbrqHvcQ7GhaQIDAQABo4ICnzCCApswEgYDVR0TAQH/BAgwBgEB/wIBBDAOBgNV +HQ8BAf8EBAMCAAYwEQYJYIZIAYb4QgEBBAQDAgAHMIICYAYJYIZIAYb4QgENBIICURaCAk1GSUdZ +RUxFTSEgRXplbiB0YW51c2l0dmFueSBhIE5ldExvY2sgS2Z0LiBBbHRhbGFub3MgU3pvbGdhbHRh +dGFzaSBGZWx0ZXRlbGVpYmVuIGxlaXJ0IGVsamFyYXNvayBhbGFwamFuIGtlc3p1bHQuIEEgaGl0 +ZWxlc2l0ZXMgZm9seWFtYXRhdCBhIE5ldExvY2sgS2Z0LiB0ZXJtZWtmZWxlbG9zc2VnLWJpenRv +c2l0YXNhIHZlZGkuIEEgZGlnaXRhbGlzIGFsYWlyYXMgZWxmb2dhZGFzYW5hayBmZWx0ZXRlbGUg +YXogZWxvaXJ0IGVsbGVub3J6ZXNpIGVsamFyYXMgbWVndGV0ZWxlLiBBeiBlbGphcmFzIGxlaXJh +c2EgbWVndGFsYWxoYXRvIGEgTmV0TG9jayBLZnQuIEludGVybmV0IGhvbmxhcGphbiBhIGh0dHBz +Oi8vd3d3Lm5ldGxvY2submV0L2RvY3MgY2ltZW4gdmFneSBrZXJoZXRvIGF6IGVsbGVub3J6ZXNA +bmV0bG9jay5uZXQgZS1tYWlsIGNpbWVuLiBJTVBPUlRBTlQhIFRoZSBpc3N1YW5jZSBhbmQgdGhl +IHVzZSBvZiB0aGlzIGNlcnRpZmljYXRlIGlzIHN1YmplY3QgdG8gdGhlIE5ldExvY2sgQ1BTIGF2 +YWlsYWJsZSBhdCBodHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIG9yIGJ5IGUtbWFpbCBhdCBj +cHNAbmV0bG9jay5uZXQuMA0GCSqGSIb3DQEBBAUAA4GBAATbrowXr/gOkDFOzT4JwG06sPgzTEdM +43WIEJessDgVkcYplswhwG08pXTP2IKlOcNl40JwuyKQ433bNXbhoLXan3BukxowOR0w2y7jfLKR +stE3Kfq51hdcR0/jHTjrn9V7lagonhVK0dHQKwCXoOKSNitjrFgBazMpUIaD8QFI +-----END CERTIFICATE----- + +NetLock Express (Class C) Root +============================== +-----BEGIN CERTIFICATE----- +MIIFTzCCBLigAwIBAgIBaDANBgkqhkiG9w0BAQQFADCBmzELMAkGA1UEBhMCSFUxETAPBgNVBAcT +CEJ1ZGFwZXN0MScwJQYDVQQKEx5OZXRMb2NrIEhhbG96YXRiaXp0b25zYWdpIEtmdC4xGjAYBgNV +BAsTEVRhbnVzaXR2YW55a2lhZG9rMTQwMgYDVQQDEytOZXRMb2NrIEV4cHJlc3N6IChDbGFzcyBD +KSBUYW51c2l0dmFueWtpYWRvMB4XDTk5MDIyNTE0MDgxMVoXDTE5MDIyMDE0MDgxMVowgZsxCzAJ +BgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVzdDEnMCUGA1UEChMeTmV0TG9jayBIYWxvemF0Yml6 +dG9uc2FnaSBLZnQuMRowGAYDVQQLExFUYW51c2l0dmFueWtpYWRvazE0MDIGA1UEAxMrTmV0TG9j +ayBFeHByZXNzeiAoQ2xhc3MgQykgVGFudXNpdHZhbnlraWFkbzCBnzANBgkqhkiG9w0BAQEFAAOB +jQAwgYkCgYEA6+ywbGGKIyWvYCDj2Z/8kwvbXY2wobNAOoLO/XXgeDIDhlqGlZHtU/qdQPzm6N3Z +W3oDvV3zOwzDUXmbrVWg6dADEK8KuhRC2VImESLH0iDMgqSaqf64gXadarfSNnU+sYYJ9m5tfk63 +euyucYT2BDMIJTLrdKwWRMbkQJMdf60CAwEAAaOCAp8wggKbMBIGA1UdEwEB/wQIMAYBAf8CAQQw +DgYDVR0PAQH/BAQDAgAGMBEGCWCGSAGG+EIBAQQEAwIABzCCAmAGCWCGSAGG+EIBDQSCAlEWggJN +RklHWUVMRU0hIEV6ZW4gdGFudXNpdHZhbnkgYSBOZXRMb2NrIEtmdC4gQWx0YWxhbm9zIFN6b2xn +YWx0YXRhc2kgRmVsdGV0ZWxlaWJlbiBsZWlydCBlbGphcmFzb2sgYWxhcGphbiBrZXN6dWx0LiBB +IGhpdGVsZXNpdGVzIGZvbHlhbWF0YXQgYSBOZXRMb2NrIEtmdC4gdGVybWVrZmVsZWxvc3NlZy1i +aXp0b3NpdGFzYSB2ZWRpLiBBIGRpZ2l0YWxpcyBhbGFpcmFzIGVsZm9nYWRhc2FuYWsgZmVsdGV0 +ZWxlIGF6IGVsb2lydCBlbGxlbm9yemVzaSBlbGphcmFzIG1lZ3RldGVsZS4gQXogZWxqYXJhcyBs +ZWlyYXNhIG1lZ3RhbGFsaGF0byBhIE5ldExvY2sgS2Z0LiBJbnRlcm5ldCBob25sYXBqYW4gYSBo +dHRwczovL3d3dy5uZXRsb2NrLm5ldC9kb2NzIGNpbWVuIHZhZ3kga2VyaGV0byBheiBlbGxlbm9y +emVzQG5ldGxvY2submV0IGUtbWFpbCBjaW1lbi4gSU1QT1JUQU5UISBUaGUgaXNzdWFuY2UgYW5k +IHRoZSB1c2Ugb2YgdGhpcyBjZXJ0aWZpY2F0ZSBpcyBzdWJqZWN0IHRvIHRoZSBOZXRMb2NrIENQ +UyBhdmFpbGFibGUgYXQgaHR0cHM6Ly93d3cubmV0bG9jay5uZXQvZG9jcyBvciBieSBlLW1haWwg +YXQgY3BzQG5ldGxvY2submV0LjANBgkqhkiG9w0BAQQFAAOBgQAQrX/XDDKACtiG8XmYta3UzbM2 +xJZIwVzNmtkFLp++UOv0JhQQLdRmF/iewSf98e3ke0ugbLWrmldwpu2gpO0u9f38vf5NNwgMvOOW +gyL1SRt/Syu0VMGAfJlOHdCM7tCs5ZL6dVb+ZKATj7i4Fp1hBWeAyNDYpQcCNJgEjTME1A== +-----END CERTIFICATE----- + +XRamp Global CA Root +==================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE +BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj +dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx +HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg +U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu +IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx +foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE +zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs +AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry +xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC +AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc +/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n +nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz +8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +Go Daddy Class 2 CA +=================== +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY +VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG +A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD +ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 +qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j +YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY +vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O +BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o +atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu +MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim +PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt +I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI +Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b +vZ8= +-----END CERTIFICATE----- + +Starfield Class 2 CA +==================== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc +U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo +MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG +A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG +SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY +bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ +JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm +epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN +F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF +MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f +hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo +bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs +afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM +PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD +KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 +QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHyTCCBbGgAwIBAgIBATANBgkqhkiG9w0BAQUFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM2WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICUjCCAk4wDAYDVR0TBAUwAwEB/zALBgNVHQ8EBAMCAa4wHQYDVR0OBBYE +FE4L7xqkQFulF2mHMMo0aEPQQa7yMGQGA1UdHwRdMFswLKAqoCiGJmh0dHA6Ly9jZXJ0LnN0YXJ0 +Y29tLm9yZy9zZnNjYS1jcmwuY3JsMCugKaAnhiVodHRwOi8vY3JsLnN0YXJ0Y29tLm9yZy9zZnNj +YS1jcmwuY3JsMIIBXQYDVR0gBIIBVDCCAVAwggFMBgsrBgEEAYG1NwEBATCCATswLwYIKwYBBQUH +AgEWI2h0dHA6Ly9jZXJ0LnN0YXJ0Y29tLm9yZy9wb2xpY3kucGRmMDUGCCsGAQUFBwIBFilodHRw +Oi8vY2VydC5zdGFydGNvbS5vcmcvaW50ZXJtZWRpYXRlLnBkZjCB0AYIKwYBBQUHAgIwgcMwJxYg +U3RhcnQgQ29tbWVyY2lhbCAoU3RhcnRDb20pIEx0ZC4wAwIBARqBl0xpbWl0ZWQgTGlhYmlsaXR5 +LCByZWFkIHRoZSBzZWN0aW9uICpMZWdhbCBMaW1pdGF0aW9ucyogb2YgdGhlIFN0YXJ0Q29tIENl +cnRpZmljYXRpb24gQXV0aG9yaXR5IFBvbGljeSBhdmFpbGFibGUgYXQgaHR0cDovL2NlcnQuc3Rh +cnRjb20ub3JnL3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilT +dGFydENvbSBGcmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQUFAAOC +AgEAFmyZ9GYMNPXQhV59CuzaEE44HF7fpiUFS5Eyweg78T3dRAlbB0mKKctmArexmvclmAk8jhvh +3TaHK0u7aNM5Zj2gJsfyOZEdUauCe37Vzlrk4gNXcGmXCPleWKYK34wGmkUWFjgKXlf2Ysd6AgXm +vB618p70qSmD+LIU424oh0TDkBreOKk8rENNZEXO3SipXPJzewT4F+irsfMuXGRuczE6Eri8sxHk +fY+BUZo7jYn0TZNmezwD7dOaHZrzZVD1oNB1ny+v8OqCQ5j4aZyJecRDjkZy42Q2Eq/3JR44iZB3 +fsNrarnDy0RLrHiQi+fHLB5LEUTINFInzQpdn4XBidUaePKVEFMy3YCEZnXZtWgo+2EuvoSoOMCZ +EoalHmdkrQYuL6lwhceWD3yJZfWOQ1QOq92lgDmUYMA0yZZwLKMS9R9Ie70cfmu3nZD0Ijuu+Pwq +yvqCUqDvr0tVk+vBtfAii6w0TiYiBKGHLHVKt+V9E9e4DGTANtLJL4YSjCMJwRuCO3NJo2pXh5Tl +1njFmUNj403gdy3hZZlyaQQaRwnmDwFWJPsfvw55qVguucQJAX6Vum0ABj6y6koQOdjQK/W/7HW/ +lwLFCRsI3FU34oH7N4RDYiDK51ZLZer+bMEkkyShNOsF/5oirpt9P/FlUQqmMGqz9IgcgA38coro +g14= +-----END CERTIFICATE----- + +Taiwan GRCA +=========== +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG +EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X +DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv +dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN +w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 +BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O +1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO +htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov +J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 +Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t +B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB +O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 +lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV +HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 +09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ +TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj +Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 +Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU +D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz +DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk +Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk +7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ +CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy ++fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS +-----END CERTIFICATE----- + +Firmaprofesional Root CA +======================== +-----BEGIN CERTIFICATE----- +MIIEVzCCAz+gAwIBAgIBATANBgkqhkiG9w0BAQUFADCBnTELMAkGA1UEBhMCRVMxIjAgBgNVBAcT +GUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMTOUF1dG9yaWRhZCBkZSBDZXJ0aWZp +Y2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2ODEmMCQGCSqGSIb3DQEJARYXY2FA +ZmlybWFwcm9mZXNpb25hbC5jb20wHhcNMDExMDI0MjIwMDAwWhcNMTMxMDI0MjIwMDAwWjCBnTEL +MAkGA1UEBhMCRVMxIjAgBgNVBAcTGUMvIE11bnRhbmVyIDI0NCBCYXJjZWxvbmExQjBABgNVBAMT +OUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2MjYzNDA2 +ODEmMCQGCSqGSIb3DQEJARYXY2FAZmlybWFwcm9mZXNpb25hbC5jb20wggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDnIwNvbyOlXnjOlSztlB5uCp4Bx+ow0Syd3Tfom5h5VtP8c9/Qit5V +j1H5WuretXDE7aTt/6MNbg9kUDGvASdYrv5sp0ovFy3Tc9UTHI9ZpTQsHVQERc1ouKDAA6XPhUJH +lShbz++AbOCQl4oBPB3zhxAwJkh91/zpnZFx/0GaqUC1N5wpIE8fUuOgfRNtVLcK3ulqTgesrBlf +3H5idPayBQC6haD9HThuy1q7hryUZzM1gywfI834yJFxzJeL764P3CkDG8A563DtwW4O2GcLiam8 +NeTvtjS0pbbELaW+0MOUJEjb35bTALVmGotmBQ/dPz/LP6pemkr4tErvlTcbAgMBAAGjgZ8wgZww +KgYDVR0RBCMwIYYfaHR0cDovL3d3dy5maXJtYXByb2Zlc2lvbmFsLmNvbTASBgNVHRMBAf8ECDAG +AQH/AgEBMCsGA1UdEAQkMCKADzIwMDExMDI0MjIwMDAwWoEPMjAxMzEwMjQyMjAwMDBaMA4GA1Ud +DwEB/wQEAwIBBjAdBgNVHQ4EFgQUMwugZtHq2s7eYpMEKFK1FH84aLcwDQYJKoZIhvcNAQEFBQAD +ggEBAEdz/o0nVPD11HecJ3lXV7cVVuzH2Fi3AQL0M+2TUIiefEaxvT8Ub/GzR0iLjJcG1+p+o1wq +u00vR+L4OQbJnC4xGgN49Lw4xiKLMzHwFgQEffl25EvXwOaD7FnMP97/T2u3Z36mhoEyIwOdyPdf +wUpgpZKpsaSgYMN4h7Mi8yrrW6ntBas3D7Hi05V2Y1Z0jFhyGzflZKG+TQyTmAyX9odtsz/ny4Cm +7YjHX1BiAuiZdBbQ5rQ58SfLyEDW44YQqSMSkuBpQWOnryULwMWSyx6Yo1q6xTMPoJcB3X/ge9YG +VM+h4k0460tQtcsm9MracEpqoeJ5quGnM/b9Sh/22WA= +-----END CERTIFICATE----- + +Wells Fargo Root CA +=================== +-----BEGIN CERTIFICATE----- +MIID5TCCAs2gAwIBAgIEOeSXnjANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UEBhMCVVMxFDASBgNV +BAoTC1dlbGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhv +cml0eTEvMC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN +MDAxMDExMTY0MTI4WhcNMjEwMTE0MTY0MTI4WjCBgjELMAkGA1UEBhMCVVMxFDASBgNVBAoTC1dl +bGxzIEZhcmdvMSwwKgYDVQQLEyNXZWxscyBGYXJnbyBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTEv +MC0GA1UEAxMmV2VsbHMgRmFyZ28gUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQDVqDM7Jvk0/82bfuUER84A4n135zHCLielTWi5MbqNQ1mX +x3Oqfz1cQJ4F5aHiidlMuD+b+Qy0yGIZLEWukR5zcUHESxP9cMIlrCL1dQu3U+SlK93OvRw6esP3 +E48mVJwWa2uv+9iWsWCaSOAlIiR5NM4OJgALTqv9i86C1y8IcGjBqAr5dE8Hq6T54oN+J3N0Prj5 +OEL8pahbSCOz6+MlsoCultQKnMJ4msZoGK43YjdeUXWoWGPAUe5AeH6orxqg4bB4nVCMe+ez/I4j +sNtlAHCEAQgAFG5Uhpq6zPk3EPbg3oQtnaSFN9OH4xXQwReQfhkhahKpdv0SAulPIV4XAgMBAAGj +YTBfMA8GA1UdEwEB/wQFMAMBAf8wTAYDVR0gBEUwQzBBBgtghkgBhvt7hwcBCzAyMDAGCCsGAQUF +BwIBFiRodHRwOi8vd3d3LndlbGxzZmFyZ28uY29tL2NlcnRwb2xpY3kwDQYJKoZIhvcNAQEFBQAD +ggEBANIn3ZwKdyu7IvICtUpKkfnRLb7kuxpo7w6kAOnu5+/u9vnldKTC2FJYxHT7zmu1Oyl5GFrv +m+0fazbuSCUlFLZWohDo7qd/0D+j0MNdJu4HzMPBJCGHHt8qElNvQRbn7a6U+oxy+hNH8Dx+rn0R +OhPs7fpvcmR7nX1/Jv16+yWt6j4pf0zjAFcysLPp7VMX2YuyFA4w6OXVE8Zkr8QA1dhYJPz1j+zx +x32l2w8n0cbyQIjmH/ZhqPRCyLk306m+LFZ4wnKbWV01QIroTmMatukgalHizqSQ33ZwmVxwQ023 +tqcZZE6St8WRPH9IFmV7Fv3L/PvZ1dZPIWU7Sn9Ho/s= +-----END CERTIFICATE----- + +Swisscom Root CA 1 +================== +-----BEGIN CERTIFICATE----- +MIIF2TCCA8GgAwIBAgIQXAuFXAvnWUHfV8w/f52oNjANBgkqhkiG9w0BAQUFADBkMQswCQYDVQQG +EwJjaDERMA8GA1UEChMIU3dpc3Njb20xJTAjBgNVBAsTHERpZ2l0YWwgQ2VydGlmaWNhdGUgU2Vy +dmljZXMxGzAZBgNVBAMTElN3aXNzY29tIFJvb3QgQ0EgMTAeFw0wNTA4MTgxMjA2MjBaFw0yNTA4 +MTgyMjA2MjBaMGQxCzAJBgNVBAYTAmNoMREwDwYDVQQKEwhTd2lzc2NvbTElMCMGA1UECxMcRGln +aXRhbCBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczEbMBkGA1UEAxMSU3dpc3Njb20gUm9vdCBDQSAxMIIC +IjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEA0LmwqAzZuz8h+BvVM5OAFmUgdbI9m2BtRsiM +MW8Xw/qabFbtPMWRV8PNq5ZJkCoZSx6jbVfd8StiKHVFXqrWW/oLJdihFvkcxC7mlSpnzNApbjyF +NDhhSbEAn9Y6cV9Nbc5fuankiX9qUvrKm/LcqfmdmUc/TilftKaNXXsLmREDA/7n29uj/x2lzZAe +AR81sH8A25Bvxn570e56eqeqDFdvpG3FEzuwpdntMhy0XmeLVNxzh+XTF3xmUHJd1BpYwdnP2IkC +b6dJtDZd0KTeByy2dbcokdaXvij1mB7qWybJvbCXc9qukSbraMH5ORXWZ0sKbU/Lz7DkQnGMU3nn +7uHbHaBuHYwadzVcFh4rUx80i9Fs/PJnB3r1re3WmquhsUvhzDdf/X/NTa64H5xD+SpYVUNFvJbN +cA78yeNmuk6NO4HLFWR7uZToXTNShXEuT46iBhFRyePLoW4xCGQMwtI89Tbo19AOeCMgkckkKmUp +WyL3Ic6DXqTz3kvTaI9GdVyDCW4pa8RwjPWd1yAv/0bSKzjCL3UcPX7ape8eYIVpQtPM+GP+HkM5 +haa2Y0EQs3MevNP6yn0WR+Kn1dCjigoIlmJWbjTb2QK5MHXjBNLnj8KwEUAKrNVxAmKLMb7dxiNY +MUJDLXT5xp6mig/p/r+D5kNXJLrvRjSq1xIBOO0CAwEAAaOBhjCBgzAOBgNVHQ8BAf8EBAMCAYYw +HQYDVR0hBBYwFDASBgdghXQBUwABBgdghXQBUwABMBIGA1UdEwEB/wQIMAYBAf8CAQcwHwYDVR0j +BBgwFoAUAyUv3m+CATpcLNwroWm1Z9SM0/0wHQYDVR0OBBYEFAMlL95vggE6XCzcK6FptWfUjNP9 +MA0GCSqGSIb3DQEBBQUAA4ICAQA1EMvspgQNDQ/NwNurqPKIlwzfky9NfEBWMXrrpA9gzXrzvsMn +jgM+pN0S734edAY8PzHyHHuRMSG08NBsl9Tpl7IkVh5WwzW9iAUPWxAaZOHHgjD5Mq2eUCzneAXQ +MbFamIp1TpBcahQq4FJHgmDmHtqBsfsUC1rxn9KVuj7QG9YVHaO+htXbD8BJZLsuUBlL0iT43R4H +VtA4oJVwIHaM190e3p9xxCPvgxNcoyQVTSlAPGrEqdi3pkSlDfTgnXceQHAm/NrZNuR55LU/vJtl +vrsRls/bxig5OgjOR1tTWsWZ/l2p3e9M1MalrQLmjAcSHm8D0W+go/MpvRLHUKKwf4ipmXeascCl +OS5cfGniLLDqN2qk4Vrh9VDlg++luyqI54zb/W1elxmofmZ1a3Hqv7HHb6D0jqTsNFFbjCYDcKF3 +1QESVwA12yPeDooomf2xEG9L/zgtYE4snOtnta1J7ksfrK/7DZBaZmBwXarNeNQk7shBoJMBkpxq +nvy5JMWzFYJ+vq6VK+uxwNrjAWALXmmshFZhvnEX/h0TD/7Gh0Xp/jKgGg0TpJRVcaUWi7rKibCy +x/yP2FS1k2Kdzs9Z+z0YzirLNRWCXf9UIltxUvu3yf5gmwBBZPCqKuy2QkPOiWaByIufOVQDJdMW +NY6E0F/6MBr1mmz0DlP5OlvRHA== +-----END CERTIFICATE----- + +DigiCert Assured ID Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx +MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO +9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy +UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW +/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy +oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf +GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF +66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq +hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc +EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn +SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i +8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +DigiCert Global Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw +MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn +TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 +BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H +4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y +7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB +o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm +8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF +BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr +EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt +tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 +UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +DigiCert High Assurance EV Root CA +================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw +KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw +MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu +Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t +Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS +OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 +MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ +NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe +h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY +JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ +V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp +myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK +mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K +-----END CERTIFICATE----- + +Certplus Class 2 Primary CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE +BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN +OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy +dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR +5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ +Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO +YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e +e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME +CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ +YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t +L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD +P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R +TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ +7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW +//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 +l7+ijrRU +-----END CERTIFICATE----- + +DST Root CA X3 +============== +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK +ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X +DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 +cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT +rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 +UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy +xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d +utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ +MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug +dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE +GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw +RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS +fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +DST ACES CA X6 +============== +-----BEGIN CERTIFICATE----- +MIIECTCCAvGgAwIBAgIQDV6ZCtadt3js2AdWO4YV2TANBgkqhkiG9w0BAQUFADBbMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXRGlnaXRhbCBTaWduYXR1cmUgVHJ1c3QxETAPBgNVBAsTCERTVCBBQ0VT +MRcwFQYDVQQDEw5EU1QgQUNFUyBDQSBYNjAeFw0wMzExMjAyMTE5NThaFw0xNzExMjAyMTE5NTha +MFsxCzAJBgNVBAYTAlVTMSAwHgYDVQQKExdEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdDERMA8GA1UE +CxMIRFNUIEFDRVMxFzAVBgNVBAMTDkRTVCBBQ0VTIENBIFg2MIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAuT31LMmU3HWKlV1j6IR3dma5WZFcRt2SPp/5DgO0PWGSvSMmtWPuktKe1jzI +DZBfZIGxqAgNTNj50wUoUrQBJcWVHAx+PhCEdc/BGZFjz+iokYi5Q1K7gLFViYsx+tC3dr5BPTCa +pCIlF3PoHuLTrCq9Wzgh1SpL11V94zpVvddtawJXa+ZHfAjIgrrep4c9oW24MFbCswKBXy314pow +GCi4ZtPLAZZv6opFVdbgnf9nKxcCpk4aahELfrd755jWjHZvwTvbUJN+5dCOHze4vbrGn2zpfDPy +MjwmR/onJALJfh1biEITajV8fTXpLmaRcpPVMibEdPVTo7NdmvYJywIDAQABo4HIMIHFMA8GA1Ud +EwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgHGMB8GA1UdEQQYMBaBFHBraS1vcHNAdHJ1c3Rkc3Qu +Y29tMGIGA1UdIARbMFkwVwYKYIZIAWUDAgEBATBJMEcGCCsGAQUFBwIBFjtodHRwOi8vd3d3LnRy +dXN0ZHN0LmNvbS9jZXJ0aWZpY2F0ZXMvcG9saWN5L0FDRVMtaW5kZXguaHRtbDAdBgNVHQ4EFgQU +CXIGThhDD+XWzMNqizF7eI+og7gwDQYJKoZIhvcNAQEFBQADggEBAKPYjtay284F5zLNAdMEA+V2 +5FYrnJmQ6AgwbN99Pe7lv7UkQIRJ4dEorsTCOlMwiPH1d25Ryvr/ma8kXxug/fKshMrfqfBfBC6t +Fr8hlxCBPeP/h40y3JTlR4peahPJlJU90u7INJXQgNStMgiAVDzgvVJT11J8smk/f3rPanTK+gQq +nExaBqXpIK1FZg9p8d2/6eMyi/rgwYZNcjwu2JN4Cir42NInPRmJX1p7ijvMDNpRrscL9yuwNwXs +vFcj4jjSm2jzVhKIT0J8uDHEtdvkyCE06UgRNe76x5JXxZ805Mf29w4LTJxoeHtxMcfrHuBnQfO3 +oKfN5XozNmr6mis= +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 1 +============================================== +-----BEGIN CERTIFICATE----- +MIID+zCCAuOgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBtzE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGDAJUUjEP +MA0GA1UEBwwGQU5LQVJBMVYwVAYDVQQKDE0oYykgMjAwNSBUw5xSS1RSVVNUIEJpbGdpIMSwbGV0 +acWfaW0gdmUgQmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLjAeFw0wNTA1MTMx +MDI3MTdaFw0xNTAzMjIxMDI3MTdaMIG3MT8wPQYDVQQDDDZUw5xSS1RSVVNUIEVsZWt0cm9uaWsg +U2VydGlmaWthIEhpem1ldCBTYcSfbGF5xLFjxLFzxLExCzAJBgNVBAYMAlRSMQ8wDQYDVQQHDAZB +TktBUkExVjBUBgNVBAoMTShjKSAyMDA1IFTDnFJLVFJVU1QgQmlsZ2kgxLBsZXRpxZ9pbSB2ZSBC +aWxpxZ9pbSBHw7x2ZW5sacSfaSBIaXptZXRsZXJpIEEuxZ4uMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEAylIF1mMD2Bxf3dJ7XfIMYGFbazt0K3gNfUW9InTojAPBxhEqPZW8qZSwu5GX +yGl8hMW0kWxsE2qkVa2kheiVfrMArwDCBRj1cJ02i67L5BuBf5OI+2pVu32Fks66WJ/bMsW9Xe8i +Si9BB35JYbOG7E6mQW6EvAPs9TscyB/C7qju6hJKjRTP8wrgUDn5CDX4EVmt5yLqS8oUBt5CurKZ +8y1UiBAG6uEaPj1nH/vO+3yC6BFdSsG5FOpU2WabfIl9BJpiyelSPJ6c79L1JuTm5Rh8i27fbMx4 +W09ysstcP4wFjdFMjK2Sx+F4f2VsSQZQLJ4ywtdKxnWKWU51b0dewQIDAQABoxAwDjAMBgNVHRME +BTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAV9VX/N5aAWSGk/KEVTCD21F/aAyT8z5Aa9CEKmu46 +sWrv7/hg0Uw2ZkUd82YCdAR7kjCo3gp2D++Vbr3JN+YaDayJSFvMgzbC9UZcWYJWtNX+I7TYVBxE +q8Sn5RTOPEFhfEPmzcSBCYsk+1Ql1haolgxnB2+zUEfjHCQo3SqYpGH+2+oSN7wBGjSFvW5P55Fy +B0SFHljKVETd96y5y4khctuPwGkplyqjrhgjlxxBKot8KsF8kOipKMDTkcatKIdAaLX/7KfS0zgY +nNN9aV3wxqUeJBujR/xpB2jn5Jq07Q+hh4cCzofSSE7hvP/L8XKSRGQDJereW26fyfJOrN3H +-----END CERTIFICATE----- + +TURKTRUST Certificate Services Provider Root 2 +============================================== +-----BEGIN CERTIFICATE----- +MIIEPDCCAySgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwHhcN +MDUxMTA3MTAwNzU3WhcNMTUwOTE2MTAwNzU3WjCBvjE/MD0GA1UEAww2VMOcUktUUlVTVCBFbGVr +dHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEPMA0G +A1UEBwwGQW5rYXJhMV0wWwYDVQQKDFRUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUgQmls +acWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgS2FzxLFtIDIwMDUwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCpNn7DkUNMwxmYCMjHWHtPFoylzkkBH3MOrHUTpvqe +LCDe2JAOCtFp0if7qnefJ1Il4std2NiDUBd9irWCPwSOtNXwSadktx4uXyCcUHVPr+G1QRT0mJKI +x+XlZEdhR3n9wFHxwZnn3M5q+6+1ATDcRhzviuyV79z/rxAc653YsKpqhRgNF8k+v/Gb0AmJQv2g +QrSdiVFVKc8bcLyEVK3BEx+Y9C52YItdP5qtygy/p1Zbj3e41Z55SZI/4PGXJHpsmxcPbe9TmJEr +5A++WXkHeLuXlfSfadRYhwqp48y2WBmfJiGxxFmNskF1wK1pzpwACPI2/z7woQ8arBT9pmAPAgMB +AAGjQzBBMB0GA1UdDgQWBBTZN7NOBf3Zz58SFq62iS/rJTqIHDAPBgNVHQ8BAf8EBQMDBwYAMA8G +A1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAHJglrfJ3NgpXiOFX7KzLXb7iNcX/ntt +Rbj2hWyfIvwqECLsqrkw9qtY1jkQMZkpAL2JZkH7dN6RwRgLn7Vhy506vvWolKMiVW4XSf/SKfE4 +Jl3vpao6+XF75tpYHdN0wgH6PmlYX63LaL4ULptswLbcoCb6dxriJNoaN+BnrdFzgw2lGh1uEpJ+ +hGIAF728JRhX8tepb1mIvDS3LoV4nZbcFMMsilKbloxSZj2GFotHuFEJjOp9zYhys2AzsfAKRO8P +9Qk3iCQOLGsgOqL6EfJANZxEaGM7rDNvY7wsu/LSy3Z9fYjYHcgFHW68lKlmjHdxx/qR+i9Rnuk5 +UrbnBEI= +-----END CERTIFICATE----- + +SwissSign Platinum CA - G2 +========================== +-----BEGIN CERTIFICATE----- +MIIFwTCCA6mgAwIBAgIITrIAZwwDXU8wDQYJKoZIhvcNAQEFBQAwSTELMAkGA1UEBhMCQ0gxFTAT +BgNVBAoTDFN3aXNzU2lnbiBBRzEjMCEGA1UEAxMaU3dpc3NTaWduIFBsYXRpbnVtIENBIC0gRzIw +HhcNMDYxMDI1MDgzNjAwWhcNMzYxMDI1MDgzNjAwWjBJMQswCQYDVQQGEwJDSDEVMBMGA1UEChMM +U3dpc3NTaWduIEFHMSMwIQYDVQQDExpTd2lzc1NpZ24gUGxhdGludW0gQ0EgLSBHMjCCAiIwDQYJ +KoZIhvcNAQEBBQADggIPADCCAgoCggIBAMrfogLi2vj8Bxax3mCq3pZcZB/HL37PZ/pEQtZ2Y5Wu +669yIIpFR4ZieIbWIDkm9K6j/SPnpZy1IiEZtzeTIsBQnIJ71NUERFzLtMKfkr4k2HtnIuJpX+UF +eNSH2XFwMyVTtIc7KZAoNppVRDBopIOXfw0enHb/FZ1glwCNioUD7IC+6ixuEFGSzH7VozPY1kne +WCqv9hbrS3uQMpe5up1Y8fhXSQQeol0GcN1x2/ndi5objM89o03Oy3z2u5yg+gnOI2Ky6Q0f4nIo +j5+saCB9bzuohTEJfwvH6GXp43gOCWcwizSC+13gzJ2BbWLuCB4ELE6b7P6pT1/9aXjvCR+htL/6 +8++QHkwFix7qepF6w9fl+zC8bBsQWJj3Gl/QKTIDE0ZNYWqFTFJ0LwYfexHihJfGmfNtf9dng34T +aNhxKFrYzt3oEBSa/m0jh26OWnA81Y0JAKeqvLAxN23IhBQeW71FYyBrS3SMvds6DsHPWhaPpZjy +domyExI7C3d3rLvlPClKknLKYRorXkzig3R3+jVIeoVNjZpTxN94ypeRSCtFKwH3HBqi7Ri6Cr2D ++m+8jVeTO9TUps4e8aCxzqv9KyiaTxvXw3LbpMS/XUz13XuWae5ogObnmLo2t/5u7Su9IPhlGdpV +CX4l3P5hYnL5fhgC72O00Puv5TtjjGePAgMBAAGjgawwgakwDgYDVR0PAQH/BAQDAgEGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFFCvzAeHFUdvOMW0ZdHelarp35zMMB8GA1UdIwQYMBaAFFCv +zAeHFUdvOMW0ZdHelarp35zMMEYGA1UdIAQ/MD0wOwYJYIV0AVkBAQEBMC4wLAYIKwYBBQUHAgEW +IGh0dHA6Ly9yZXBvc2l0b3J5LnN3aXNzc2lnbi5jb20vMA0GCSqGSIb3DQEBBQUAA4ICAQAIhab1 +Fgz8RBrBY+D5VUYI/HAcQiiWjrfFwUF1TglxeeVtlspLpYhg0DB0uMoI3LQwnkAHFmtllXcBrqS3 +NQuB2nEVqXQXOHtYyvkv+8Bldo1bAbl93oI9ZLi+FHSjClTTLJUYFzX1UWs/j6KWYTl4a0vlpqD4 +U99REJNi54Av4tHgvI42Rncz7Lj7jposiU0xEQ8mngS7twSNC/K5/FqdOxa3L8iYq/6KUFkuozv8 +KV2LwUvJ4ooTHbG/u0IdUt1O2BReEMYxB+9xJ/cbOQncguqLs5WGXv312l0xpuAxtpTmREl0xRbl +9x8DYSjFyMsSoEJL+WuICI20MhjzdZ/EfwBPBZWcoxcCw7NTm6ogOSkrZvqdr16zktK1puEa+S1B +aYEUtLS17Yk9zvupnTVCRLEcFHOBzyoBNZox1S2PbYTfgE1X4z/FhHXaicYwu+uPyyIIoK6q8QNs +OktNCaUOcsZWayFCTiMlFGiudgp8DAdwZPmaL/YFOSbGDI8Zf0NebvRbFS/bYV3mZy8/CJT5YLSY +Mdp08YSTcU1f+2BY0fvEwW2JorsgH51xkcsymxM9Pn2SUjWskpSi0xjCfMfqr3YFFt1nJ8J+HAci +IfNAChs0B0QTwoRqjt8ZWr9/6x3iGjjRXK9HkmuAtTClyY3YqzGBH9/CZjfTk6mFhnll0g== +-----END CERTIFICATE----- + +SwissSign Gold CA - G2 +====================== +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw +EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN +MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp +c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq +t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C +jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg +vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF +ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR +AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend +jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO +peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR +7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi +GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 +OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm +5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr +44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf +Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m +Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp +mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk +vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf +KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br +NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj +viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +SwissSign Silver CA - G2 +======================== +-----BEGIN CERTIFICATE----- +MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT +BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X +DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 +aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 +N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm ++/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH +6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu +MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h +qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 +FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs +ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc +celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X +CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB +tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 +cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P +4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F +kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L +3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx +/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa +DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP +e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu +WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ +DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub +DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx +CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ +cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN +b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 +nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge +RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt +tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI +hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K +Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN +NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa +Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG +1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +thawte Primary Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 +MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg +SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv +KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT +FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs +oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ +1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc +q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K +aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p +afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF +AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE +uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 +jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH +z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G5 +============================================================ +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln +biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh +dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz +j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD +Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r +fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ +BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv +Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG +SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ +X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE +KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC +Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE +ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +SecureTrust CA +============== +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy +dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe +BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX +OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t +DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH +GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b +01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH +ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu +SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf +mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ +nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +Secure Global CA +================ +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH +bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg +MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg +Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx +YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ +bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g +8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV +HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi +0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn +oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA +MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ +OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn +CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 +3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +COMODO Certification Authority +============================== +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb +MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD +T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH ++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww +xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV +4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA +1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI +rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k +b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP +OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc +IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN ++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== +-----END CERTIFICATE----- + +Network Solutions Certificate Authority +======================================= +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG +EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr +IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx +MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx +jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT +aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT +crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc +/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB +AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv +bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA +A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q +4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ +GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD +ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +WellsSecure Public Root Certificate Authority +============================================= +-----BEGIN CERTIFICATE----- +MIIEvTCCA6WgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoM +F1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYw +NAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcN +MDcxMjEzMTcwNzU0WhcNMjIxMjE0MDAwNzU0WjCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dl +bGxzIEZhcmdvIFdlbGxzU2VjdXJlMRwwGgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYD +VQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDub7S9eeKPCCGeOARBJe+rWxxTkqxtnt3CxC5FlAM1 +iGd0V+PfjLindo8796jE2yljDpFoNoqXjopxaAkH5OjUDk/41itMpBb570OYj7OeUt9tkTmPOL13 +i0Nj67eT/DBMHAGTthP796EfvyXhdDcsHqRePGj4S78NuR4uNuip5Kf4D8uCdXw1LSLWwr8L87T8 +bJVhHlfXBIEyg1J55oNjz7fLY4sR4r1e6/aN7ZVyKLSsEmLpSjPmgzKuBXWVvYSV2ypcm44uDLiB +K0HmOFafSZtsdvqKXfcBeYF8wYNABf5x/Qw/zE5gCQ5lRxAvAcAFP4/4s0HvWkJ+We/SlwxlAgMB +AAGjggE0MIIBMDAPBgNVHRMBAf8EBTADAQH/MDkGA1UdHwQyMDAwLqAsoCqGKGh0dHA6Ly9jcmwu +cGtpLndlbGxzZmFyZ28uY29tL3dzcHJjYS5jcmwwDgYDVR0PAQH/BAQDAgHGMB0GA1UdDgQWBBQm +lRkQ2eihl5H/3BnZtQQ+0nMKajCBsgYDVR0jBIGqMIGngBQmlRkQ2eihl5H/3BnZtQQ+0nMKaqGB +i6SBiDCBhTELMAkGA1UEBhMCVVMxIDAeBgNVBAoMF1dlbGxzIEZhcmdvIFdlbGxzU2VjdXJlMRww +GgYDVQQLDBNXZWxscyBGYXJnbyBCYW5rIE5BMTYwNAYDVQQDDC1XZWxsc1NlY3VyZSBQdWJsaWMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHmCAQEwDQYJKoZIhvcNAQEFBQADggEBALkVsUSRzCPI +K0134/iaeycNzXK7mQDKfGYZUMbVmO2rvwNa5U3lHshPcZeG1eMd/ZDJPHV3V3p9+N701NX3leZ0 +bh08rnyd2wIDBSxxSyU+B+NemvVmFymIGjifz6pBA4SXa5M4esowRBskRDPQ5NHcKDj0E0M1NSlj +qHyita04pO2t/caaH/+Xc/77szWnk4bGdpEA5qxRFsQnMlzbc9qlk1eOPm01JghZ1edE13YgY+es +E2fDbbFwRnzVlhE9iW9dqKHrjQrawx0zbKPqZxmamX9LPYNRKh3KL4YMon4QLSvUFpULB6ouFJJJ +tylv2G0xffX8oRAHh84vWdw+WNs= +-----END CERTIFICATE----- + +COMODO ECC Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix +GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X +4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni +wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG +FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA +U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +IGC/A +===== +-----BEGIN CERTIFICATE----- +MIIEAjCCAuqgAwIBAgIFORFFEJQwDQYJKoZIhvcNAQEFBQAwgYUxCzAJBgNVBAYTAkZSMQ8wDQYD +VQQIEwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVE +Q1NTSTEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZy +MB4XDTAyMTIxMzE0MjkyM1oXDTIwMTAxNzE0MjkyMlowgYUxCzAJBgNVBAYTAkZSMQ8wDQYDVQQI +EwZGcmFuY2UxDjAMBgNVBAcTBVBhcmlzMRAwDgYDVQQKEwdQTS9TR0ROMQ4wDAYDVQQLEwVEQ1NT +STEOMAwGA1UEAxMFSUdDL0ExIzAhBgkqhkiG9w0BCQEWFGlnY2FAc2dkbi5wbS5nb3V2LmZyMIIB +IjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsh/R0GLFMzvABIaIs9z4iPf930Pfeo2aSVz2 +TqrMHLmh6yeJ8kbpO0px1R2OLc/mratjUMdUC24SyZA2xtgv2pGqaMVy/hcKshd+ebUyiHDKcMCW +So7kVc0dJ5S/znIq7Fz5cyD+vfcuiWe4u0dzEvfRNWk68gq5rv9GQkaiv6GFGvm/5P9JhfejcIYy +HF2fYPepraX/z9E0+X1bF8bc1g4oa8Ld8fUzaJ1O/Id8NhLWo4DoQw1VYZTqZDdH6nfK0LJYBcNd +frGoRpAxVs5wKpayMLh35nnAvSk7/ZR3TL0gzUEl4C7HG7vupARB0l2tEmqKm0f7yd1GQOGdPDPQ +tQIDAQABo3cwdTAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIBRjAVBgNVHSAEDjAMMAoGCCqB +egF5AQEBMB0GA1UdDgQWBBSjBS8YYFDCiQrdKyFP/45OqDAxNjAfBgNVHSMEGDAWgBSjBS8YYFDC +iQrdKyFP/45OqDAxNjANBgkqhkiG9w0BAQUFAAOCAQEABdwm2Pp3FURo/C9mOnTgXeQp/wYHE4RK +q89toB9RlPhJy3Q2FLwV3duJL92PoF189RLrn544pEfMs5bZvpwlqwN+Mw+VgQ39FuCIvjfwbF3Q +MZsyK10XZZOYYLxuj7GoPB7ZHPOpJkL5ZB3C55L29B5aqhlSXa/oovdgoPaN8In1buAKBQGVyYsg +Crpa/JosPL3Dt8ldeCUFP1YUmwza+zpI/pdpXsoQhvdOlgQITeywvl3cO45Pwf2aNjSaTFR+FwNI +lQgRHAdvhQh+XU3Endv7rs6y0bO4g2wdsrN58dhwmX7wEwLOXt1R0982gaEbeC9xs/FZTEYYKKuF +0mBWWg== +-----END CERTIFICATE----- + +Security Communication EV RootCA1 +================================= +-----BEGIN CERTIFICATE----- +MIIDfTCCAmWgAwIBAgIBADANBgkqhkiG9w0BAQUFADBgMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEqMCgGA1UECxMhU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBFViBSb290Q0ExMB4XDTA3MDYwNjAyMTIzMloXDTM3MDYwNjAyMTIzMlowYDELMAkGA1UE +BhMCSlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xKjAoBgNVBAsTIVNl +Y3VyaXR5IENvbW11bmljYXRpb24gRVYgUm9vdENBMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBALx/7FebJOD+nLpCeamIivqA4PUHKUPqjgo0No0c+qe1OXj/l3X3L+SqawSERMqm4miO +/VVQYg+kcQ7OBzgtQoVQrTyWb4vVog7P3kmJPdZkLjjlHmy1V4qe70gOzXppFodEtZDkBp2uoQSX +WHnvIEqCa4wiv+wfD+mEce3xDuS4GBPMVjZd0ZoeUWs5bmB2iDQL87PRsJ3KYeJkHcFGB7hj3R4z +ZbOOCVVSPbW9/wfrrWFVGCypaZhKqkDFMxRldAD5kd6vA0jFQFTcD4SQaCDFkpbcLuUCRarAX1T4 +bepJz11sS6/vmsJWXMY1VkJqMF/Cq/biPT+zyRGPMUzXn0kCAwEAAaNCMEAwHQYDVR0OBBYEFDVK +9U2vP9eCOKyrcWUXdYydVZPmMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqG +SIb3DQEBBQUAA4IBAQCoh+ns+EBnXcPBZsdAS5f8hxOQWsTvoMpfi7ent/HWtWS3irO4G8za+6xm +iEHO6Pzk2x6Ipu0nUBsCMCRGef4Eh3CXQHPRwMFXGZpppSeZq51ihPZRwSzJIxXYKLerJRO1RuGG +Av8mjMSIkh1W/hln8lXkgKNrnKt34VFxDSDbEJrbvXZ5B3eZKK2aXtqxT0QsNY6llsf9g/BYxnnW +mHyojf6GPgcWkuF75x3sM3Z+Qi5KhfmRiWiEA4Glm5q+4zfFVKtWOxgtQaQM+ELbmaDgcm+7XeEW +T1MKZPlO9L9OVL14bIjqv5wTJMJwaaJ/D8g8rQjJsJhAoyrniIPtd490 +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GA CA +=============================== +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE +BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG +A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH +bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD +VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw +IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 +IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 +Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg +Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD +d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ +/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R +LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm +MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 ++vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa +hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY +okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= +-----END CERTIFICATE----- + +S-TRUST Authentication and Encryption Root CA 2005 PN +===================================================== +-----BEGIN CERTIFICATE----- +MIIEezCCA2OgAwIBAgIQNxkY5lNUfBq1uMtZWts1tzANBgkqhkiG9w0BAQUFADCBrjELMAkGA1UE +BhMCREUxIDAeBgNVBAgTF0JhZGVuLVd1ZXJ0dGVtYmVyZyAoQlcpMRIwEAYDVQQHEwlTdHV0dGdh +cnQxKTAnBgNVBAoTIERldXRzY2hlciBTcGFya2Fzc2VuIFZlcmxhZyBHbWJIMT4wPAYDVQQDEzVT +LVRSVVNUIEF1dGhlbnRpY2F0aW9uIGFuZCBFbmNyeXB0aW9uIFJvb3QgQ0EgMjAwNTpQTjAeFw0w +NTA2MjIwMDAwMDBaFw0zMDA2MjEyMzU5NTlaMIGuMQswCQYDVQQGEwJERTEgMB4GA1UECBMXQmFk +ZW4tV3VlcnR0ZW1iZXJnIChCVykxEjAQBgNVBAcTCVN0dXR0Z2FydDEpMCcGA1UEChMgRGV1dHNj +aGVyIFNwYXJrYXNzZW4gVmVybGFnIEdtYkgxPjA8BgNVBAMTNVMtVFJVU1QgQXV0aGVudGljYXRp +b24gYW5kIEVuY3J5cHRpb24gUm9vdCBDQSAyMDA1OlBOMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEA2bVKwdMz6tNGs9HiTNL1toPQb9UY6ZOvJ44TzbUlNlA0EmQpoVXhOmCTnijJ4/Ob +4QSwI7+Vio5bG0F/WsPoTUzVJBY+h0jUJ67m91MduwwA7z5hca2/OnpYH5Q9XIHV1W/fuJvS9eXL +g3KSwlOyggLrra1fFi2SU3bxibYs9cEv4KdKb6AwajLrmnQDaHgTncovmwsdvs91DSaXm8f1Xgqf +eN+zvOyauu9VjxuapgdjKRdZYgkqeQd3peDRF2npW932kKvimAoA0SVtnteFhy+S8dF2g08LOlk3 +KC8zpxdQ1iALCvQm+Z845y2kuJuJja2tyWp9iRe79n+Ag3rm7QIDAQABo4GSMIGPMBIGA1UdEwEB +/wQIMAYBAf8CAQAwDgYDVR0PAQH/BAQDAgEGMCkGA1UdEQQiMCCkHjAcMRowGAYDVQQDExFTVFJv +bmxpbmUxLTIwNDgtNTAdBgNVHQ4EFgQUD8oeXHngovMpttKFswtKtWXsa1IwHwYDVR0jBBgwFoAU +D8oeXHngovMpttKFswtKtWXsa1IwDQYJKoZIhvcNAQEFBQADggEBAK8B8O0ZPCjoTVy7pWMciDMD +pwCHpB8gq9Yc4wYfl35UvbfRssnV2oDsF9eK9XvCAPbpEW+EoFolMeKJ+aQAPzFoLtU96G7m1R08 +P7K9n3frndOMusDXtk3sU5wPBG7qNWdX4wple5A64U8+wwCSersFiXOMy6ZNwPv2AtawB6MDwidA +nwzkhYItr5pCHdDHjfhA7p0GVxzZotiAFP7hYy0yh9WUUpY6RsZxlj33mA6ykaqP2vROJAA5Veit +F7nTNCtKqUDMFypVZUF0Qn71wK/Ik63yGFs9iQzbRzkk+OBM8h+wPQrKBU6JIRrjKpms/H+h8Q8b +Hz2eBIPdltkdOpQ= +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA +========================= +-----BEGIN CERTIFICATE----- +MIIHqDCCBpCgAwIBAgIRAMy4579OKRr9otxmpRwsDxEwDQYJKoZIhvcNAQEFBQAwcjELMAkGA1UE +BhMCSFUxETAPBgNVBAcTCEJ1ZGFwZXN0MRYwFAYDVQQKEw1NaWNyb3NlYyBMdGQuMRQwEgYDVQQL +EwtlLVN6aWdubyBDQTEiMCAGA1UEAxMZTWljcm9zZWMgZS1Temlnbm8gUm9vdCBDQTAeFw0wNTA0 +MDYxMjI4NDRaFw0xNzA0MDYxMjI4NDRaMHIxCzAJBgNVBAYTAkhVMREwDwYDVQQHEwhCdWRhcGVz +dDEWMBQGA1UEChMNTWljcm9zZWMgTHRkLjEUMBIGA1UECxMLZS1Temlnbm8gQ0ExIjAgBgNVBAMT +GU1pY3Jvc2VjIGUtU3ppZ25vIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIB +AQDtyADVgXvNOABHzNuEwSFpLHSQDCHZU4ftPkNEU6+r+ICbPHiN1I2uuO/TEdyB5s87lozWbxXG +d36hL+BfkrYn13aaHUM86tnsL+4582pnS4uCzyL4ZVX+LMsvfUh6PXX5qqAnu3jCBspRwn5mS6/N +oqdNAoI/gqyFxuEPkEeZlApxcpMqyabAvjxWTHOSJ/FrtfX9/DAFYJLG65Z+AZHCabEeHXtTRbjc +QR/Ji3HWVBTji1R4P770Yjtb9aPs1ZJ04nQw7wHb4dSrmZsqa/i9phyGI0Jf7Enemotb9HI6QMVJ +PqW+jqpx62z69Rrkav17fVVA71hu5tnVvCSrwe+3AgMBAAGjggQ3MIIEMzBnBggrBgEFBQcBAQRb +MFkwKAYIKwYBBQUHMAGGHGh0dHBzOi8vcmNhLmUtc3ppZ25vLmh1L29jc3AwLQYIKwYBBQUHMAKG +IWh0dHA6Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNydDAPBgNVHRMBAf8EBTADAQH/MIIBcwYD +VR0gBIIBajCCAWYwggFiBgwrBgEEAYGoGAIBAQEwggFQMCgGCCsGAQUFBwIBFhxodHRwOi8vd3d3 +LmUtc3ppZ25vLmh1L1NaU1ovMIIBIgYIKwYBBQUHAgIwggEUHoIBEABBACAAdABhAG4A+gBzAO0A +dAB2AOEAbgB5ACAA6QByAHQAZQBsAG0AZQB6AOkAcwDpAGgAZQB6ACAA6QBzACAAZQBsAGYAbwBn +AGEAZADhAHMA4QBoAG8AegAgAGEAIABTAHoAbwBsAGcA4QBsAHQAYQB0APMAIABTAHoAbwBsAGcA +4QBsAHQAYQB0AOEAcwBpACAAUwB6AGEAYgDhAGwAeQB6AGEAdABhACAAcwB6AGUAcgBpAG4AdAAg +AGsAZQBsAGwAIABlAGwAagDhAHIAbgBpADoAIABoAHQAdABwADoALwAvAHcAdwB3AC4AZQAtAHMA +egBpAGcAbgBvAC4AaAB1AC8AUwBaAFMAWgAvMIHIBgNVHR8EgcAwgb0wgbqggbeggbSGIWh0dHA6 +Ly93d3cuZS1zemlnbm8uaHUvUm9vdENBLmNybIaBjmxkYXA6Ly9sZGFwLmUtc3ppZ25vLmh1L0NO +PU1pY3Jvc2VjJTIwZS1Temlnbm8lMjBSb290JTIwQ0EsT1U9ZS1Temlnbm8lMjBDQSxPPU1pY3Jv +c2VjJTIwTHRkLixMPUJ1ZGFwZXN0LEM9SFU/Y2VydGlmaWNhdGVSZXZvY2F0aW9uTGlzdDtiaW5h +cnkwDgYDVR0PAQH/BAQDAgEGMIGWBgNVHREEgY4wgYuBEGluZm9AZS1zemlnbm8uaHWkdzB1MSMw +IQYDVQQDDBpNaWNyb3NlYyBlLVN6aWduw7MgUm9vdCBDQTEWMBQGA1UECwwNZS1TemlnbsOzIEhT +WjEWMBQGA1UEChMNTWljcm9zZWMgS2Z0LjERMA8GA1UEBxMIQnVkYXBlc3QxCzAJBgNVBAYTAkhV +MIGsBgNVHSMEgaQwgaGAFMegSXUWYYTbMUuE0vE3QJDvTtz3oXakdDByMQswCQYDVQQGEwJIVTER +MA8GA1UEBxMIQnVkYXBlc3QxFjAUBgNVBAoTDU1pY3Jvc2VjIEx0ZC4xFDASBgNVBAsTC2UtU3pp +Z25vIENBMSIwIAYDVQQDExlNaWNyb3NlYyBlLVN6aWdubyBSb290IENBghEAzLjnv04pGv2i3Gal +HCwPETAdBgNVHQ4EFgQUx6BJdRZhhNsxS4TS8TdAkO9O3PcwDQYJKoZIhvcNAQEFBQADggEBANMT +nGZjWS7KXHAM/IO8VbH0jgdsZifOwTsgqRy7RlRw7lrMoHfqaEQn6/Ip3Xep1fvj1KcExJW4C+FE +aGAHQzAxQmHl7tnlJNUb3+FKG6qfx1/4ehHqE5MAyopYse7tDk2016g2JnzgOsHVV4Lxdbb9iV/a +86g4nzUGCM4ilb7N1fy+W955a9x6qWVmvrElWl/tftOsRm1M9DKHtCAE4Gx4sHfRhUZLphK3dehK +yVZs15KrnfVJONJPU+NVkBHbmJbGSfI+9J8b4PeI3CVimUTYc78/MPMMNz7UwiiAc7EBt51alhQB +S6kRnSlqLtBdgcDPsiBDxwPgN05dCtxZICU= +-----END CERTIFICATE----- + +Certigna +======== +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw +EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 +MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI +Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q +XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH +GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p +ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg +DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf +Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ +tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ +BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J +SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA +hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ +ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu +PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY +1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +AC Ra\xC3\xADz Certic\xC3\xA1mara S.A. +====================================== +-----BEGIN CERTIFICATE----- +MIIGZjCCBE6gAwIBAgIPB35Sk3vgFeNX8GmMy+wMMA0GCSqGSIb3DQEBBQUAMHsxCzAJBgNVBAYT +AkNPMUcwRQYDVQQKDD5Tb2NpZWRhZCBDYW1lcmFsIGRlIENlcnRpZmljYWNpw7NuIERpZ2l0YWwg +LSBDZXJ0aWPDoW1hcmEgUy5BLjEjMCEGA1UEAwwaQUMgUmHDrXogQ2VydGljw6FtYXJhIFMuQS4w +HhcNMDYxMTI3MjA0NjI5WhcNMzAwNDAyMjE0MjAyWjB7MQswCQYDVQQGEwJDTzFHMEUGA1UECgw+ +U29jaWVkYWQgQ2FtZXJhbCBkZSBDZXJ0aWZpY2FjacOzbiBEaWdpdGFsIC0gQ2VydGljw6FtYXJh +IFMuQS4xIzAhBgNVBAMMGkFDIFJhw616IENlcnRpY8OhbWFyYSBTLkEuMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAq2uJo1PMSCMI+8PPUZYILrgIem08kBeGqentLhM0R7LQcNzJPNCN +yu5LF6vQhbCnIwTLqKL85XXbQMpiiY9QngE9JlsYhBzLfDe3fezTf3MZsGqy2IiKLUV0qPezuMDU +2s0iiXRNWhU5cxh0T7XrmafBHoi0wpOQY5fzp6cSsgkiBzPZkc0OnB8OIMfuuzONj8LSWKdf/WU3 +4ojC2I+GdV75LaeHM/J4Ny+LvB2GNzmxlPLYvEqcgxhaBvzz1NS6jBUJJfD5to0EfhcSM2tXSExP +2yYe68yQ54v5aHxwD6Mq0Do43zeX4lvegGHTgNiRg0JaTASJaBE8rF9ogEHMYELODVoqDA+bMMCm +8Ibbq0nXl21Ii/kDwFJnmxL3wvIumGVC2daa49AZMQyth9VXAnow6IYm+48jilSH5L887uvDdUhf +HjlvgWJsxS3EF1QZtzeNnDeRyPYL1epjb4OsOMLzP96a++EjYfDIJss2yKHzMI+ko6Kh3VOz3vCa +Mh+DkXkwwakfU5tTohVTP92dsxA7SH2JD/ztA/X7JWR1DhcZDY8AFmd5ekD8LVkH2ZD6mq093ICK +5lw1omdMEWux+IBkAC1vImHFrEsm5VoQgpukg3s0956JkSCXjrdCx2bD0Omk1vUgjcTDlaxECp1b +czwmPS9KvqfJpxAe+59QafMCAwEAAaOB5jCB4zAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQE +AwIBBjAdBgNVHQ4EFgQU0QnQ6dfOeXRU+Tows/RtLAMDG2gwgaAGA1UdIASBmDCBlTCBkgYEVR0g +ADCBiTArBggrBgEFBQcCARYfaHR0cDovL3d3dy5jZXJ0aWNhbWFyYS5jb20vZHBjLzBaBggrBgEF +BQcCAjBOGkxMaW1pdGFjaW9uZXMgZGUgZ2FyYW507WFzIGRlIGVzdGUgY2VydGlmaWNhZG8gc2Ug +cHVlZGVuIGVuY29udHJhciBlbiBsYSBEUEMuMA0GCSqGSIb3DQEBBQUAA4ICAQBclLW4RZFNjmEf +AygPU3zmpFmps4p6xbD/CHwso3EcIRNnoZUSQDWDg4902zNc8El2CoFS3UnUmjIz75uny3XlesuX +EpBcunvFm9+7OSPI/5jOCk0iAUgHforA1SBClETvv3eiiWdIG0ADBaGJ7M9i4z0ldma/Jre7Ir5v +/zlXdLp6yQGVwZVR6Kss+LGGIOk/yzVb0hfpKv6DExdA7ohiZVvVO2Dpezy4ydV/NgIlqmjCMRW3 +MGXrfx1IebHPOeJCgBbT9ZMj/EyXyVo3bHwi2ErN0o42gzmRkBDI8ck1fj+404HGIGQatlDCIaR4 +3NAvO2STdPCWkPHv+wlaNECW8DYSwaN0jJN+Qd53i+yG2dIPPy3RzECiiWZIHiCznCNZc6lEc7wk +eZBWN7PGKX6jD/EpOe9+XCgycDWs2rjIdWb8m0w5R44bb5tNAlQiM+9hup4phO9OSzNHdpdqy35f +/RWmnkJDW2ZaiogN9xa5P1FlK2Zqi9E4UqLWRhH6/JocdJ6PlwsCT2TG9WjTSy3/pDceiz+/RL5h +RqGEPQgnTIEgd4kI6mdAXmwIUV80WoyWaM3X94nCHNMyAK9Sy9NgWyo6R35rMDOhYil/SrnhLecU +Iw4OGEfhefwVVdCx/CVxY3UzHCMrr1zZ7Ud3YA47Dx7SwNxkBYn8eNZcLCZDqQ== +-----END CERTIFICATE----- + +TC TrustCenter Class 2 CA II +============================ +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOLmoAAQACH9dSISwRXDswDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy +IENsYXNzIDIgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDIgQ0EgSUkwHhcNMDYw +MTEyMTQzODQzWhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 +c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQTElMCMGA1UE +AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMiBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAKuAh5uO8MN8h9foJIIRszzdQ2Lu+MNF2ujhoF/RKrLqk2jftMjWQ+nEdVl//OEd+DFw +IxuInie5e/060smp6RQvkL4DUsFJzfb95AhmC1eKokKguNV/aVyQMrKXDcpK3EY+AlWJU+MaWss2 +xgdW94zPEfRMuzBwBJWl9jmM/XOBCH2JXjIeIqkiRUuwZi4wzJ9l/fzLganx4Duvo4bRierERXlQ +Xa7pIXSSTYtZgo+U4+lK8edJsBTj9WLL1XK9H7nSn6DNqPoByNkN39r8R52zyFTfSUrxIan+GE7u +SNQZu+995OKdy1u2bv/jzVrndIIFuoAlOMvkaZ6vQaoahPUCAwEAAaOCATQwggEwMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTjq1RMgKHbVkO3kUrL84J6E1wIqzCB +7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 +Y19jbGFzc18yX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU +cnVzdENlbnRlciUyMENsYXNzJTIwMiUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i +SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEAjNfffu4bgBCzg/XbEeprS6iSGNn3Bzn1LL4G +dXpoUxUc6krtXvwjshOg0wn/9vYua0Fxec3ibf2uWWuFHbhOIprtZjluS5TmVfwLG4t3wVMTZonZ +KNaL80VKY7f9ewthXbhtvsPcW3nS7Yblok2+XnR8au0WOB9/WIFaGusyiC2y8zl3gK9etmF1Kdsj +TYjKUCjLhdLTEKJZbtOTVAB6okaVhgWcqRmY5TFyDADiZ9lA4CQze28suVyrZZ0srHbqNZn1l7kP +JOzHdiEoZa5X6AeIdUpWoNIFOqTmjZKILPPy4cHGYdtBxceb9w4aUUXCYWvcZCcXjFq32nQozZfk +vQ== +-----END CERTIFICATE----- + +TC TrustCenter Class 3 CA II +============================ +-----BEGIN CERTIFICATE----- +MIIEqjCCA5KgAwIBAgIOSkcAAQAC5aBd1j8AUb8wDQYJKoZIhvcNAQEFBQAwdjELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxIjAgBgNVBAsTGVRDIFRydXN0Q2VudGVy +IENsYXNzIDMgQ0ExJTAjBgNVBAMTHFRDIFRydXN0Q2VudGVyIENsYXNzIDMgQ0EgSUkwHhcNMDYw +MTEyMTQ0MTU3WhcNMjUxMjMxMjI1OTU5WjB2MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMgVHJ1 +c3RDZW50ZXIgR21iSDEiMCAGA1UECxMZVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQTElMCMGA1UE +AxMcVEMgVHJ1c3RDZW50ZXIgQ2xhc3MgMyBDQSBJSTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBALTgu1G7OVyLBMVMeRwjhjEQY0NVJz/GRcekPewJDRoeIMJWHt4bNwcwIi9v8Qbxq63W +yKthoy9DxLCyLfzDlml7forkzMA5EpBCYMnMNWju2l+QVl/NHE1bWEnrDgFPZPosPIlY2C8u4rBo +6SI7dYnWRBpl8huXJh0obazovVkdKyT21oQDZogkAHhg8fir/gKya/si+zXmFtGt9i4S5Po1auUZ +uV3bOx4a+9P/FRQI2AlqukWdFHlgfa9Aigdzs5OW03Q0jTo3Kd5c7PXuLjHCINy+8U9/I1LZW+Jk +2ZyqBwi1Rb3R0DHBq1SfqdLDYmAD8bs5SpJKPQq5ncWg/jcCAwEAAaOCATQwggEwMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTUovyfs8PYA9NXXAek0CSnwPIA1DCB +7QYDVR0fBIHlMIHiMIHfoIHcoIHZhjVodHRwOi8vd3d3LnRydXN0Y2VudGVyLmRlL2NybC92Mi90 +Y19jbGFzc18zX2NhX0lJLmNybIaBn2xkYXA6Ly93d3cudHJ1c3RjZW50ZXIuZGUvQ049VEMlMjBU +cnVzdENlbnRlciUyMENsYXNzJTIwMyUyMENBJTIwSUksTz1UQyUyMFRydXN0Q2VudGVyJTIwR21i +SCxPVT1yb290Y2VydHMsREM9dHJ1c3RjZW50ZXIsREM9ZGU/Y2VydGlmaWNhdGVSZXZvY2F0aW9u +TGlzdD9iYXNlPzANBgkqhkiG9w0BAQUFAAOCAQEANmDkcPcGIEPZIxpC8vijsrlNirTzwppVMXzE +O2eatN9NDoqTSheLG43KieHPOh6sHfGcMrSOWXaiQYUlN6AT0PV8TtXqluJucsG7Kv5sbviRmEb8 +yRtXW+rIGjs/sFGYPAfaLFkB2otE6OF0/ado3VS6g0bsyEa1+K+XwDsJHI/OcpY9M1ZwvJbL2NV9 +IJqDnxrcOfHFcqMRA/07QlIp2+gB95tejNaNhk4Z+rwcvsUhpYeeeC422wlxo3I0+GzjBgnyXlal +092Y+tTmBvTwtiBjS+opvaqCZh77gaqnN60TGOaSw4HBM7uIHqHn4rS9MWwOUT1v+5ZWgOI2F9Hc +5A== +-----END CERTIFICATE----- + +TC TrustCenter Universal CA I +============================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIOHaIAAQAC7LdggHiNtgYwDQYJKoZIhvcNAQEFBQAweTELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy +IFVuaXZlcnNhbCBDQTEmMCQGA1UEAxMdVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIEkwHhcN +MDYwMzIyMTU1NDI4WhcNMjUxMjMxMjI1OTU5WjB5MQswCQYDVQQGEwJERTEcMBoGA1UEChMTVEMg +VHJ1c3RDZW50ZXIgR21iSDEkMCIGA1UECxMbVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBMSYw +JAYDVQQDEx1UQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0EgSTCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAKR3I5ZEr5D0MacQ9CaHnPM42Q9e3s9B6DGtxnSRJJZ4Hgmgm5qVSkr1YnwC +qMqs+1oEdjneX/H5s7/zA1hV0qq34wQi0fiU2iIIAI3TfCZdzHd55yx4Oagmcw6iXSVphU9VDprv +xrlE4Vc93x9UIuVvZaozhDrzznq+VZeujRIPFDPiUHDDSYcTvFHe15gSWu86gzOSBnWLknwSaHtw +ag+1m7Z3W0hZneTvWq3zwZ7U10VOylY0Ibw+F1tvdwxIAUMpsN0/lm7mlaoMwCC2/T42J5zjXM9O +gdwZu5GQfezmlwQek8wiSdeXhrYTCjxDI3d+8NzmzSQfO4ObNDqDNOMCAwEAAaNjMGEwHwYDVR0j +BBgwFoAUkqR1LKSevoFE63n8isWVpesQdXMwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AYYwHQYDVR0OBBYEFJKkdSyknr6BROt5/IrFlaXrEHVzMA0GCSqGSIb3DQEBBQUAA4IBAQAo0uCG +1eb4e/CX3CJrO5UUVg8RMKWaTzqwOuAGy2X17caXJ/4l8lfmXpWMPmRgFVp/Lw0BxbFg/UU1z/Cy +vwbZ71q+s2IhtNerNXxTPqYn8aEt2hojnczd7Dwtnic0XQ/CNnm8yUpiLe1r2X1BQ3y2qsrtYbE3 +ghUJGooWMNjsydZHcnhLEEYUjl8Or+zHL6sQ17bxbuyGssLoDZJz3KL0Dzq/YSMQiZxIQG5wALPT +ujdEWBF6AmqI8Dc08BnprNRlc/ZpjGSUOnmFKbAWKwyCPwacx/0QK54PLLae4xW/2TYcuiUaUj0a +7CIMHOCkoj3w6DnPgcB77V0fb8XQC9eY +-----END CERTIFICATE----- + +Deutsche Telekom Root CA 2 +========================== +-----BEGIN CERTIFICATE----- +MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT +RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG +A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 +MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G +A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS +b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 +bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI +KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY +AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK +Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV +jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV +HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr +E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy +zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 +rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G +dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU +Cm26OWMohpLzGITY+9HPBVZkVw== +-----END CERTIFICATE----- + +ComSign CA +========== +-----BEGIN CERTIFICATE----- +MIIDkzCCAnugAwIBAgIQFBOWgxRVjOp7Y+X8NId3RDANBgkqhkiG9w0BAQUFADA0MRMwEQYDVQQD +EwpDb21TaWduIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0wNDAzMjQxMTMy +MThaFw0yOTAzMTkxNTAyMThaMDQxEzARBgNVBAMTCkNvbVNpZ24gQ0ExEDAOBgNVBAoTB0NvbVNp +Z24xCzAJBgNVBAYTAklMMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA8ORUaSvTx49q +ROR+WCf4C9DklBKK8Rs4OC8fMZwG1Cyn3gsqrhqg455qv588x26i+YtkbDqthVVRVKU4VbirgwTy +P2Q298CNQ0NqZtH3FyrV7zb6MBBC11PN+fozc0yz6YQgitZBJzXkOPqUm7h65HkfM/sb2CEJKHxN +GGleZIp6GZPKfuzzcuc3B1hZKKxC+cX/zT/npfo4sdAMx9lSGlPWgcxCejVb7Us6eva1jsz/D3zk +YDaHL63woSV9/9JLEYhwVKZBqGdTUkJe5DSe5L6j7KpiXd3DTKaCQeQzC6zJMw9kglcq/QytNuEM +rkvF7zuZ2SOzW120V+x0cAwqTwIDAQABo4GgMIGdMAwGA1UdEwQFMAMBAf8wPQYDVR0fBDYwNDAy +oDCgLoYsaHR0cDovL2ZlZGlyLmNvbXNpZ24uY28uaWwvY3JsL0NvbVNpZ25DQS5jcmwwDgYDVR0P +AQH/BAQDAgGGMB8GA1UdIwQYMBaAFEsBmz5WGmU2dst7l6qSBe4y5ygxMB0GA1UdDgQWBBRLAZs+ +VhplNnbLe5eqkgXuMucoMTANBgkqhkiG9w0BAQUFAAOCAQEA0Nmlfv4pYEWdfoPPbrxHbvUanlR2 +QnG0PFg/LUAlQvaBnPGJEMgOqnhPOAlXsDzACPw1jvFIUY0McXS6hMTXcpuEfDhOZAYnKuGntewI +mbQKDdSFc8gS4TXt8QUxHXOZDOuWyt3T5oWq8Ir7dcHyCTxlZWTzTNity4hp8+SDtwy9F1qWF8pb +/627HOkthIDYIb6FUtnUdLlphbpN7Sgy6/lhSuTENh4Z3G+EER+V9YMoGKgzkkMn3V0TBEVPh9VG +zT2ouvDzuFYkRes3x+F2T3I5GN9+dHLHcy056mDmrRGiVod7w2ia/viMcKjfZTL0pECMocJEAw6U +AGegcQCCSA== +-----END CERTIFICATE----- + +ComSign Secured CA +================== +-----BEGIN CERTIFICATE----- +MIIDqzCCApOgAwIBAgIRAMcoRwmzuGxFjB36JPU2TukwDQYJKoZIhvcNAQEFBQAwPDEbMBkGA1UE +AxMSQ29tU2lnbiBTZWN1cmVkIENBMRAwDgYDVQQKEwdDb21TaWduMQswCQYDVQQGEwJJTDAeFw0w +NDAzMjQxMTM3MjBaFw0yOTAzMTYxNTA0NTZaMDwxGzAZBgNVBAMTEkNvbVNpZ24gU2VjdXJlZCBD +QTEQMA4GA1UEChMHQ29tU2lnbjELMAkGA1UEBhMCSUwwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQDGtWhfHZQVw6QIVS3joFd67+l0Kru5fFdJGhFeTymHDEjWaueP1H5XJLkGieQcPOqs +49ohgHMhCu95mGwfCP+hUH3ymBvJVG8+pSjsIQQPRbsHPaHA+iqYHU4Gk/v1iDurX8sWv+bznkqH +7Rnqwp9D5PGBpX8QTz7RSmKtUxvLg/8HZaWSLWapW7ha9B20IZFKF3ueMv5WJDmyVIRD9YTC2LxB +kMyd1mja6YJQqTtoz7VdApRgFrFD2UNd3V2Hbuq7s8lr9gOUCXDeFhF6K+h2j0kQmHe5Y1yLM5d1 +9guMsqtb3nQgJT/j8xH5h2iGNXHDHYwt6+UarA9z1YJZQIDTAgMBAAGjgacwgaQwDAYDVR0TBAUw +AwEB/zBEBgNVHR8EPTA7MDmgN6A1hjNodHRwOi8vZmVkaXIuY29tc2lnbi5jby5pbC9jcmwvQ29t +U2lnblNlY3VyZWRDQS5jcmwwDgYDVR0PAQH/BAQDAgGGMB8GA1UdIwQYMBaAFMFL7XC29z58ADsA +j8c+DkWfHl3sMB0GA1UdDgQWBBTBS+1wtvc+fAA7AI/HPg5Fnx5d7DANBgkqhkiG9w0BAQUFAAOC +AQEAFs/ukhNQq3sUnjO2QiBq1BW9Cav8cujvR3qQrFHBZE7piL1DRYHjZiM/EoZNGeQFsOY3wo3a +BijJD4mkU6l1P7CW+6tMM1X5eCZGbxs2mPtCdsGCuY7e+0X5YxtiOzkGynd6qDwJz2w2PQ8KRUtp +FhpFfTMDZflScZAmlaxMDPWLkz/MdXSFmLr/YnpNH4n+rr2UAJm/EaXc4HnFFgt9AmEd6oX5AhVP +51qJThRv4zdLhfXBPGHg/QVBspJ/wx2g0K5SZGBrGMYmnNj1ZOQ2GmKfig8+/21OGVZOIJFsnzQz +OjRXUDpvgV4GxvU+fE6OK85lBi5d0ipTdF7Tbieejw== +-----END CERTIFICATE----- + +Cybertrust Global Root +====================== +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li +ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 +MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD +ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA ++Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW +0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL +AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin +89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT +8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 +MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G +A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO +lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi +5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 +hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T +X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +ePKI Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx +MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq +MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs +IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi +lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv +qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX +12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O +WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ +ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao +lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ +vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi +Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi +MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 +1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq +KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV +xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP +NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r +GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE +xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx +gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy +sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD +BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +T\xc3\x9c\x42\xC4\xB0TAK UEKAE K\xC3\xB6k Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 - S\xC3\xBCr\xC3\xBCm 3 +============================================================================================================================= +-----BEGIN CERTIFICATE----- +MIIFFzCCA/+gAwIBAgIBETANBgkqhkiG9w0BAQUFADCCASsxCzAJBgNVBAYTAlRSMRgwFgYDVQQH +DA9HZWJ6ZSAtIEtvY2FlbGkxRzBFBgNVBAoMPlTDvHJraXllIEJpbGltc2VsIHZlIFRla25vbG9q +aWsgQXJhxZ90xLFybWEgS3VydW11IC0gVMOcQsSwVEFLMUgwRgYDVQQLDD9VbHVzYWwgRWxla3Ry +b25payB2ZSBLcmlwdG9sb2ppIEFyYcWfdMSxcm1hIEVuc3RpdMO8c8O8IC0gVUVLQUUxIzAhBgNV +BAsMGkthbXUgU2VydGlmaWthc3lvbiBNZXJrZXppMUowSAYDVQQDDEFUw5xCxLBUQUsgVUVLQUUg +S8O2ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsSAtIFPDvHLDvG0gMzAeFw0wNzA4 +MjQxMTM3MDdaFw0xNzA4MjExMTM3MDdaMIIBKzELMAkGA1UEBhMCVFIxGDAWBgNVBAcMD0dlYnpl +IC0gS29jYWVsaTFHMEUGA1UECgw+VMO8cmtpeWUgQmlsaW1zZWwgdmUgVGVrbm9sb2ppayBBcmHF +n3TEsXJtYSBLdXJ1bXUgLSBUw5xCxLBUQUsxSDBGBgNVBAsMP1VsdXNhbCBFbGVrdHJvbmlrIHZl +IEtyaXB0b2xvamkgQXJhxZ90xLFybWEgRW5zdGl0w7xzw7wgLSBVRUtBRTEjMCEGA1UECwwaS2Ft +dSBTZXJ0aWZpa2FzeW9uIE1lcmtlemkxSjBIBgNVBAMMQVTDnELEsFRBSyBVRUtBRSBLw7ZrIFNl +cnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxIC0gU8O8csO8bSAzMIIBIjANBgkqhkiG9w0B +AQEFAAOCAQ8AMIIBCgKCAQEAim1L/xCIOsP2fpTo6iBkcK4hgb46ezzb8R1Sf1n68yJMlaCQvEhO +Eav7t7WNeoMojCZG2E6VQIdhn8WebYGHV2yKO7Rm6sxA/OOqbLLLAdsyv9Lrhc+hDVXDWzhXcLh1 +xnnRFDDtG1hba+818qEhTsXOfJlfbLm4IpNQp81McGq+agV/E5wrHur+R84EpW+sky58K5+eeROR +6Oqeyjh1jmKwlZMq5d/pXpduIF9fhHpEORlAHLpVK/swsoHvhOPc7Jg4OQOFCKlUAwUp8MmPi+oL +hmUZEdPpCSPeaJMDyTYcIW7OjGbxmTDY17PDHfiBLqi9ggtm/oLL4eAagsNAgQIDAQABo0IwQDAd +BgNVHQ4EFgQUvYiHyY/2pAoLquvF/pEjnatKijIwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQF +MAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAB18+kmPNOm3JpIWmgV050vQbTlswyb2zrgxvMTfvCr4 +N5EY3ATIZJkrGG2AA1nJrvhY0D7twyOfaTyGOBye79oneNGEN3GKPEs5z35FBtYt2IpNeBLWrcLT +y9LQQfMmNkqblWwM7uXRQydmwYj3erMgbOqwaSvHIOgMA8RBBZniP+Rr+KCGgceExh/VS4ESshYh +LBOhgLJeDEoTniDYYkCrkOpkSi+sDQESeUWoL4cZaMjihccwsnX5OD+ywJO0a+IDRM5noN+J1q2M +dqMTw5RhK2vZbMEHCiIHhWyFJEapvj+LeISCfiQMnf2BN+MlqO02TpUsyZyQ2uypQjyttgI= +-----END CERTIFICATE----- + +Buypass Class 2 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBATANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMiBDQSAxMB4XDTA2 +MTAxMzEwMjUwOVoXDTE2MTAxMzEwMjUwOVowSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDIgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAIs8B0XY9t/mx8q6jUPFR42wWsE425KEHK8T1A9vNkYgxC7M +cXA0ojTTNy7Y3Tp3L8DrKehc0rWpkTSHIln+zNvnma+WwajHQN2lFYxuyHyXA8vmIPLXl18xoS83 +0r7uvqmtqEyeIWZDO6i88wmjONVZJMHCR3axiFyCO7srpgTXjAePzdVBHfCuuCkslFJgNJQ72uA4 +0Z0zPhX0kzLFANq1KWYOOngPIVJfAuWSeyXTkh4vFZ2B5J2O6O+JzhRMVB0cgRJNcKi+EAUXfh/R +uFdV7c27UsKwHnjCTTZoy1YmwVLBvXb3WNVyfh9EdrsAiR0WnVE1703CVu9r4Iw7DekCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUP42aWYv8e3uco684sDntkHGA1sgwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQAVGn4TirnoB6NLJzKyQJHyIdFkhb5jatLPgcIV +1Xp+DCmsNx4cfHZSldq1fyOhKXdlyTKdqC5Wq2B2zha0jX94wNWZUYN/Xtm+DKhQ7SLHrQVMdvvt +7h5HZPb3J31cKA9FxVxiXqaakZG3Uxcu3K1gnZZkOb1naLKuBctN518fV4bVIJwo+28TOPX2EZL2 +fZleHwzoq0QkKXJAPTZSr4xYkHPB7GEseaHsh7U/2k3ZIQAw3pDaDtMaSKk+hQsUi4y8QZ5q9w5w +wDX3OaJdZtB7WZ+oRxKaJyOkLY4ng5IgodcVf/EuGO70SH8vf/GhGLWhC5SgYiAynB321O+/TIho +-----END CERTIFICATE----- + +Buypass Class 3 CA 1 +==================== +-----BEGIN CERTIFICATE----- +MIIDUzCCAjugAwIBAgIBAjANBgkqhkiG9w0BAQUFADBLMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxHTAbBgNVBAMMFEJ1eXBhc3MgQ2xhc3MgMyBDQSAxMB4XDTA1 +MDUwOTE0MTMwM1oXDTE1MDUwOTE0MTMwM1owSzELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1eXBh +c3MgQVMtOTgzMTYzMzI3MR0wGwYDVQQDDBRCdXlwYXNzIENsYXNzIDMgQ0EgMTCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAKSO13TZKWTeXx+HgJHqTjnmGcZEC4DVC69TB4sSveZn8AKx +ifZgisRbsELRwCGoy+Gb72RRtqfPFfV0gGgEkKBYouZ0plNTVUhjP5JW3SROjvi6K//zNIqeKNc0 +n6wv1g/xpC+9UrJJhW05NfBEMJNGJPO251P7vGGvqaMU+8IXF4Rs4HyI+MkcVyzwPX6UvCWThOia +AJpFBUJXgPROztmuOfbIUxAMZTpHe2DC1vqRycZxbL2RhzyRhkmr8w+gbCZ2Xhysm3HljbybIR6c +1jh+JIAVMYKWsUnTYjdbiAwKYjT+p0h+mbEwi5A3lRyoH6UsjfRVyNvdWQrCrXig9IsCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUOBTmyPCppAP0Tj4io1vy1uCtQHQwDgYDVR0P +AQH/BAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQABZ6OMySU9E2NdFm/soT4JXJEVKirZgCFPBdy7 +pYmrEzMqnji3jG8CcmPHc3ceCQa6Oyh7pEfJYWsICCD8igWKH7y6xsL+z27sEzNxZy5p+qksP2bA +EllNC1QCkoS72xLvg3BweMhT+t/Gxv/ciC8HwEmdMldg0/L2mSlf56oBzKwzqBwKu5HEA6BvtjT5 +htOzdlSY9EqBs1OdTUDs5XcTRa9bqh/YL0yCe/4qxFi7T/ye/QNlGioOw6UgFpRreaaiErS7GqQj +el/wroQk5PMr+4okoyeYZdowdXb8GZHo2+ubPzK/QJcHJrrM85SFSnonk8+QQtS4Wxam58tAA915 +-----END CERTIFICATE----- + +EBG Elektronik Sertifika Hizmet Sa\xC4\x9Flay\xc4\xb1\x63\xc4\xb1s\xc4\xb1 +========================================================================== +-----BEGIN CERTIFICATE----- +MIIF5zCCA8+gAwIBAgIITK9zQhyOdAIwDQYJKoZIhvcNAQEFBQAwgYAxODA2BgNVBAMML0VCRyBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMTcwNQYDVQQKDC5FQkcg +QmlsacWfaW0gVGVrbm9sb2ppbGVyaSB2ZSBIaXptZXRsZXJpIEEuxZ4uMQswCQYDVQQGEwJUUjAe +Fw0wNjA4MTcwMDIxMDlaFw0xNjA4MTQwMDMxMDlaMIGAMTgwNgYDVQQDDC9FQkcgRWxla3Ryb25p +ayBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTE3MDUGA1UECgwuRUJHIEJpbGnFn2lt +IFRla25vbG9qaWxlcmkgdmUgSGl6bWV0bGVyaSBBLsWeLjELMAkGA1UEBhMCVFIwggIiMA0GCSqG +SIb3DQEBAQUAA4ICDwAwggIKAoICAQDuoIRh0DpqZhAy2DE4f6en5f2h4fuXd7hxlugTlkaDT7by +X3JWbhNgpQGR4lvFzVcfd2NR/y8927k/qqk153nQ9dAktiHq6yOU/im/+4mRDGSaBUorzAzu8T2b +gmmkTPiab+ci2hC6X5L8GCcKqKpE+i4stPtGmggDg3KriORqcsnlZR9uKg+ds+g75AxuetpX/dfr +eYteIAbTdgtsApWjluTLdlHRKJ2hGvxEok3MenaoDT2/F08iiFD9rrbskFBKW5+VQarKD7JK/oCZ +TqNGFav4c0JqwmZ2sQomFd2TkuzbqV9UIlKRcF0T6kjsbgNs2d1s/OsNA/+mgxKb8amTD8UmTDGy +Y5lhcucqZJnSuOl14nypqZoaqsNW2xCaPINStnuWt6yHd6i58mcLlEOzrz5z+kI2sSXFCjEmN1Zn +uqMLfdb3ic1nobc6HmZP9qBVFCVMLDMNpkGMvQQxahByCp0OLna9XvNRiYuoP1Vzv9s6xiQFlpJI +qkuNKgPlV5EQ9GooFW5Hd4RcUXSfGenmHmMWOeMRFeNYGkS9y8RsZteEBt8w9DeiQyJ50hBs37vm +ExH8nYQKE3vwO9D8owrXieqWfo1IhR5kX9tUoqzVegJ5a9KK8GfaZXINFHDk6Y54jzJ0fFfy1tb0 +Nokb+Clsi7n2l9GkLqq+CxnCRelwXQIDAJ3Zo2MwYTAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB +/wQEAwIBBjAdBgNVHQ4EFgQU587GT/wWZ5b6SqMHwQSny2re2kcwHwYDVR0jBBgwFoAU587GT/wW +Z5b6SqMHwQSny2re2kcwDQYJKoZIhvcNAQEFBQADggIBAJuYml2+8ygjdsZs93/mQJ7ANtyVDR2t +FcU22NU57/IeIl6zgrRdu0waypIN30ckHrMk2pGI6YNw3ZPX6bqz3xZaPt7gyPvT/Wwp+BVGoGgm +zJNSroIBk5DKd8pNSe/iWtkqvTDOTLKBtjDOWU/aWR1qeqRFsIImgYZ29fUQALjuswnoT4cCB64k +XPBfrAowzIpAoHMEwfuJJPaaHFy3PApnNgUIMbOv2AFoKuB4j3TeuFGkjGwgPaL7s9QJ/XvCgKqT +bCmYIai7FvOpEl90tYeY8pUm3zTvilORiF0alKM/fCL414i6poyWqD1SNGKfAB5UVUJnxk1Gj7sU +RT0KlhaOEKGXmdXTMIXM3rRyt7yKPBgpaP3ccQfuJDlq+u2lrDgv+R4QDgZxGhBM/nV+/x5XOULK +1+EVoVZVWRvRo68R2E7DpSvvkL/A7IITW43WciyTTo9qKd+FPNMN4KIYEsxVL0e3p5sC/kH2iExt +2qkBR4NkJ2IQgtYSe14DHzSpyZH+r11thie3I6p1GMog57AP14kOpmciY/SDQSsGS7tY1dHXt7kQ +Y9iJSrSq3RZj9W6+YKH47ejWkE8axsWgKdOnIaj1Wjz3x0miIZpKlVIglnKaZsv30oZDfCK+lvm9 +AahH3eU7QPl1K5srRmSGjR70j/sHd9DqSaIcjVIUpgqT +-----END CERTIFICATE----- + +certSIGN ROOT CA +================ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD +VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa +Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE +CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I +JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH +rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 +ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD +0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 +AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B +Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB +AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 +SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 +x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt +vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz +TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +CNNIC ROOT +========== +-----BEGIN CERTIFICATE----- +MIIDVTCCAj2gAwIBAgIESTMAATANBgkqhkiG9w0BAQUFADAyMQswCQYDVQQGEwJDTjEOMAwGA1UE +ChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1QwHhcNMDcwNDE2MDcwOTE0WhcNMjcwNDE2MDcw +OTE0WjAyMQswCQYDVQQGEwJDTjEOMAwGA1UEChMFQ05OSUMxEzARBgNVBAMTCkNOTklDIFJPT1Qw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDTNfc/c3et6FtzF8LRb+1VvG7q6KR5smzD +o+/hn7E7SIX1mlwhIhAsxYLO2uOabjfhhyzcuQxauohV3/2q2x8x6gHx3zkBwRP9SFIhxFXf2tiz +VHa6dLG3fdfA6PZZxU3Iva0fFNrfWEQlMhkqx35+jq44sDB7R3IJMfAw28Mbdim7aXZOV/kbZKKT +VrdvmW7bCgScEeOAH8tjlBAKqeFkgjH5jCftppkA9nCTGPihNIaj3XrCGHn2emU1z5DrvTOTn1Or +czvmmzQgLx3vqR1jGqCA2wMv+SYahtKNu6m+UjqHZ0gNv7Sg2Ca+I19zN38m5pIEo3/PIKe38zrK +y5nLAgMBAAGjczBxMBEGCWCGSAGG+EIBAQQEAwIABzAfBgNVHSMEGDAWgBRl8jGtKvf33VKWCscC +wQ7vptU7ETAPBgNVHRMBAf8EBTADAQH/MAsGA1UdDwQEAwIB/jAdBgNVHQ4EFgQUZfIxrSr3991S +lgrHAsEO76bVOxEwDQYJKoZIhvcNAQEFBQADggEBAEs17szkrr/Dbq2flTtLP1se31cpolnKOOK5 +Gv+e5m4y3R6u6jW39ZORTtpC4cMXYFDy0VwmuYK36m3knITnA3kXr5g9lNvHugDnuL8BV8F3RTIM +O/G0HAiw/VGgod2aHRM2mm23xzy54cXZF/qD1T0VoDy7HgviyJA/qIYM/PmLXoXLT1tLYhFHxUV8 +BS9BsZ4QaRuZluBVeftOhpm4lNqGOGqTo+fLbuXf6iFViZx9fX+Y9QCJ7uOEwFyWtcVG6kbghVW2 +G8kS1sHNzYDzAgE8yGnLRUhj2JTQ7IUOO04RZfSCjKY9ri4ilAnIXOo8gV0WKgOXFlUJ24pBgp5m +mxE= +-----END CERTIFICATE----- + +ApplicationCA - Japanese Government +=================================== +-----BEGIN CERTIFICATE----- +MIIDoDCCAoigAwIBAgIBMTANBgkqhkiG9w0BAQUFADBDMQswCQYDVQQGEwJKUDEcMBoGA1UEChMT +SmFwYW5lc2UgR292ZXJubWVudDEWMBQGA1UECxMNQXBwbGljYXRpb25DQTAeFw0wNzEyMTIxNTAw +MDBaFw0xNzEyMTIxNTAwMDBaMEMxCzAJBgNVBAYTAkpQMRwwGgYDVQQKExNKYXBhbmVzZSBHb3Zl +cm5tZW50MRYwFAYDVQQLEw1BcHBsaWNhdGlvbkNBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAp23gdE6Hj6UG3mii24aZS2QNcfAKBZuOquHMLtJqO8F6tJdhjYq+xpqcBrSGUeQ3DnR4 +fl+Kf5Sk10cI/VBaVuRorChzoHvpfxiSQE8tnfWuREhzNgaeZCw7NCPbXCbkcXmP1G55IrmTwcrN +wVbtiGrXoDkhBFcsovW8R0FPXjQilbUfKW1eSvNNcr5BViCH/OlQR9cwFO5cjFW6WY2H/CPek9AE +jP3vbb3QesmlOmpyM8ZKDQUXKi17safY1vC+9D/qDihtQWEjdnjDuGWk81quzMKq2edY3rZ+nYVu +nyoKb58DKTCXKB28t89UKU5RMfkntigm/qJj5kEW8DOYRwIDAQABo4GeMIGbMB0GA1UdDgQWBBRU +WssmP3HMlEYNllPqa0jQk/5CdTAOBgNVHQ8BAf8EBAMCAQYwWQYDVR0RBFIwUKROMEwxCzAJBgNV +BAYTAkpQMRgwFgYDVQQKDA/ml6XmnKzlm73mlL/lupwxIzAhBgNVBAsMGuOCouODl+ODquOCseOD +vOOCt+ODp+ODs0NBMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADlqRHZ3ODrs +o2dGD/mLBqj7apAxzn7s2tGJfHrrLgy9mTLnsCTWw//1sogJhyzjVOGjprIIC8CFqMjSnHH2HZ9g +/DgzE+Ge3Atf2hZQKXsvcJEPmbo0NI2VdMV+eKlmXb3KIXdCEKxmJj3ekav9FfBv7WxfEPjzFvYD +io+nEhEMy/0/ecGc/WLuo89UDNErXxc+4z6/wCs+CZv+iKZ+tJIX/COUgb1up8WMwusRRdv4QcmW +dupwX3kSa+SjB1oF7ydJzyGfikwJcGapJsErEU4z0g781mzSDjJkaP+tBXhfAx2o45CsJOAPQKdL +rosot4LKGAfmt1t06SAZf7IbiVQ= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G3 +============================================= +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 +IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz +NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo +YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT +LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j +K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE +c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C +IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu +dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr +2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 +cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE +Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s +t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +thawte Primary Root CA - G2 +=========================== +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC +VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu +IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg +Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV +MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG +b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt +IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS +LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 +8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN +G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K +rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +thawte Primary Root CA - G3 +=========================== +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w +ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD +VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG +A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At +P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC ++BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY +7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW +vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ +KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK +A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC +8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm +er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G2 +============================================= +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu +Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 +OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl +b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG +BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc +KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ +EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m +ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 +npaqBA+K +-----END CERTIFICATE----- + +VeriSign Universal Root Certification Authority +=============================================== +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj +1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP +MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 +9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I +AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR +tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G +CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O +a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 +Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx +Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx +P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P +wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 +mJO37M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G4 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC +VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 +b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz +ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU +cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo +b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 +Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz +rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw +HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u +Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD +A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx +AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +NetLock Arany (Class Gold) Főtanúsítvány +============================================ +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G +A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 +dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB +cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx +MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO +ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 +c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu +0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw +/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk +H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw +fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 +neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW +qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta +YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna +NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu +dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G2 +================================== +-----BEGIN CERTIFICATE----- +MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ +5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn +vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj +CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil +e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR +OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI +CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65 +48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi +trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737 +qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB +AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC +ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA +A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz ++51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj +f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN +kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk +CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF +URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb +CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h +oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV +IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm +66+KAQ== +-----END CERTIFICATE----- + +CA Disig +======== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBATANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMK +QnJhdGlzbGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwHhcNMDYw +MzIyMDEzOTM0WhcNMTYwMzIyMDEzOTM0WjBKMQswCQYDVQQGEwJTSzETMBEGA1UEBxMKQnJhdGlz +bGF2YTETMBEGA1UEChMKRGlzaWcgYS5zLjERMA8GA1UEAxMIQ0EgRGlzaWcwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQCS9jHBfYj9mQGp2HvycXXxMcbzdWb6UShGhJd4NLxs/LxFWYgm +GErENx+hSkS943EE9UQX4j/8SFhvXJ56CbpRNyIjZkMhsDxkovhqFQ4/61HhVKndBpnXmjxUizkD +Pw/Fzsbrg3ICqB9x8y34dQjbYkzo+s7552oftms1grrijxaSfQUMbEYDXcDtab86wYqg6I7ZuUUo +hwjstMoVvoLdtUSLLa2GDGhibYVW8qwUYzrG0ZmsNHhWS8+2rT+MitcE5eN4TPWGqvWP+j1scaMt +ymfraHtuM6kMgiioTGohQBUgDCZbg8KpFhXAJIJdKxatymP2dACw30PEEGBWZ2NFAgMBAAGjgf8w +gfwwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUjbJJaJ1yCCW5wCf1UJNWSEZx+Y8wDgYDVR0P +AQH/BAQDAgEGMDYGA1UdEQQvMC2BE2Nhb3BlcmF0b3JAZGlzaWcuc2uGFmh0dHA6Ly93d3cuZGlz +aWcuc2svY2EwZgYDVR0fBF8wXTAtoCugKYYnaHR0cDovL3d3dy5kaXNpZy5zay9jYS9jcmwvY2Ff +ZGlzaWcuY3JsMCygKqAohiZodHRwOi8vY2EuZGlzaWcuc2svY2EvY3JsL2NhX2Rpc2lnLmNybDAa +BgNVHSAEEzARMA8GDSuBHpGT5goAAAABAQEwDQYJKoZIhvcNAQEFBQADggEBAF00dGFMrzvY/59t +WDYcPQuBDRIrRhCA/ec8J9B6yKm2fnQwM6M6int0wHl5QpNt/7EpFIKrIYwvF/k/Ji/1WcbvgAa3 +mkkp7M5+cTxqEEHA9tOasnxakZzArFvITV734VP/Q3f8nktnbNfzg9Gg4H8l37iYC5oyOGwwoPP/ +CBUz91BKez6jPiCp3C9WgArtQVCwyfTssuMmRAAOb54GvCKWU3BlxFAKRmukLyeBEicTXxChds6K +ezfqwzlhA5WYOudsiCUI/HloDYd9Yvi0X/vF2Ey9WLw/Q1vUHgFNPGO+I++MzVpQuGhU+QqZMxEA +4Z7CRneC9VkGjCFMhwnN5ag= +-----END CERTIFICATE----- + +Juur-SK +======= +-----BEGIN CERTIFICATE----- +MIIE5jCCA86gAwIBAgIEO45L/DANBgkqhkiG9w0BAQUFADBdMRgwFgYJKoZIhvcNAQkBFglwa2lA +c2suZWUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKExlBUyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMRAw +DgYDVQQDEwdKdXVyLVNLMB4XDTAxMDgzMDE0MjMwMVoXDTE2MDgyNjE0MjMwMVowXTEYMBYGCSqG +SIb3DQEJARYJcGtpQHNrLmVlMQswCQYDVQQGEwJFRTEiMCAGA1UEChMZQVMgU2VydGlmaXRzZWVy +aW1pc2tlc2t1czEQMA4GA1UEAxMHSnV1ci1TSzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAIFxNj4zB9bjMI0TfncyRsvPGbJgMUaXhvSYRqTCZUXP00B841oiqBB4M8yIsdOBSvZiF3tf +TQou0M+LI+5PAk676w7KvRhj6IAcjeEcjT3g/1tf6mTll+g/mX8MCgkzABpTpyHhOEvWgxutr2TC ++Rx6jGZITWYfGAriPrsfB2WThbkasLnE+w0R9vXW+RvHLCu3GFH+4Hv2qEivbDtPL+/40UceJlfw +UR0zlv/vWT3aTdEVNMfqPxZIe5EcgEMPPbgFPtGzlc3Yyg/CQ2fbt5PgIoIuvvVoKIO5wTtpeyDa +Tpxt4brNj3pssAki14sL2xzVWiZbDcDq5WDQn/413z8CAwEAAaOCAawwggGoMA8GA1UdEwEB/wQF +MAMBAf8wggEWBgNVHSAEggENMIIBCTCCAQUGCisGAQQBzh8BAQEwgfYwgdAGCCsGAQUFBwICMIHD +HoHAAFMAZQBlACAAcwBlAHIAdABpAGYAaQBrAGEAYQB0ACAAbwBuACAAdgDkAGwAagBhAHMAdABh +AHQAdQBkACAAQQBTAC0AaQBzACAAUwBlAHIAdABpAGYAaQB0AHMAZQBlAHIAaQBtAGkAcwBrAGUA +cwBrAHUAcwAgAGEAbABhAG0ALQBTAEsAIABzAGUAcgB0AGkAZgBpAGsAYQBhAHQAaQBkAGUAIABr +AGkAbgBuAGkAdABhAG0AaQBzAGUAawBzMCEGCCsGAQUFBwIBFhVodHRwOi8vd3d3LnNrLmVlL2Nw +cy8wKwYDVR0fBCQwIjAgoB6gHIYaaHR0cDovL3d3dy5zay5lZS9qdXVyL2NybC8wHQYDVR0OBBYE +FASqekej5ImvGs8KQKcYP2/v6X2+MB8GA1UdIwQYMBaAFASqekej5ImvGs8KQKcYP2/v6X2+MA4G +A1UdDwEB/wQEAwIB5jANBgkqhkiG9w0BAQUFAAOCAQEAe8EYlFOiCfP+JmeaUOTDBS8rNXiRTHyo +ERF5TElZrMj3hWVcRrs7EKACr81Ptcw2Kuxd/u+gkcm2k298gFTsxwhwDY77guwqYHhpNjbRxZyL +abVAyJRld/JXIWY7zoVAtjNjGr95HvxcHdMdkxuLDF2FvZkwMhgJkVLpfKG6/2SSmuz+Ne6ML678 +IIbsSt4beDI3poHSna9aEhbKmVv8b20OxaAehsmR0FyYgl9jDIpaq9iVpszLita/ZEuOyoqysOkh +Mp6qqIWYNIE5ITuoOlIyPfZrN4YGWhWY3PARZv40ILcD9EEQfTmEeZZyY7aWAuVrua0ZTbvGRNs2 +yyqcjg== +-----END CERTIFICATE----- + +Hongkong Post Root CA 1 +======================= +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT +DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx +NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n +IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 +ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr +auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh +qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY +V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV +HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i +h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio +l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei +IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps +T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT +c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== +-----END CERTIFICATE----- + +SecureSign RootCA11 +=================== +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi +SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS +b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw +KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 +cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL +TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO +wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq +g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP +O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA +bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX +t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh +OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r +bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ +Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 +y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 +lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +ACEDICOM Root +============= +-----BEGIN CERTIFICATE----- +MIIFtTCCA52gAwIBAgIIYY3HhjsBggUwDQYJKoZIhvcNAQEFBQAwRDEWMBQGA1UEAwwNQUNFRElD +T00gUm9vdDEMMAoGA1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMB4XDTA4 +MDQxODE2MjQyMloXDTI4MDQxMzE2MjQyMlowRDEWMBQGA1UEAwwNQUNFRElDT00gUm9vdDEMMAoG +A1UECwwDUEtJMQ8wDQYDVQQKDAZFRElDT00xCzAJBgNVBAYTAkVTMIICIjANBgkqhkiG9w0BAQEF +AAOCAg8AMIICCgKCAgEA/5KV4WgGdrQsyFhIyv2AVClVYyT/kGWbEHV7w2rbYgIB8hiGtXxaOLHk +WLn709gtn70yN78sFW2+tfQh0hOR2QetAQXW8713zl9CgQr5auODAKgrLlUTY4HKRxx7XBZXehuD +YAQ6PmXDzQHe3qTWDLqO3tkE7hdWIpuPY/1NFgu3e3eM+SW10W2ZEi5PGrjm6gSSrj0RuVFCPYew +MYWveVqc/udOXpJPQ/yrOq2lEiZmueIM15jO1FillUAKt0SdE3QrwqXrIhWYENiLxQSfHY9g5QYb +m8+5eaA9oiM/Qj9r+hwDezCNzmzAv+YbX79nuIQZ1RXve8uQNjFiybwCq0Zfm/4aaJQ0PZCOrfbk +HQl/Sog4P75n/TSW9R28MHTLOO7VbKvU/PQAtwBbhTIWdjPp2KOZnQUAqhbm84F9b32qhm2tFXTT +xKJxqvQUfecyuB+81fFOvW8XAjnXDpVCOscAPukmYxHqC9FK/xidstd7LzrZlvvoHpKuE1XI2Sf2 +3EgbsCTBheN3nZqk8wwRHQ3ItBTutYJXCb8gWH8vIiPYcMt5bMlL8qkqyPyHK9caUPgn6C9D4zq9 +2Fdx/c6mUlv53U3t5fZvie27k5x2IXXwkkwp9y+cAS7+UEaeZAwUswdbxcJzbPEHXEUkFDWug/Fq +TYl6+rPYLWbwNof1K1MCAwEAAaOBqjCBpzAPBgNVHRMBAf8EBTADAQH/MB8GA1UdIwQYMBaAFKaz +4SsrSbbXc6GqlPUB53NlTKxQMA4GA1UdDwEB/wQEAwIBhjAdBgNVHQ4EFgQUprPhKytJttdzoaqU +9QHnc2VMrFAwRAYDVR0gBD0wOzA5BgRVHSAAMDEwLwYIKwYBBQUHAgEWI2h0dHA6Ly9hY2VkaWNv +bS5lZGljb21ncm91cC5jb20vZG9jMA0GCSqGSIb3DQEBBQUAA4ICAQDOLAtSUWImfQwng4/F9tqg +aHtPkl7qpHMyEVNEskTLnewPeUKzEKbHDZ3Ltvo/Onzqv4hTGzz3gvoFNTPhNahXwOf9jU8/kzJP +eGYDdwdY6ZXIfj7QeQCM8htRM5u8lOk6e25SLTKeI6RF+7YuE7CLGLHdztUdp0J/Vb77W7tH1Pwk +zQSulgUV1qzOMPPKC8W64iLgpq0i5ALudBF/TP94HTXa5gI06xgSYXcGCRZj6hitoocf8seACQl1 +ThCojz2GuHURwCRiipZ7SkXp7FnFvmuD5uHorLUwHv4FB4D54SMNUI8FmP8sX+g7tq3PgbUhh8oI +KiMnMCArz+2UW6yyetLHKKGKC5tNSixthT8Jcjxn4tncB7rrZXtaAWPWkFtPF2Y9fwsZo5NjEFIq +nxQWWOLcpfShFosOkYuByptZ+thrkQdlVV9SH686+5DdaaVbnG0OLLb6zqylfDJKZ0DcMDQj3dcE +I2bw/FWAp/tmGYI1Z2JwOV5vx+qQQEQIHriy1tvuWacNGHk0vFQYXlPKNFHtRQrmjseCNj6nOGOp +MCwXEGCSn1WHElkQwg9naRHMTh5+Spqtr0CodaxWkHS4oJyleW/c6RrIaQXpuvoDs3zk4E7Czp3o +tkYNbn5XOmeUwssfnHdKZ05phkOTOPu220+DkdRgfks+KzgHVZhepA== +-----END CERTIFICATE----- + +Verisign Class 1 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCED9pHoGc8JpK83P/uUii5N0wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAxIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAx +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDlGb9to1ZhLZlIcfZn3rmN67eehoAKkQ76OCWvRoiC5XOooJskXQ0fzGVuDLDQ +VoQYh5oGmxChc9+0WDlrbsH2FdWoqD+qEgaNMax/sDTXjzRniAnNFBHiTkVWaR94AoDa3EeRKbs2 +yWNcxeDXLYd7obcysHswuiovMaruo2fa2wIDAQABMA0GCSqGSIb3DQEBBQUAA4GBAFgVKTk8d6Pa +XCUDfGD67gmZPCcQcMgMCeazh88K4hiWNWLMv5sneYlfycQJ9M61Hd8qveXbhpxoJeUwfLaJFf5n +0a3hUKw8fGJLj7qE1xIVGx/KXQ/BUpQqEZnae88MNhPVNdwQGVnqlMEAv3WP2fr9dgTbYruQagPZ +RjXZ+Hxb +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority +======================================================= +-----BEGIN CERTIFICATE----- +MIICPDCCAaUCEDyRMcsf9tAbDpq40ES/Er4wDQYJKoZIhvcNAQEFBQAwXzELMAkGA1UEBhMCVVMx +FzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTk2MDEyOTAwMDAwMFoXDTI4MDgwMjIzNTk1OVow +XzELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMTcwNQYDVQQLEy5DbGFzcyAz +IFB1YmxpYyBQcmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIGfMA0GCSqGSIb3DQEBAQUA +A4GNADCBiQKBgQDJXFme8huKARS0EN8EQNvjV69qRUCPhAwL0TPZ2RHP7gJYHyX3KqhEBarsAx94 +f56TuZoAqiN91qyFomNFx3InzPRMxnVx0jnvT0Lwdd8KkMaOIG+YD/isI19wKTakyYbnsZogy1Ol +hec9vn2a/iRFM9x2Fe0PonFkTGUugWhFpwIDAQABMA0GCSqGSIb3DQEBBQUAA4GBABByUqkFFBky +CEHwxWsKzH4PIRnN5GfcX6kb5sroc50i2JhucwNhkcV8sEVAbkSdjbCxlnRhLQ2pRdKkkirWmnWX +bj9T/UWZYB2oK0z5XqcJ2HUw19JlYD1n1khVdWk/kfVIC0dpImmClr7JyDiGSnoscxlIaU5rfGW/ +D/xwzoiQ +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv +c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE +BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt +U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA +fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG +0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA +pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm +1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC +AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf +QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE +FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o +lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX +I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 +yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi +LXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +E-Guven Kok Elektronik Sertifika Hizmet Saglayicisi +=================================================== +-----BEGIN CERTIFICATE----- +MIIDtjCCAp6gAwIBAgIQRJmNPMADJ72cdpW56tustTANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJUUjEoMCYGA1UEChMfRWxla3Ryb25payBCaWxnaSBHdXZlbmxpZ2kgQS5TLjE8MDoGA1UEAxMz +ZS1HdXZlbiBLb2sgRWxla3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhZ2xheWljaXNpMB4XDTA3 +MDEwNDExMzI0OFoXDTE3MDEwNDExMzI0OFowdTELMAkGA1UEBhMCVFIxKDAmBgNVBAoTH0VsZWt0 +cm9uaWsgQmlsZ2kgR3V2ZW5saWdpIEEuUy4xPDA6BgNVBAMTM2UtR3V2ZW4gS29rIEVsZWt0cm9u +aWsgU2VydGlmaWthIEhpem1ldCBTYWdsYXlpY2lzaTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBAMMSIJ6wXgBljU5Gu4Bc6SwGl9XzcslwuedLZYDBS75+PNdUMZTe1RK6UxYC6lhj71vY +8+0qGqpxSKPcEC1fX+tcS5yWCEIlKBHMilpiAVDV6wlTL/jDj/6z/P2douNffb7tC+Bg62nsM+3Y +jfsSSYMAyYuXjDtzKjKzEve5TfL0TW3H5tYmNwjy2f1rXKPlSFxYvEK+A1qBuhw1DADT9SN+cTAI +JjjcJRFHLfO6IxClv7wC90Nex/6wN1CZew+TzuZDLMN+DfIcQ2Zgy2ExR4ejT669VmxMvLz4Bcpk +9Ok0oSy1c+HCPujIyTQlCFzz7abHlJ+tiEMl1+E5YP6sOVkCAwEAAaNCMEAwDgYDVR0PAQH/BAQD +AgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFJ/uRLOU1fqRTy7ZVZoEVtstxNulMA0GCSqG +SIb3DQEBBQUAA4IBAQB/X7lTW2M9dTLn+sR0GstG30ZpHFLPqk/CaOv/gKlR6D1id4k9CnU58W5d +F4dvaAXBlGzZXd/aslnLpRCKysw5zZ/rTt5S/wzw9JKp8mxTq5vSR6AfdPebmvEvFZ96ZDAYBzwq +D2fK/A+JYZ1lpTzlvBNbCNvj/+27BrtqBrF6T2XGgv0enIu1De5Iu7i9qgi0+6N8y5/NkHZchpZ4 +Vwpm+Vganf2XKWDeEaaQHBkc7gGWIjQ0LpH5t8Qn0Xvmv/uARFoW5evg1Ao4vOSR49XrXMGs3xtq +fJ7lddK2l4fbzIcrQzqECK+rPNv3PGYxhrCdU3nt+CPeQuMtgvEP5fqX +-----END CERTIFICATE----- + +GlobalSign Root CA - R3 +======================= +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt +iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ +0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 +rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl +OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 +xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 +lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 +EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E +bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 +YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r +kpeDMdmztcpHWD9f +-----END CERTIFICATE----- + +TC TrustCenter Universal CA III +=============================== +-----BEGIN CERTIFICATE----- +MIID4TCCAsmgAwIBAgIOYyUAAQACFI0zFQLkbPQwDQYJKoZIhvcNAQEFBQAwezELMAkGA1UEBhMC +REUxHDAaBgNVBAoTE1RDIFRydXN0Q2VudGVyIEdtYkgxJDAiBgNVBAsTG1RDIFRydXN0Q2VudGVy +IFVuaXZlcnNhbCBDQTEoMCYGA1UEAxMfVEMgVHJ1c3RDZW50ZXIgVW5pdmVyc2FsIENBIElJSTAe +Fw0wOTA5MDkwODE1MjdaFw0yOTEyMzEyMzU5NTlaMHsxCzAJBgNVBAYTAkRFMRwwGgYDVQQKExNU +QyBUcnVzdENlbnRlciBHbWJIMSQwIgYDVQQLExtUQyBUcnVzdENlbnRlciBVbml2ZXJzYWwgQ0Ex +KDAmBgNVBAMTH1RDIFRydXN0Q2VudGVyIFVuaXZlcnNhbCBDQSBJSUkwggEiMA0GCSqGSIb3DQEB +AQUAA4IBDwAwggEKAoIBAQDC2pxisLlxErALyBpXsq6DFJmzNEubkKLF5+cvAqBNLaT6hdqbJYUt +QCggbergvbFIgyIpRJ9Og+41URNzdNW88jBmlFPAQDYvDIRlzg9uwliT6CwLOunBjvvya8o84pxO +juT5fdMnnxvVZ3iHLX8LR7PH6MlIfK8vzArZQe+f/prhsq75U7Xl6UafYOPfjdN/+5Z+s7Vy+Eut +CHnNaYlAJ/Uqwa1D7KRTyGG299J5KmcYdkhtWyUB0SbFt1dpIxVbYYqt8Bst2a9c8SaQaanVDED1 +M4BDj5yjdipFtK+/fz6HP3bFzSreIMUWWMv5G/UPyw0RUmS40nZid4PxWJ//AgMBAAGjYzBhMB8G +A1UdIwQYMBaAFFbn4VslQ4Dg9ozhcbyO5YAvxEjiMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/ +BAQDAgEGMB0GA1UdDgQWBBRW5+FbJUOA4PaM4XG8juWAL8RI4jANBgkqhkiG9w0BAQUFAAOCAQEA +g8ev6n9NCjw5sWi+e22JLumzCecYV42FmhfzdkJQEw/HkG8zrcVJYCtsSVgZ1OK+t7+rSbyUyKu+ +KGwWaODIl0YgoGhnYIg5IFHYaAERzqf2EQf27OysGh+yZm5WZ2B6dF7AbZc2rrUNXWZzwCUyRdhK +BgePxLcHsU0GDeGl6/R1yrqc0L2z0zIkTO5+4nYES0lT2PLpVDP85XEfPRRclkvxOvIAu2y0+pZV +CIgJwcyRGSmwIC3/yzikQOEXvnlhgP8HA4ZMTnsGnxGGjYnuJ8Tb4rwZjgvDwxPHLQNjO9Po5KIq +woIIlBZU8O8fJ5AluA0OKBtHd0e9HKgl8ZS0Zg== +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud +EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH +DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA +bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx +ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx +51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk +R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP +T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f +Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl +osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR +crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR +saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD +KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi +6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +Izenpe.com +========== +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG +EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz +MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu +QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ +03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK +ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU ++zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC +PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT +OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK +F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK +0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+ +0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB +leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID +AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+ +SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG +NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l +Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga +kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q +hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs +g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5 +aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5 +nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC +ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo +Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z +WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +Chambers of Commerce Root - 2008 +================================ +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy +Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl +ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF +EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl +cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA +XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj +h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ +ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk +NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g +D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 +lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ +0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 +EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI +G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ +BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh +bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh +bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC +CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH +AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 +wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH +3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU +RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 +M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 +YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF +9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK +zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG +nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ +-----END CERTIFICATE----- + +Global Chambersign Root - 2008 +============================== +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx +NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg +Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ +QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf +VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf +XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 +ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB +/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA +TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M +H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe +Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF +HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB +AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT +BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE +BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm +aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm +aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp +1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 +dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG +/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 +ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s +dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg +9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH +foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du +qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr +P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq +c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- + +Go Daddy Root Certificate Authority - G2 +======================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu +MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G +A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq +9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD ++qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd +fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl +NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 +BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac +vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r +5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV +N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 +-----END CERTIFICATE----- + +Starfield Root Certificate Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 +eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw +DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg +VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB +dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv +W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs +bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfgXcVnrHigHdMWdSL5stPSksPNk +N3mSwOxGXn/hbVNMYq/NHwtjuzqd+/x5AJhhdM8mgkBj87JyahkNmcrUDnXMN/uLicFZ8WJ/X7Nf +ZTD4p7dNdloedl40wOiWVpmKs/B/pM293DIxfJHP4F8R+GuqSVzRmZTRouNjWwl2tVZi4Ut0HZbU +JtQIBFnQmA4O5t78w+wfkPECAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwHQYDVR0OBBYEFHwMMh+n2TB/xH1oo2Kooc6rB1snMA0GCSqGSIb3DQEBCwUAA4IBAQARWfol +TwNvlJk7mh+ChTnUdgWUXuEok21iXQnCoKjUsHU48TRqneSfioYmUeYs0cYtbpUgSpIB7LiKZ3sx +4mcujJUDJi5DnUox9g61DLu34jd/IroAow57UvtruzvE03lRTs2Q9GcHGcg8RnoNAX3FWOdt5oUw +F5okxBDgBPfg8n/Uqgr/Qh037ZTlZFkSIHc40zI+OIF1lnP6aI+xy84fxez6nH7PfrHxBy22/L/K +pL/QlwVKvOoYKAKQvVR4CSFx09F9HdkWsKlhPdAKACL8x3vLCWRFCztAgfd9fDL1mMpYjn0q7pBZ +c2T5NnReJaH1ZgUufzkVqSr7UIuOhWn0 +-----END CERTIFICATE----- + +Starfield Services Root Certificate Authority - G2 +================================================== +-----BEGIN CERTIFICATE----- +MIID7zCCAtegAwIBAgIBADANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xOzA5BgNVBAMTMlN0YXJmaWVsZCBTZXJ2aWNlcyBSb290IENlcnRpZmljYXRl +IEF1dGhvcml0eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgZgxCzAJBgNV +BAYTAlVTMRAwDgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxT +dGFyZmllbGQgVGVjaG5vbG9naWVzLCBJbmMuMTswOQYDVQQDEzJTdGFyZmllbGQgU2VydmljZXMg +Um9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCC +AQoCggEBANUMOsQq+U7i9b4Zl1+OiFOxHz/Lz58gE20pOsgPfTz3a3Y4Y9k2YKibXlwAgLIvWX/2 +h/klQ4bnaRtSmpDhcePYLQ1Ob/bISdm28xpWriu2dBTrz/sm4xq6HZYuajtYlIlHVv8loJNwU4Pa +hHQUw2eeBGg6345AWh1KTs9DkTvnVtYAcMtS7nt9rjrnvDH5RfbCYM8TWQIrgMw0R9+53pBlbQLP +LJGmpufehRhJfGZOozptqbXuNC66DQO4M99H67FrjSXZm86B0UVGMpZwh94CDklDhbZsc7tk6mFB +rMnUVN+HL8cisibMn1lUaJ/8viovxFUcdUBgF4UCVTmLfwUCAwEAAaNCMEAwDwYDVR0TAQH/BAUw +AwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJxfAN+qAdcwKziIorhtSpzyEZGDMA0GCSqG +SIb3DQEBCwUAA4IBAQBLNqaEd2ndOxmfZyMIbw5hyf2E3F/YNoHN2BtBLZ9g3ccaaNnRbobhiCPP +E95Dz+I0swSdHynVv/heyNXBve6SbzJ08pGCL72CQnqtKrcgfU28elUSwhXqvfdqlS5sdJ/PHLTy +xQGjhdByPq1zqwubdQxtRbeOlKyWN7Wg0I8VRw7j6IPdj/3vQQF3zCepYoUz8jcI73HPdwbeyBkd +iEDPfUYd/x7H4c7/I9vG+o1VTqkC50cRRj70/b17KSa7qWFiNyi2LSr2EIZkyXCn0q23KXB56jza +YyWf/Wi3MOxw+3WKt21gZ7IeyLnp2KhvAotnDU0mV3HaIPzBSlCNsSi6 +-----END CERTIFICATE----- + +AffirmTrust Commercial +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIId3cGJyapsXwwDQYJKoZIhvcNAQELBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMB4XDTEw +MDEyOTE0MDYwNloXDTMwMTIzMTE0MDYwNlowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBDb21tZXJjaWFsMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEA9htPZwcroRX1BiLLHwGy43NFBkRJLLtJJRTWzsO3qyxPxkEylFf6Eqdb +DuKPHx6GGaeqtS25Xw2Kwq+FNXkyLbscYjfysVtKPcrNcV/pQr6U6Mje+SJIZMblq8Yrba0F8PrV +C8+a5fBQpIs7R6UjW3p6+DM/uO+Zl+MgwdYoic+U+7lF7eNAFxHUdPALMeIrJmqbTFeurCA+ukV6 +BfO9m2kVrn1OIGPENXY6BwLJN/3HR+7o8XYdcxXyl6S1yHp52UKqK39c/s4mT6NmgTWvRLpUHhww +MmWd5jyTXlBOeuM61G7MGvv50jeuJCqrVwMiKA1JdX+3KNp1v47j3A55MQIDAQABo0IwQDAdBgNV +HQ4EFgQUnZPGU4teyq8/nx4P5ZmVvCT2lI8wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQELBQADggEBAFis9AQOzcAN/wr91LoWXym9e2iZWEnStB03TX8nfUYGXUPG +hi4+c7ImfU+TqbbEKpqrIZcUsd6M06uJFdhrJNTxFq7YpFzUf1GO7RgBsZNjvbz4YYCanrHOQnDi +qX0GJX0nof5v7LMeJNrjS1UaADs1tDvZ110w/YETifLCBivtZ8SOyUOyXGsViQK8YvxO8rUzqrJv +0wqiUOP2O+guRMLbZjipM1ZI8W0bM40NjD9gN53Tym1+NH4Nn3J2ixufcv1SNUFFApYvHLKac0kh +sUlHRUe072o0EclNmsxZt9YCnlpOZbWUrhvfKbAW8b8Angc6F2S1BLUjIZkKlTuXfO8= +-----END CERTIFICATE----- + +AffirmTrust Networking +====================== +-----BEGIN CERTIFICATE----- +MIIDTDCCAjSgAwIBAgIIfE8EORzUmS0wDQYJKoZIhvcNAQEFBQAwRDELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMB4XDTEw +MDEyOTE0MDgyNFoXDTMwMTIzMTE0MDgyNFowRDELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmly +bVRydXN0MR8wHQYDVQQDDBZBZmZpcm1UcnVzdCBOZXR3b3JraW5nMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAtITMMxcua5Rsa2FSoOujz3mUTOWUgJnLVWREZY9nZOIG41w3SfYvm4SE +Hi3yYJ0wTsyEheIszx6e/jarM3c1RNg1lho9Nuh6DtjVR6FqaYvZ/Ls6rnla1fTWcbuakCNrmreI +dIcMHl+5ni36q1Mr3Lt2PpNMCAiMHqIjHNRqrSK6mQEubWXLviRmVSRLQESxG9fhwoXA3hA/Pe24 +/PHxI1Pcv2WXb9n5QHGNfb2V1M6+oF4nI979ptAmDgAp6zxG8D1gvz9Q0twmQVGeFDdCBKNwV6gb +h+0t+nvujArjqWaJGctB+d1ENmHP4ndGyH329JKBNv3bNPFyfvMMFr20FQIDAQABo0IwQDAdBgNV +HQ4EFgQUBx/S55zawm6iQLSwelAQUHTEyL0wDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMC +AQYwDQYJKoZIhvcNAQEFBQADggEBAIlXshZ6qML91tmbmzTCnLQyFE2npN/svqe++EPbkTfOtDIu +UFUaNU52Q3Eg75N3ThVwLofDwR1t3Mu1J9QsVtFSUzpE0nPIxBsFZVpikpzuQY0x2+c06lkh1QF6 +12S4ZDnNye2v7UsDSKegmQGA3GWjNq5lWUhPgkvIZfFXHeVZLgo/bNjR9eUJtGxUAArgFU2HdW23 +WJZa3W3SAKD0m0i+wzekujbgfIeFlxoVot4uolu9rxj5kFDNcFn4J2dHy8egBzp90SxdbBk6ZrV9 +/ZFvgrG+CJPbFEfxojfHRZ48x3evZKiT3/Zpg4Jg8klCNO1aAFSFHBY2kgxc+qatv9s= +-----END CERTIFICATE----- + +AffirmTrust Premium +=================== +-----BEGIN CERTIFICATE----- +MIIFRjCCAy6gAwIBAgIIbYwURrGmCu4wDQYJKoZIhvcNAQEMBQAwQTELMAkGA1UEBhMCVVMxFDAS +BgNVBAoMC0FmZmlybVRydXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMB4XDTEwMDEy +OTE0MTAzNloXDTQwMTIzMTE0MTAzNlowQTELMAkGA1UEBhMCVVMxFDASBgNVBAoMC0FmZmlybVRy +dXN0MRwwGgYDVQQDDBNBZmZpcm1UcnVzdCBQcmVtaXVtMIICIjANBgkqhkiG9w0BAQEFAAOCAg8A +MIICCgKCAgEAxBLfqV/+Qd3d9Z+K4/as4Tx4mrzY8H96oDMq3I0gW64tb+eT2TZwamjPjlGjhVtn +BKAQJG9dKILBl1fYSCkTtuG+kU3fhQxTGJoeJKJPj/CihQvL9Cl/0qRY7iZNyaqoe5rZ+jjeRFcV +5fiMyNlI4g0WJx0eyIOFJbe6qlVBzAMiSy2RjYvmia9mx+n/K+k8rNrSs8PhaJyJ+HoAVt70VZVs ++7pk3WKL3wt3MutizCaam7uqYoNMtAZ6MMgpv+0GTZe5HMQxK9VfvFMSF5yZVylmd2EhMQcuJUmd +GPLu8ytxjLW6OQdJd/zvLpKQBY0tL3d770O/Nbua2Plzpyzy0FfuKE4mX4+QaAkvuPjcBukumj5R +p9EixAqnOEhss/n/fauGV+O61oV4d7pD6kh/9ti+I20ev9E2bFhc8e6kGVQa9QPSdubhjL08s9NI +S+LI+H+SqHZGnEJlPqQewQcDWkYtuJfzt9WyVSHvutxMAJf7FJUnM7/oQ0dG0giZFmA7mn7S5u04 +6uwBHjxIVkkJx0w3AJ6IDsBz4W9m6XJHMD4Q5QsDyZpCAGzFlH5hxIrff4IaC1nEWTJ3s7xgaVY5 +/bQGeyzWZDbZvUjthB9+pSKPKrhC9IK31FOQeE4tGv2Bb0TXOwF0lkLgAOIua+rF7nKsu7/+6qqo ++Nz2snmKtmcCAwEAAaNCMEAwHQYDVR0OBBYEFJ3AZ6YMItkm9UWrpmVSESfYRaxjMA8GA1UdEwEB +/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBDAUAA4ICAQCzV00QYk465KzquByv +MiPIs0laUZx2KI15qldGF9X1Uva3ROgIRL8YhNILgM3FEv0AVQVhh0HctSSePMTYyPtwni94loMg +Nt58D2kTiKV1NpgIpsbfrM7jWNa3Pt668+s0QNiigfV4Py/VpfzZotReBA4Xrf5B8OWycvpEgjNC +6C1Y91aMYj+6QrCcDFx+LmUmXFNPALJ4fqENmS2NuB2OosSw/WDQMKSOyARiqcTtNd56l+0OOF6S +L5Nwpamcb6d9Ex1+xghIsV5n61EIJenmJWtSKZGc0jlzCFfemQa0W50QBuHCAKi4HEoCChTQwUHK ++4w1IX2COPKpVJEZNZOUbWo6xbLQu4mGk+ibyQ86p3q4ofB4Rvr8Ny/lioTz3/4E2aFooC8k4gmV +BtWVyuEklut89pMFu+1z6S3RdTnX5yTb2E5fQ4+e0BQ5v1VwSJlXMbSc7kqYA5YwH2AG7hsj/oFg +IxpHYoWlzBk0gG+zrBrjn/B7SK3VAdlntqlyk+otZrWyuOQ9PLLvTIzq6we/qzWaVYa8GKa1qF60 +g2xraUDTn9zxw2lrueFtCfTxqlB2Cnp9ehehVZZCmTEJ3WARjQUwfuaORtGdFNrHF+QFlozEJLUb +zxQHskD4o55BhrwE0GuWyCqANP2/7waj3VjFhT0+j/6eKeC2uAloGRwYQw== +-----END CERTIFICATE----- + +AffirmTrust Premium ECC +======================= +-----BEGIN CERTIFICATE----- +MIIB/jCCAYWgAwIBAgIIdJclisc/elQwCgYIKoZIzj0EAwMwRTELMAkGA1UEBhMCVVMxFDASBgNV +BAoMC0FmZmlybVRydXN0MSAwHgYDVQQDDBdBZmZpcm1UcnVzdCBQcmVtaXVtIEVDQzAeFw0xMDAx +MjkxNDIwMjRaFw00MDEyMzExNDIwMjRaMEUxCzAJBgNVBAYTAlVTMRQwEgYDVQQKDAtBZmZpcm1U +cnVzdDEgMB4GA1UEAwwXQWZmaXJtVHJ1c3QgUHJlbWl1bSBFQ0MwdjAQBgcqhkjOPQIBBgUrgQQA +IgNiAAQNMF4bFZ0D0KF5Nbc6PJJ6yhUczWLznCZcBz3lVPqj1swS6vQUX+iOGasvLkjmrBhDeKzQ +N8O9ss0s5kfiGuZjuD0uL3jET9v0D6RoTFVya5UdThhClXjMNzyR4ptlKymjQjBAMB0GA1UdDgQW +BBSaryl6wBE1NSZRMADDav5A1a7WPDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAK +BggqhkjOPQQDAwNnADBkAjAXCfOHiFBar8jAQr9HX/VsaobgxCd05DhT1wV/GzTjxi+zygk8N53X +57hG8f2h4nECMEJZh0PUUd+60wkyWs6Iflc9nF9Ca/UHLbXwgpP5WW+uZPpY5Yse42O+tYHNbwKM +eQ== +-----END CERTIFICATE----- + +Certum Trusted Network CA +========================= +-----BEGIN CERTIFICATE----- +MIIDuzCCAqOgAwIBAgIDBETAMA0GCSqGSIb3DQEBBQUAMH4xCzAJBgNVBAYTAlBMMSIwIAYDVQQK +ExlVbml6ZXRvIFRlY2hub2xvZ2llcyBTLkEuMScwJQYDVQQLEx5DZXJ0dW0gQ2VydGlmaWNhdGlv +biBBdXRob3JpdHkxIjAgBgNVBAMTGUNlcnR1bSBUcnVzdGVkIE5ldHdvcmsgQ0EwHhcNMDgxMDIy +MTIwNzM3WhcNMjkxMjMxMTIwNzM3WjB+MQswCQYDVQQGEwJQTDEiMCAGA1UEChMZVW5pemV0byBU +ZWNobm9sb2dpZXMgUy5BLjEnMCUGA1UECxMeQ2VydHVtIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MSIwIAYDVQQDExlDZXJ0dW0gVHJ1c3RlZCBOZXR3b3JrIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC +AQ8AMIIBCgKCAQEA4/t9o3K6wvDJFIf1awFO4W5AB7ptJ11/91sts1rHUV+rpDKmYYe2bg+G0jAC +l/jXaVehGDldamR5xgFZrDwxSjh80gTSSyjoIF87B6LMTXPb865Px1bVWqeWifrzq2jUI4ZZJ88J +J7ysbnKDHDBy3+Ci6dLhdHUZvSqeexVUBBvXQzmtVSjF4hq79MDkrjhJM8x2hZ85RdKknvISjFH4 +fOQtf/WsX+sWn7Et0brMkUJ3TCXJkDhv2/DM+44el1k+1WBO5gUo7Ul5E0u6SNsv+XLTOcr+H9g0 +cvW0QM8xAcPs3hEtF10fuFDRXhmnad4HMyjKUJX5p1TLVIZQRan5SQIDAQABo0IwQDAPBgNVHRMB +Af8EBTADAQH/MB0GA1UdDgQWBBQIds3LB/8k9sXN7buQvOKEN0Z19zAOBgNVHQ8BAf8EBAMCAQYw +DQYJKoZIhvcNAQEFBQADggEBAKaorSLOAT2mo/9i0Eidi15ysHhE49wcrwn9I0j6vSrEuVUEtRCj +jSfeC4Jj0O7eDDd5QVsisrCaQVymcODU0HfLI9MA4GxWL+FpDQ3Zqr8hgVDZBqWo/5U30Kr+4rP1 +mS1FhIrlQgnXdAIv94nYmem8J9RHjboNRhx3zxSkHLmkMcScKHQDNP8zGSal6Q10tz6XxnboJ5aj +Zt3hrvJBW8qYVoNzcOSGGtIxQbovvi0TWnZvTuhOgQ4/WwMioBK+ZlgRSssDxLQqKi2WF+A5VLxI +03YnnZotBqbJ7DnSq9ufmgsnAjUpsUCV5/nonFWIGUbWtzT1fs45mtk48VH3Tyw= +-----END CERTIFICATE----- + +Certinomis - Autorité Racine +============================= +-----BEGIN CERTIFICATE----- +MIIFnDCCA4SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJGUjETMBEGA1UEChMK +Q2VydGlub21pczEXMBUGA1UECxMOMDAwMiA0MzM5OTg5MDMxJjAkBgNVBAMMHUNlcnRpbm9taXMg +LSBBdXRvcml0w6kgUmFjaW5lMB4XDTA4MDkxNzA4Mjg1OVoXDTI4MDkxNzA4Mjg1OVowYzELMAkG +A1UEBhMCRlIxEzARBgNVBAoTCkNlcnRpbm9taXMxFzAVBgNVBAsTDjAwMDIgNDMzOTk4OTAzMSYw +JAYDVQQDDB1DZXJ0aW5vbWlzIC0gQXV0b3JpdMOpIFJhY2luZTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJ2Fn4bT46/HsmtuM+Cet0I0VZ35gb5j2CN2DpdUzZlMGvE5x4jYF1AMnmHa +wE5V3udauHpOd4cN5bjr+p5eex7Ezyh0x5P1FMYiKAT5kcOrJ3NqDi5N8y4oH3DfVS9O7cdxbwly +Lu3VMpfQ8Vh30WC8Tl7bmoT2R2FFK/ZQpn9qcSdIhDWerP5pqZ56XjUl+rSnSTV3lqc2W+HN3yNw +2F1MpQiD8aYkOBOo7C+ooWfHpi2GR+6K/OybDnT0K0kCe5B1jPyZOQE51kqJ5Z52qz6WKDgmi92N +jMD2AR5vpTESOH2VwnHu7XSu5DaiQ3XV8QCb4uTXzEIDS3h65X27uK4uIJPT5GHfceF2Z5c/tt9q +c1pkIuVC28+BA5PY9OMQ4HL2AHCs8MF6DwV/zzRpRbWT5BnbUhYjBYkOjUjkJW+zeL9i9Qf6lSTC +lrLooyPCXQP8w9PlfMl1I9f09bze5N/NgL+RiH2nE7Q5uiy6vdFrzPOlKO1Enn1So2+WLhl+HPNb +xxaOu2B9d2ZHVIIAEWBsMsGoOBvrbpgT1u449fCfDu/+MYHB0iSVL1N6aaLwD4ZFjliCK0wi1F6g +530mJ0jfJUaNSih8hp75mxpZuWW/Bd22Ql095gBIgl4g9xGC3srYn+Y3RyYe63j3YcNBZFgCQfna +4NH4+ej9Uji29YnfAgMBAAGjWzBZMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0G +A1UdDgQWBBQNjLZh2kS40RR9w759XkjwzspqsDAXBgNVHSAEEDAOMAwGCiqBegFWAgIAAQEwDQYJ +KoZIhvcNAQEFBQADggIBACQ+YAZ+He86PtvqrxyaLAEL9MW12Ukx9F1BjYkMTv9sov3/4gbIOZ/x +WqndIlgVqIrTseYyCYIDbNc/CMf4uboAbbnW/FIyXaR/pDGUu7ZMOH8oMDX/nyNTt7buFHAAQCva +R6s0fl6nVjBhK4tDrP22iCj1a7Y+YEq6QpA0Z43q619FVDsXrIvkxmUP7tCMXWY5zjKn2BCXwH40 +nJ+U8/aGH88bc62UeYdocMMzpXDn2NU4lG9jeeu/Cg4I58UvD0KgKxRA/yHgBcUn4YQRE7rWhh1B +CxMjidPJC+iKunqjo3M3NYB9Ergzd0A4wPpeMNLytqOx1qKVl4GbUu1pTP+A5FPbVFsDbVRfsbjv +JL1vnxHDx2TCDyhihWZeGnuyt++uNckZM6i4J9szVb9o4XVIRFb7zdNIu0eJOqxp9YDG5ERQL1TE +qkPFMTFYvZbF6nVsmnWxTfj3l/+WFvKXTej28xH5On2KOG4Ey+HTRRWqpdEdnV1j6CTmNhTih60b +WfVEm/vXd3wfAXBioSAaosUaKPQhA+4u2cGA6rnZgtZbdsLLO7XSAPCjDuGtbkD326C00EauFddE +wk01+dIL8hf2rGbVJLJP0RyZwG71fet0BLj5TXcJ17TPBzAJ8bgAVtkXFhYKK4bfjwEZGuW7gmP/ +vgt2Fl43N+bYdJeimUV5 +-----END CERTIFICATE----- + +Root CA Generalitat Valenciana +============================== +-----BEGIN CERTIFICATE----- +MIIGizCCBXOgAwIBAgIEO0XlaDANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJFUzEfMB0GA1UE +ChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290 +IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwHhcNMDEwNzA2MTYyMjQ3WhcNMjEwNzAxMTUyMjQ3 +WjBoMQswCQYDVQQGEwJFUzEfMB0GA1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UE +CxMGUEtJR1ZBMScwJQYDVQQDEx5Sb290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmEwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGKqtXETcvIorKA3Qdyu0togu8M1JAJke+WmmmO3I2 +F0zo37i7L3bhQEZ0ZQKQUgi0/6iMweDHiVYQOTPvaLRfX9ptI6GJXiKjSgbwJ/BXufjpTjJ3Cj9B +ZPPrZe52/lSqfR0grvPXdMIKX/UIKFIIzFVd0g/bmoGlu6GzwZTNVOAydTGRGmKy3nXiz0+J2ZGQ +D0EbtFpKd71ng+CT516nDOeB0/RSrFOyA8dEJvt55cs0YFAQexvba9dHq198aMpunUEDEO5rmXte +JajCq+TA81yc477OMUxkHl6AovWDfgzWyoxVjr7gvkkHD6MkQXpYHYTqWBLI4bft75PelAgxAgMB +AAGjggM7MIIDNzAyBggrBgEFBQcBAQQmMCQwIgYIKwYBBQUHMAGGFmh0dHA6Ly9vY3NwLnBraS5n +dmEuZXMwEgYDVR0TAQH/BAgwBgEB/wIBAjCCAjQGA1UdIASCAiswggInMIICIwYKKwYBBAG/VQIB +ADCCAhMwggHoBggrBgEFBQcCAjCCAdoeggHWAEEAdQB0AG8AcgBpAGQAYQBkACAAZABlACAAQwBl +AHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAFIAYQDtAHoAIABkAGUAIABsAGEAIABHAGUAbgBlAHIA +YQBsAGkAdABhAHQAIABWAGEAbABlAG4AYwBpAGEAbgBhAC4ADQAKAEwAYQAgAEQAZQBjAGwAYQBy +AGEAYwBpAPMAbgAgAGQAZQAgAFAAcgDhAGMAdABpAGMAYQBzACAAZABlACAAQwBlAHIAdABpAGYA +aQBjAGEAYwBpAPMAbgAgAHEAdQBlACAAcgBpAGcAZQAgAGUAbAAgAGYAdQBuAGMAaQBvAG4AYQBt +AGkAZQBuAHQAbwAgAGQAZQAgAGwAYQAgAHAAcgBlAHMAZQBuAHQAZQAgAEEAdQB0AG8AcgBpAGQA +YQBkACAAZABlACAAQwBlAHIAdABpAGYAaQBjAGEAYwBpAPMAbgAgAHMAZQAgAGUAbgBjAHUAZQBu +AHQAcgBhACAAZQBuACAAbABhACAAZABpAHIAZQBjAGMAaQDzAG4AIAB3AGUAYgAgAGgAdAB0AHAA +OgAvAC8AdwB3AHcALgBwAGsAaQAuAGcAdgBhAC4AZQBzAC8AYwBwAHMwJQYIKwYBBQUHAgEWGWh0 +dHA6Ly93d3cucGtpLmd2YS5lcy9jcHMwHQYDVR0OBBYEFHs100DSHHgZZu90ECjcPk+yeAT8MIGV +BgNVHSMEgY0wgYqAFHs100DSHHgZZu90ECjcPk+yeAT8oWykajBoMQswCQYDVQQGEwJFUzEfMB0G +A1UEChMWR2VuZXJhbGl0YXQgVmFsZW5jaWFuYTEPMA0GA1UECxMGUEtJR1ZBMScwJQYDVQQDEx5S +b290IENBIEdlbmVyYWxpdGF0IFZhbGVuY2lhbmGCBDtF5WgwDQYJKoZIhvcNAQEFBQADggEBACRh +TvW1yEICKrNcda3FbcrnlD+laJWIwVTAEGmiEi8YPyVQqHxK6sYJ2fR1xkDar1CdPaUWu20xxsdz +Ckj+IHLtb8zog2EWRpABlUt9jppSCS/2bxzkoXHPjCpaF3ODR00PNvsETUlR4hTJZGH71BTg9J63 +NI8KJr2XXPR5OkowGcytT6CYirQxlyric21+eLj4iIlPsSKRZEv1UN4D2+XFducTZnV+ZfsBn5OH +iJ35Rld8TWCvmHMTI6QgkYH60GFmuH3Rr9ZvHmw96RH9qfmCIoaZM3Fa6hlXPZHNqcCjbgcTpsnt ++GijnsNacgmHKNHEc8RzGF9QdRYxn7fofMM= +-----END CERTIFICATE----- + +A-Trust-nQual-03 +================ +-----BEGIN CERTIFICATE----- +MIIDzzCCAregAwIBAgIDAWweMA0GCSqGSIb3DQEBBQUAMIGNMQswCQYDVQQGEwJBVDFIMEYGA1UE +Cgw/QS1UcnVzdCBHZXMuIGYuIFNpY2hlcmhlaXRzc3lzdGVtZSBpbSBlbGVrdHIuIERhdGVudmVy +a2VociBHbWJIMRkwFwYDVQQLDBBBLVRydXN0LW5RdWFsLTAzMRkwFwYDVQQDDBBBLVRydXN0LW5R +dWFsLTAzMB4XDTA1MDgxNzIyMDAwMFoXDTE1MDgxNzIyMDAwMFowgY0xCzAJBgNVBAYTAkFUMUgw +RgYDVQQKDD9BLVRydXN0IEdlcy4gZi4gU2ljaGVyaGVpdHNzeXN0ZW1lIGltIGVsZWt0ci4gRGF0 +ZW52ZXJrZWhyIEdtYkgxGTAXBgNVBAsMEEEtVHJ1c3QtblF1YWwtMDMxGTAXBgNVBAMMEEEtVHJ1 +c3QtblF1YWwtMDMwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtPWFuA/OQO8BBC4SA +zewqo51ru27CQoT3URThoKgtUaNR8t4j8DRE/5TrzAUjlUC5B3ilJfYKvUWG6Nm9wASOhURh73+n +yfrBJcyFLGM/BWBzSQXgYHiVEEvc+RFZznF/QJuKqiTfC0Li21a8StKlDJu3Qz7dg9MmEALP6iPE +SU7l0+m0iKsMrmKS1GWH2WrX9IWf5DMiJaXlyDO6w8dB3F/GaswADm0yqLaHNgBid5seHzTLkDx4 +iHQF63n1k3Flyp3HaxgtPVxO59X4PzF9j4fsCiIvI+n+u33J4PTs63zEsMMtYrWacdaxaujs2e3V +cuy+VwHOBVWf3tFgiBCzAgMBAAGjNjA0MA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0OBAoECERqlWdV +eRFPMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAVdRU0VlIXLOThaq/Yy/kgM40 +ozRiPvbY7meIMQQDbwvUB/tOdQ/TLtPAF8fGKOwGDREkDg6lXb+MshOWcdzUzg4NCmgybLlBMRmr +sQd7TZjTXLDR8KdCoLXEjq/+8T/0709GAHbrAvv5ndJAlseIOrifEXnzgGWovR/TeIGgUUw3tKZd +JXDRZslo+S4RFGjxVJgIrCaSD96JntT6s3kr0qN51OyLrIdTaEJMUVF0HhsnLuP1Hyl0Te2v9+GS +mYHovjrHF1D2t8b8m7CKa9aIA5GPBnc6hQLdmNVDeD/GMBWsm2vLV7eJUYs66MmEDNuxUCAKGkq6 +ahq97BvIxYSazQ== +-----END CERTIFICATE----- + +TWCA Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIDezCCAmOgAwIBAgIBATANBgkqhkiG9w0BAQUFADBfMQswCQYDVQQGEwJUVzESMBAGA1UECgwJ +VEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NBIFJvb3QgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkwHhcNMDgwODI4MDcyNDMzWhcNMzAxMjMxMTU1OTU5WjBfMQswCQYDVQQG +EwJUVzESMBAGA1UECgwJVEFJV0FOLUNBMRAwDgYDVQQLDAdSb290IENBMSowKAYDVQQDDCFUV0NB +IFJvb3QgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEK +AoIBAQCwfnK4pAOU5qfeCTiRShFAh6d8WWQUe7UREN3+v9XAu1bihSX0NXIP+FPQQeFEAcK0HMMx +QhZHhTMidrIKbw/lJVBPhYa+v5guEGcevhEFhgWQxFnQfHgQsIBct+HHK3XLfJ+utdGdIzdjp9xC +oi2SBBtQwXu4PhvJVgSLL1KbralW6cH/ralYhzC2gfeXRfwZVzsrb+RH9JlF/h3x+JejiB03HFyP +4HYlmlD4oFT/RJB2I9IyxsOrBr/8+7/zrX2SYgJbKdM1o5OaQ2RgXbL6Mv87BK9NQGr5x+PvI/1r +y+UPizgN7gr8/g+YnzAx3WxSZfmLgb4i4RxYA7qRG4kHAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIB +BjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRqOFsmjd6LWvJPelSDGRjjCDWmujANBgkqhkiG +9w0BAQUFAAOCAQEAPNV3PdrfibqHDAhUaiBQkr6wQT25JmSDCi/oQMCXKCeCMErJk/9q56YAf4lC +mtYR5VPOL8zy2gXE/uJQxDqGfczafhAJO5I1KlOy/usrBdlsXebQ79NqZp4VKIV66IIArB6nCWlW +QtNoURi+VJq/REG6Sb4gumlc7rh3zc5sH62Dlhh9DrUUOYTxKOkto557HnpyWoOzeW/vtPzQCqVY +T0bf+215WfKEIlKuD8z7fDvnaspHYcN6+NOSBB+4IIThNlQWx0DeO4pz3N/GCUzf7Nr/1FNCocny +Yh0igzyXxfkZYiesZSLX0zzG5Y6yU8xJzrww/nsOM5D77dIUkR8Hrw== +-----END CERTIFICATE----- + +Security Communication RootCA2 +============================== +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIBADANBgkqhkiG9w0BAQsFADBdMQswCQYDVQQGEwJKUDElMCMGA1UEChMc +U0VDT00gVHJ1c3QgU3lzdGVtcyBDTy4sTFRELjEnMCUGA1UECxMeU2VjdXJpdHkgQ29tbXVuaWNh +dGlvbiBSb290Q0EyMB4XDTA5MDUyOTA1MDAzOVoXDTI5MDUyOTA1MDAzOVowXTELMAkGA1UEBhMC +SlAxJTAjBgNVBAoTHFNFQ09NIFRydXN0IFN5c3RlbXMgQ08uLExURC4xJzAlBgNVBAsTHlNlY3Vy +aXR5IENvbW11bmljYXRpb24gUm9vdENBMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ANAVOVKxUrO6xVmCxF1SrjpDZYBLx/KWvNs2l9amZIyoXvDjChz335c9S672XewhtUGrzbl+dp++ ++T42NKA7wfYxEUV0kz1XgMX5iZnK5atq1LXaQZAQwdbWQonCv/Q4EpVMVAX3NuRFg3sUZdbcDE3R +3n4MqzvEFb46VqZab3ZpUql6ucjrappdUtAtCms1FgkQhNBqyjoGADdH5H5XTz+L62e4iKrFvlNV +spHEfbmwhRkGeC7bYRr6hfVKkaHnFtWOojnflLhwHyg/i/xAXmODPIMqGplrz95Zajv8bxbXH/1K +EOtOghY6rCcMU/Gt1SSwawNQwS08Ft1ENCcadfsCAwEAAaNCMEAwHQYDVR0OBBYEFAqFqXdlBZh8 +QIH4D5csOPEK7DzPMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEB +CwUAA4IBAQBMOqNErLlFsceTfsgLCkLfZOoc7llsCLqJX2rKSpWeeo8HxdpFcoJxDjrSzG+ntKEj +u/Ykn8sX/oymzsLS28yN/HH8AynBbF0zX2S2ZTuJbxh2ePXcokgfGT+Ok+vx+hfuzU7jBBJV1uXk +3fs+BXziHV7Gp7yXT2g69ekuCkO2r1dcYmh8t/2jioSgrGK+KwmHNPBqAbubKVY8/gA3zyNs8U6q +tnRGEmyR7jTV7JqR50S+kDFy1UkC9gLl9B/rfNmWVan/7Ir5mUf/NVoCqgTLiluHcSmRvaS0eg29 +mvVXIwAHIRc/SjnRBUkLp7Y3gaVdjKozXoEofKd9J+sAro03 +-----END CERTIFICATE----- + +EC-ACC +====== +-----BEGIN CERTIFICATE----- +MIIFVjCCBD6gAwIBAgIQ7is969Qh3hSoYqwE893EATANBgkqhkiG9w0BAQUFADCB8zELMAkGA1UE +BhMCRVMxOzA5BgNVBAoTMkFnZW5jaWEgQ2F0YWxhbmEgZGUgQ2VydGlmaWNhY2lvIChOSUYgUS0w +ODAxMTc2LUkpMSgwJgYDVQQLEx9TZXJ2ZWlzIFB1YmxpY3MgZGUgQ2VydGlmaWNhY2lvMTUwMwYD +VQQLEyxWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5ldC92ZXJhcnJlbCAoYykwMzE1MDMGA1UE +CxMsSmVyYXJxdWlhIEVudGl0YXRzIGRlIENlcnRpZmljYWNpbyBDYXRhbGFuZXMxDzANBgNVBAMT +BkVDLUFDQzAeFw0wMzAxMDcyMzAwMDBaFw0zMTAxMDcyMjU5NTlaMIHzMQswCQYDVQQGEwJFUzE7 +MDkGA1UEChMyQWdlbmNpYSBDYXRhbGFuYSBkZSBDZXJ0aWZpY2FjaW8gKE5JRiBRLTA4MDExNzYt +SSkxKDAmBgNVBAsTH1NlcnZlaXMgUHVibGljcyBkZSBDZXJ0aWZpY2FjaW8xNTAzBgNVBAsTLFZl +Z2V1IGh0dHBzOi8vd3d3LmNhdGNlcnQubmV0L3ZlcmFycmVsIChjKTAzMTUwMwYDVQQLEyxKZXJh +cnF1aWEgRW50aXRhdHMgZGUgQ2VydGlmaWNhY2lvIENhdGFsYW5lczEPMA0GA1UEAxMGRUMtQUND +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsyLHT+KXQpWIR4NA9h0X84NzJB5R85iK +w5K4/0CQBXCHYMkAqbWUZRkiFRfCQ2xmRJoNBD45b6VLeqpjt4pEndljkYRm4CgPukLjbo73FCeT +ae6RDqNfDrHrZqJyTxIThmV6PttPB/SnCWDaOkKZx7J/sxaVHMf5NLWUhdWZXqBIoH7nF2W4onW4 +HvPlQn2v7fOKSGRdghST2MDk/7NQcvJ29rNdQlB50JQ+awwAvthrDk4q7D7SzIKiGGUzE3eeml0a +E9jD2z3Il3rucO2n5nzbcc8tlGLfbdb1OL4/pYUKGbio2Al1QnDE6u/LDsg0qBIimAy4E5S2S+zw +0JDnJwIDAQABo4HjMIHgMB0GA1UdEQQWMBSBEmVjX2FjY0BjYXRjZXJ0Lm5ldDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUoMOLRKo3pUW/l4Ba0fF4opvpXY0wfwYD +VR0gBHgwdjB0BgsrBgEEAfV4AQMBCjBlMCwGCCsGAQUFBwIBFiBodHRwczovL3d3dy5jYXRjZXJ0 +Lm5ldC92ZXJhcnJlbDA1BggrBgEFBQcCAjApGidWZWdldSBodHRwczovL3d3dy5jYXRjZXJ0Lm5l +dC92ZXJhcnJlbCAwDQYJKoZIhvcNAQEFBQADggEBAKBIW4IB9k1IuDlVNZyAelOZ1Vr/sXE7zDkJ +lF7W2u++AVtd0x7Y/X1PzaBB4DSTv8vihpw3kpBWHNzrKQXlxJ7HNd+KDM3FIUPpqojlNcAZQmNa +Al6kSBg6hW/cnbw/nZzBh7h6YQjpdwt/cKt63dmXLGQehb+8dJahw3oS7AwaboMMPOhyRp/7SNVe +l+axofjk70YllJyJ22k4vuxcDlbHZVHlUIiIv0LVKz3l+bqeLrPK9HOSAgu+TGbrIP65y7WZf+a2 +E/rKS03Z7lNGBjvGTq2TWoF+bCpLagVFjPIhpDGQh2xlnJ2lYJU6Un/10asIbvPuW/mIPX64b24D +5EI= +-----END CERTIFICATE----- + +Hellenic Academic and Research Institutions RootCA 2011 +======================================================= +-----BEGIN CERTIFICATE----- +MIIEMTCCAxmgAwIBAgIBADANBgkqhkiG9w0BAQUFADCBlTELMAkGA1UEBhMCR1IxRDBCBgNVBAoT +O0hlbGxlbmljIEFjYWRlbWljIGFuZCBSZXNlYXJjaCBJbnN0aXR1dGlvbnMgQ2VydC4gQXV0aG9y +aXR5MUAwPgYDVQQDEzdIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IFJvb3RDQSAyMDExMB4XDTExMTIwNjEzNDk1MloXDTMxMTIwMTEzNDk1MlowgZUxCzAJBgNVBAYT +AkdSMUQwQgYDVQQKEztIZWxsZW5pYyBBY2FkZW1pYyBhbmQgUmVzZWFyY2ggSW5zdGl0dXRpb25z +IENlcnQuIEF1dGhvcml0eTFAMD4GA1UEAxM3SGVsbGVuaWMgQWNhZGVtaWMgYW5kIFJlc2VhcmNo +IEluc3RpdHV0aW9ucyBSb290Q0EgMjAxMTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +AKlTAOMupvaO+mDYLZU++CwqVE7NuYRhlFhPjz2L5EPzdYmNUeTDN9KKiE15HrcS3UN4SoqS5tdI +1Q+kOilENbgH9mgdVc04UfCMJDGFr4PJfel3r+0ae50X+bOdOFAPplp5kYCvN66m0zH7tSYJnTxa +71HFK9+WXesyHgLacEnsbgzImjeN9/E2YEsmLIKe0HjzDQ9jpFEw4fkrJxIH2Oq9GGKYsFk3fb7u +8yBRQlqD75O6aRXxYp2fmTmCobd0LovUxQt7L/DICto9eQqakxylKHJzkUOap9FNhYS5qXSPFEDH +3N6sQWRstBmbAmNtJGSPRLIl6s5ddAxjMlyNh+UCAwEAAaOBiTCBhjAPBgNVHRMBAf8EBTADAQH/ +MAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQUppFC/RNhSiOeCKQp5dgTBCPuQSUwRwYDVR0eBEAwPqA8 +MAWCAy5ncjAFggMuZXUwBoIELmVkdTAGggQub3JnMAWBAy5ncjAFgQMuZXUwBoEELmVkdTAGgQQu +b3JnMA0GCSqGSIb3DQEBBQUAA4IBAQAf73lB4XtuP7KMhjdCSk4cNx6NZrokgclPEg8hwAOXhiVt +XdMiKahsog2p6z0GW5k6x8zDmjR/qw7IThzh+uTczQ2+vyT+bOdrwg3IBp5OjWEopmr95fZi6hg8 +TqBTnbI6nOulnJEWtk2C4AwFSKls9cz4y51JtPACpf1wA+2KIaWuE4ZJwzNzvoc7dIsXRSZMFpGD +/md9zU1jZ/rzAxKWeAaNsWftjj++n08C9bMJL/NMh98qy5V8AcysNnq/onN694/BtZqhFLKPM58N +7yLcZnuEvUUXBj08yrl3NI/K6s8/MT7jiOOASSXIl7WdmplNsDz4SgCbZN2fOUvRJ9e4 +-----END CERTIFICATE----- + +Actalis Authentication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQxDjAM +BgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UE +AwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMwMDky +MjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlz +IFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290 +IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTufClrJ +wkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlNAJZa +by/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45RnijMCO6 +zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9Zg1f +YVEiVRvjRuPjPdA1YprbrxTIW6HMiRvhMCb8oJsfgadHHwTrozmSBp+Z07/T6k9QnBn+locePGX2 +oxgkg4YQ51Q+qDp2JE+BIcXjDwL4k5RHILv+1A7TaLndxHqEguNTVHnd25zS8gebLra8Pu2Fbe8l +EfKXGkJh90qX6IuxEAf6ZYGyojnP9zz/GPvG8VqLWeICrHuS0E4UT1lF9gxeKF+w6D9Fz8+vm2/7 +hNN3WpVvrJSEnu68wEqPSpP4RCHiMUVhUE4Q2OM1fEwZtN4Fv6MGn8i1zeQf1xcGDXqVdFUNaBr8 +EBtiZJ1t4JWgw5QHVw0U5r0F+7if5t+L4sbnfpb2U8WANFAoWPASUHEXMLrmeGO89LKtmyuy/uE5 +jF66CyCU3nuDuP/jVo23Eek7jPKxwV2dpAtMK9myGPW1n0sCAwEAAaNjMGEwHQYDVR0OBBYEFFLY +iDrIn3hm7YnzezhwlMkCAjbQMA8GA1UdEwEB/wQFMAMBAf8wHwYDVR0jBBgwFoAUUtiIOsifeGbt +ifN7OHCUyQICNtAwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEBCwUAA4ICAQALe3KHwGCmSUyI +WOYdiPcUZEim2FgKDk8TNd81HdTtBjHIgT5q1d07GjLukD0R0i70jsNjLiNmsGe+b7bAEzlgqqI0 +JZN1Ut6nna0Oh4lScWoWPBkdg/iaKWW+9D+a2fDzWochcYBNy+A4mz+7+uAwTc+G02UQGRjRlwKx +K3JCaKygvU5a2hi/a5iB0P2avl4VSM0RFbnAKVy06Ij3Pjaut2L9HmLecHgQHEhb2rykOLpn7VU+ +Xlff1ANATIGk0k9jpwlCCRT8AKnCgHNPLsBA2RF7SOp6AsDT6ygBJlh0wcBzIm2Tlf05fbsq4/aC +4yyXX04fkZT6/iyj2HYauE2yOE+b+h1IYHkm4vP9qdCa6HCPSXrW5b0KDtst842/6+OkfcvHlXHo +2qN8xcL4dJIEG4aspCJTQLas/kx2z/uUMsA1n3Y/buWQbqCmJqK4LL7RK4X9p2jIugErsWx0Hbhz +lefut8cl8ABMALJ+tguLHPPAUJ4lueAI3jZm/zel0btUZCzJJ7VLkn5l/9Mt4blOvH+kQSGQQXem +OR/qnuOf0GZvBeyqdn6/axag67XH/JJULysRJyU3eExRarDzzFhdFPFqSBX/wge2sY0PjlxQRrM9 +vwGYT7JZVEc+NHt4bVaTLnPqZih4zR0Uv6CPLy64Lo7yFIrM6bV8+2ydDKXhlg== +-----END CERTIFICATE----- + +Trustis FPS Root CA +=================== +-----BEGIN CERTIFICATE----- +MIIDZzCCAk+gAwIBAgIQGx+ttiD5JNM2a/fH8YygWTANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQG +EwJHQjEYMBYGA1UEChMPVHJ1c3RpcyBMaW1pdGVkMRwwGgYDVQQLExNUcnVzdGlzIEZQUyBSb290 +IENBMB4XDTAzMTIyMzEyMTQwNloXDTI0MDEyMTExMzY1NFowRTELMAkGA1UEBhMCR0IxGDAWBgNV +BAoTD1RydXN0aXMgTGltaXRlZDEcMBoGA1UECxMTVHJ1c3RpcyBGUFMgUm9vdCBDQTCCASIwDQYJ +KoZIhvcNAQEBBQADggEPADCCAQoCggEBAMVQe547NdDfxIzNjpvto8A2mfRC6qc+gIMPpqdZh8mQ +RUN+AOqGeSoDvT03mYlmt+WKVoaTnGhLaASMk5MCPjDSNzoiYYkchU59j9WvezX2fihHiTHcDnlk +H5nSW7r+f2C/revnPDgpai/lkQtV/+xvWNUtyd5MZnGPDNcE2gfmHhjjvSkCqPoc4Vu5g6hBSLwa +cY3nYuUtsuvffM/bq1rKMfFMIvMFE/eC+XN5DL7XSxzA0RU8k0Fk0ea+IxciAIleH2ulrG6nS4zt +o3Lmr2NNL4XSFDWaLk6M6jKYKIahkQlBOrTh4/L68MkKokHdqeMDx4gVOxzUGpTXn2RZEm0CAwEA +AaNTMFEwDwYDVR0TAQH/BAUwAwEB/zAfBgNVHSMEGDAWgBS6+nEleYtXQSUhhgtx67JkDoshZzAd +BgNVHQ4EFgQUuvpxJXmLV0ElIYYLceuyZA6LIWcwDQYJKoZIhvcNAQEFBQADggEBAH5Y//01GX2c +GE+esCu8jowU/yyg2kdbw++BLa8F6nRIW/M+TgfHbcWzk88iNVy2P3UnXwmWzaD+vkAMXBJV+JOC +yinpXj9WV4s4NvdFGkwozZ5BuO1WTISkQMi4sKUraXAEasP41BIy+Q7DsdwyhEQsb8tGD+pmQQ9P +8Vilpg0ND2HepZ5dfWWhPBfnqFVO76DH7cZEf1T1o+CP8HxVIo8ptoGj4W1OLBuAZ+ytIJ8MYmHV +l/9D7S3B2l0pKoU/rGXuhg8FjZBf3+6f9L/uHfuY5H+QK4R4EA5sSVPvFVtlRkpdr7r7OnIdzfYl +iB6XzCGcKQENZetX2fNXlrtIzYE= +-----END CERTIFICATE----- + +StartCom Certification Authority +================================ +-----BEGIN CERTIFICATE----- +MIIHhzCCBW+gAwIBAgIBLTANBgkqhkiG9w0BAQsFADB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmlu +ZzEpMCcGA1UEAxMgU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDYwOTE3MTk0 +NjM3WhcNMzYwOTE3MTk0NjM2WjB9MQswCQYDVQQGEwJJTDEWMBQGA1UEChMNU3RhcnRDb20gTHRk +LjErMCkGA1UECxMiU2VjdXJlIERpZ2l0YWwgQ2VydGlmaWNhdGUgU2lnbmluZzEpMCcGA1UEAxMg +U3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw +ggIKAoICAQDBiNsJvGxGfHiflXu1M5DycmLWwTYgIiRezul38kMKogZkpMyONvg45iPwbm2xPN1y +o4UcodM9tDMr0y+v/uqwQVlntsQGfQqedIXWeUyAN3rfOQVSWff0G0ZDpNKFhdLDcfN1YjS6LIp/ +Ho/u7TTQEceWzVI9ujPW3U3eCztKS5/CJi/6tRYccjV3yjxd5srhJosaNnZcAdt0FCX+7bWgiA/d +eMotHweXMAEtcnn6RtYTKqi5pquDSR3l8u/d5AGOGAqPY1MWhWKpDhk6zLVmpsJrdAfkK+F2PrRt +2PZE4XNiHzvEvqBTViVsUQn3qqvKv3b9bZvzndu/PWa8DFaqr5hIlTpL36dYUNk4dalb6kMMAv+Z +6+hsTXBbKWWc3apdzK8BMewM69KN6Oqce+Zu9ydmDBpI125C4z/eIT574Q1w+2OqqGwaVLRcJXrJ +osmLFqa7LH4XXgVNWG4SHQHuEhANxjJ/GP/89PrNbpHoNkm+Gkhpi8KWTRoSsmkXwQqQ1vp5Iki/ +untp+HDH+no32NgN0nZPV/+Qt+OR0t3vwmC3Zzrd/qqc8NSLf3Iizsafl7b4r4qgEKjZ+xjGtrVc +UjyJthkqcwEKDwOzEmDyei+B26Nu/yYwl/WL3YlXtq09s68rxbd2AvCl1iuahhQqcvbjM4xdCUsT +37uMdBNSSwIDAQABo4ICEDCCAgwwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYD +VR0OBBYEFE4L7xqkQFulF2mHMMo0aEPQQa7yMB8GA1UdIwQYMBaAFE4L7xqkQFulF2mHMMo0aEPQ +Qa7yMIIBWgYDVR0gBIIBUTCCAU0wggFJBgsrBgEEAYG1NwEBATCCATgwLgYIKwYBBQUHAgEWImh0 +dHA6Ly93d3cuc3RhcnRzc2wuY29tL3BvbGljeS5wZGYwNAYIKwYBBQUHAgEWKGh0dHA6Ly93d3cu +c3RhcnRzc2wuY29tL2ludGVybWVkaWF0ZS5wZGYwgc8GCCsGAQUFBwICMIHCMCcWIFN0YXJ0IENv +bW1lcmNpYWwgKFN0YXJ0Q29tKSBMdGQuMAMCAQEagZZMaW1pdGVkIExpYWJpbGl0eSwgcmVhZCB0 +aGUgc2VjdGlvbiAqTGVnYWwgTGltaXRhdGlvbnMqIG9mIHRoZSBTdGFydENvbSBDZXJ0aWZpY2F0 +aW9uIEF1dGhvcml0eSBQb2xpY3kgYXZhaWxhYmxlIGF0IGh0dHA6Ly93d3cuc3RhcnRzc2wuY29t +L3BvbGljeS5wZGYwEQYJYIZIAYb4QgEBBAQDAgAHMDgGCWCGSAGG+EIBDQQrFilTdGFydENvbSBG +cmVlIFNTTCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTANBgkqhkiG9w0BAQsFAAOCAgEAjo/n3JR5 +fPGFf59Jb2vKXfuM/gTFwWLRfUKKvFO3lANmMD+x5wqnUCBVJX92ehQN6wQOQOY+2IirByeDqXWm +N3PH/UvSTa0XQMhGvjt/UfzDtgUx3M2FIk5xt/JxXrAaxrqTi3iSSoX4eA+D/i+tLPfkpLst0OcN +Org+zvZ49q5HJMqjNTbOx8aHmNrs++myziebiMMEofYLWWivydsQD032ZGNcpRJvkrKTlMeIFw6T +tn5ii5B/q06f/ON1FE8qMt9bDeD1e5MNq6HPh+GlBEXoPBKlCcWw0bdT82AUuoVpaiF8H3VhFyAX +e2w7QSlc4axa0c2Mm+tgHRns9+Ww2vl5GKVFP0lDV9LdJNUso/2RjSe15esUBppMeyG7Oq0wBhjA +2MFrLH9ZXF2RsXAiV+uKa0hK1Q8p7MZAwC+ITGgBF3f0JBlPvfrhsiAhS90a2Cl9qrjeVOwhVYBs +HvUwyKMQ5bLmKhQxw4UtjJixhlpPiVktucf3HMiKf8CdBUrmQk9io20ppB+Fq9vlgcitKj1MXVuE +JnHEhV5xJMqlG2zYYdMa4FTbzrqpMrUi9nNBCV24F10OD5mQ1kfabwo6YigUZ4LZ8dCAWZvLMdib +D4x3TrVoivJs9iQOLWxwxXPR3hTQcY+203sC9uO41Alua551hDnmfyWl8kgAwKQB2j8= +-----END CERTIFICATE----- + +StartCom Certification Authority G2 +=================================== +-----BEGIN CERTIFICATE----- +MIIFYzCCA0ugAwIBAgIBOzANBgkqhkiG9w0BAQsFADBTMQswCQYDVQQGEwJJTDEWMBQGA1UEChMN +U3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkg +RzIwHhcNMTAwMTAxMDEwMDAxWhcNMzkxMjMxMjM1OTAxWjBTMQswCQYDVQQGEwJJTDEWMBQGA1UE +ChMNU3RhcnRDb20gTHRkLjEsMCoGA1UEAxMjU3RhcnRDb20gQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkgRzIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC2iTZbB7cgNr2Cu+EWIAOVeq8O +o1XJJZlKxdBWQYeQTSFgpBSHO839sj60ZwNq7eEPS8CRhXBF4EKe3ikj1AENoBB5uNsDvfOpL9HG +4A/LnooUCri99lZi8cVytjIl2bLzvWXFDSxu1ZJvGIsAQRSCb0AgJnooD/Uefyf3lLE3PbfHkffi +Aez9lInhzG7TNtYKGXmu1zSCZf98Qru23QumNK9LYP5/Q0kGi4xDuFby2X8hQxfqp0iVAXV16iul +Q5XqFYSdCI0mblWbq9zSOdIxHWDirMxWRST1HFSr7obdljKF+ExP6JV2tgXdNiNnvP8V4so75qbs +O+wmETRIjfaAKxojAuuKHDp2KntWFhxyKrOq42ClAJ8Em+JvHhRYW6Vsi1g8w7pOOlz34ZYrPu8H +vKTlXcxNnw3h3Kq74W4a7I/htkxNeXJdFzULHdfBR9qWJODQcqhaX2YtENwvKhOuJv4KHBnM0D4L +nMgJLvlblnpHnOl68wVQdJVznjAJ85eCXuaPOQgeWeU1FEIT/wCc976qUM/iUUjXuG+v+E5+M5iS +FGI6dWPPe/regjupuznixL0sAA7IF6wT700ljtizkC+p2il9Ha90OrInwMEePnWjFqmveiJdnxMa +z6eg6+OGCtP95paV1yPIN93EfKo2rJgaErHgTuixO/XWb/Ew1wIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUS8W0QGutHLOlHGVuRjaJhwUMDrYwDQYJ +KoZIhvcNAQELBQADggIBAHNXPyzVlTJ+N9uWkusZXn5T50HsEbZH77Xe7XRcxfGOSeD8bpkTzZ+K +2s06Ctg6Wgk/XzTQLwPSZh0avZyQN8gMjgdalEVGKua+etqhqaRpEpKwfTbURIfXUfEpY9Z1zRbk +J4kd+MIySP3bmdCPX1R0zKxnNBFi2QwKN4fRoxdIjtIXHfbX/dtl6/2o1PXWT6RbdejF0mCy2wl+ +JYt7ulKSnj7oxXehPOBKc2thz4bcQ///If4jXSRK9dNtD2IEBVeC2m6kMyV5Sy5UGYvMLD0w6dEG +/+gyRr61M3Z3qAFdlsHB1b6uJcDJHgoJIIihDsnzb02CVAAgp9KP5DlUFy6NHrgbuxu9mk47EDTc +nIhT76IxW1hPkWLIwpqazRVdOKnWvvgTtZ8SafJQYqz7Fzf07rh1Z2AQ+4NQ+US1dZxAF7L+/Xld +blhYXzD8AK6vM8EOTmy6p6ahfzLbOOCxchcKK5HsamMm7YnUeMx0HgX4a/6ManY5Ka5lIxKVCCIc +l85bBu4M4ru8H0ST9tg4RQUh7eStqxK2A6RCLi3ECToDZ2mEmuFZkIoohdVddLHRDiBYmxOlsGOm +7XtH/UVVMKTumtTm4ofvmMkyghEpIrwACjFeLQ/Ajulrso8uBtjRkcfGEvRM/TAXw8HaOFvjqerm +obp573PYtlNXLfbQ4ddI +-----END CERTIFICATE----- + +Buypass Class 2 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMiBSb290IENBMB4X +DTEwMTAyNjA4MzgwM1oXDTQwMTAyNjA4MzgwM1owTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDIgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBANfHXvfBB9R3+0Mh9PT1aeTuMgHbo4Yf5FkNuud1 +g1Lr6hxhFUi7HQfKjK6w3Jad6sNgkoaCKHOcVgb/S2TwDCo3SbXlzwx87vFKu3MwZfPVL4O2fuPn +9Z6rYPnT8Z2SdIrkHJasW4DptfQxh6NR/Md+oW+OU3fUl8FVM5I+GC911K2GScuVr1QGbNgGE41b +/+EmGVnAJLqBcXmQRFBoJJRfuLMR8SlBYaNByyM21cHxMlAQTn/0hpPshNOOvEu/XAFOBz3cFIqU +CqTqc/sLUegTBxj6DvEr0VQVfTzh97QZQmdiXnfgolXsttlpF9U6r0TtSsWe5HonfOV116rLJeff +awrbD02TTqigzXsu8lkBarcNuAeBfos4GzjmCleZPe4h6KP1DBbdi+w0jpwqHAAVF41og9JwnxgI +zRFo1clrUs3ERo/ctfPYV3Me6ZQ5BL/T3jjetFPsaRyifsSP5BtwrfKi+fv3FmRmaZ9JUaLiFRhn +Bkp/1Wy1TbMz4GHrXb7pmA8y1x1LPC5aAVKRCfLf6o3YBkBjqhHk/sM3nhRSP/TizPJhk9H9Z2vX +Uq6/aKtAQ6BXNVN48FP4YUIHZMbXb5tMOA1jrGKvNouicwoN9SG9dKpN6nIDSdvHXx1iY8f93ZHs +M+71bbRuMGjeyNYmsHVee7QHIJihdjK4TWxPAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFMmAd+BikoL1RpzzuvdMw964o605MA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAU18h9bqwOlI5LJKwbADJ784g7wbylp7ppHR/ehb8t/W2+xUbP6umwHJdELFx7rxP462s +A20ucS6vxOOto70MEae0/0qyexAQH6dXQbLArvQsWdZHEIjzIVEpMMpghq9Gqx3tOluwlN5E40EI +osHsHdb9T7bWR9AUC8rmyrV7d35BH16Dx7aMOZawP5aBQW9gkOLo+fsicdl9sz1Gv7SEr5AcD48S +aq/v7h56rgJKihcrdv6sVIkkLE8/trKnToyokZf7KcZ7XC25y2a2t6hbElGFtQl+Ynhw/qlqYLYd +DnkM/crqJIByw5c/8nerQyIKx+u2DISCLIBrQYoIwOula9+ZEsuK1V6ADJHgJgg2SMX6OBE1/yWD +LfJ6v9r9jv6ly0UsH8SIU653DtmadsWOLB2jutXsMq7Aqqz30XpN69QH4kj3Io6wpJ9qzo6ysmD0 +oyLQI+uUWnpp3Q+/QFesa1lQ2aOZ4W7+jQF5JyMV3pKdewlNWudLSDBaGOYKbeaP4NK75t98biGC +wWg5TbSYWGZizEqQXsP6JwSxeRV0mcy+rSDeJmAc61ZRpqPq5KM/p/9h3PFaTWwyI0PurKju7koS +CTxdccK+efrCh2gdC/1cacwG0Jp9VJkqyTkaGa9LKkPzY11aWOIv4x3kqdbQCtCev9eBCfHJxyYN +rJgWVqA= +-----END CERTIFICATE----- + +Buypass Class 3 Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIFWTCCA0GgAwIBAgIBAjANBgkqhkiG9w0BAQsFADBOMQswCQYDVQQGEwJOTzEdMBsGA1UECgwU +QnV5cGFzcyBBUy05ODMxNjMzMjcxIDAeBgNVBAMMF0J1eXBhc3MgQ2xhc3MgMyBSb290IENBMB4X +DTEwMTAyNjA4Mjg1OFoXDTQwMTAyNjA4Mjg1OFowTjELMAkGA1UEBhMCTk8xHTAbBgNVBAoMFEJ1 +eXBhc3MgQVMtOTgzMTYzMzI3MSAwHgYDVQQDDBdCdXlwYXNzIENsYXNzIDMgUm9vdCBDQTCCAiIw +DQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAKXaCpUWUOOV8l6ddjEGMnqb8RB2uACatVI2zSRH +sJ8YZLya9vrVediQYkwiL944PdbgqOkcLNt4EemOaFEVcsfzM4fkoF0LXOBXByow9c3EN3coTRiR +5r/VUv1xLXA+58bEiuPwKAv0dpihi4dVsjoT/Lc+JzeOIuOoTyrvYLs9tznDDgFHmV0ST9tD+leh +7fmdvhFHJlsTmKtdFoqwNxxXnUX/iJY2v7vKB3tvh2PX0DJq1l1sDPGzbjniazEuOQAnFN44wOwZ +ZoYS6J1yFhNkUsepNxz9gjDthBgd9K5c/3ATAOux9TN6S9ZV+AWNS2mw9bMoNlwUxFFzTWsL8TQH +2xc519woe2v1n/MuwU8XKhDzzMro6/1rqy6any2CbgTUUgGTLT2G/H783+9CHaZr77kgxve9oKeV +/afmiSTYzIw0bOIjL9kSGiG5VZFvC5F5GQytQIgLcOJ60g7YaEi7ghM5EFjp2CoHxhLbWNvSO1UQ +RwUVZ2J+GGOmRj8JDlQyXr8NYnon74Do29lLBlo3WiXQCBJ31G8JUJc9yB3D34xFMFbG02SrZvPA +Xpacw8Tvw3xrizp5f7NJzz3iiZ+gMEuFuZyUJHmPfWupRWgPK9Dx2hzLabjKSWJtyNBjYt1gD1iq +j6G8BaVmos8bdrKEZLFMOVLAMLrwjEsCsLa3AgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wHQYD +VR0OBBYEFEe4zf/lb+74suwvTg75JbCOPGvDMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQsF +AAOCAgEAACAjQTUEkMJAYmDv4jVM1z+s4jSQuKFvdvoWFqRINyzpkMLyPPgKn9iB5btb2iUspKdV +cSQy9sgL8rxq+JOssgfCX5/bzMiKqr5qb+FJEMwx14C7u8jYog5kV+qi9cKpMRXSIGrs/CIBKM+G +uIAeqcwRpTzyFrNHnfzSgCHEy9BHcEGhyoMZCCxt8l13nIoUE9Q2HJLw5QY33KbmkJs4j1xrG0aG +Q0JfPgEHU1RdZX33inOhmlRaHylDFCfChQ+1iHsaO5S3HWCntZznKWlXWpuTekMwGwPXYshApqr8 +ZORK15FTAaggiG6cX0S5y2CBNOxv033aSF/rtJC8LakcC6wc1aJoIIAE1vyxjy+7SjENSoYc6+I2 +KSb12tjE8nVhz36udmNKekBlk4f4HoCMhuWG1o8O/FMsYOgWYRqiPkN7zTlgVGr18okmAWiDSKIz +6MkEkbIRNBE+6tBDGR8Dk5AM/1E9V/RBbuHLoL7ryWPNbczk+DaqaJ3tvV2XcEQNtg413OEMXbug +UZTLfhbrES+jkkXITHHZvMmZUldGL1DPvTVp9D0VzgalLA8+9oG6lLvDu79leNKGef9JOxqDDPDe +eOzI8k1MGt6CKfjBWtrt7uYnXuhF0J0cUahoq0Tj0Itq4/g7u9xN12TyUb7mqqta6THuBrxzvxNi +Cp/HuZc= +-----END CERTIFICATE----- + +TÜRKTRUST Elektronik Sertifika Hizmet Sağlayıcısı +====================================================== +-----BEGIN CERTIFICATE----- +MIIEPTCCAyWgAwIBAgIBATANBgkqhkiG9w0BAQUFADCBvzE/MD0GA1UEAww2VMOcUktUUlVTVCBF +bGVrdHJvbmlrIFNlcnRpZmlrYSBIaXptZXQgU2HEn2xhecSxY8Sxc8SxMQswCQYDVQQGEwJUUjEP +MA0GA1UEBwwGQW5rYXJhMV4wXAYDVQQKDFVUw5xSS1RSVVNUIEJpbGdpIMSwbGV0acWfaW0gdmUg +QmlsacWfaW0gR8O8dmVubGnEn2kgSGl6bWV0bGVyaSBBLsWeLiAoYykgQXJhbMSxayAyMDA3MB4X +DTA3MTIyNTE4MzcxOVoXDTE3MTIyMjE4MzcxOVowgb8xPzA9BgNVBAMMNlTDnFJLVFJVU1QgRWxl +a3Ryb25payBTZXJ0aWZpa2EgSGl6bWV0IFNhxJ9sYXnEsWPEsXPEsTELMAkGA1UEBhMCVFIxDzAN +BgNVBAcMBkFua2FyYTFeMFwGA1UECgxVVMOcUktUUlVTVCBCaWxnaSDEsGxldGnFn2ltIHZlIEJp +bGnFn2ltIEfDvHZlbmxpxJ9pIEhpem1ldGxlcmkgQS7Fni4gKGMpIEFyYWzEsWsgMjAwNzCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKu3PgqMyKVYFeaK7yc9SrToJdPNM8Ig3BnuiD9N +YvDdE3ePYakqtdTyuTFYKTsvP2qcb3N2Je40IIDu6rfwxArNK4aUyeNgsURSsloptJGXg9i3phQv +KUmi8wUG+7RP2qFsmmaf8EMJyupyj+sA1zU511YXRxcw9L6/P8JorzZAwan0qafoEGsIiveGHtya +KhUG9qPw9ODHFNRRf8+0222vR5YXm3dx2KdxnSQM9pQ/hTEST7ruToK4uT6PIzdezKKqdfcYbwnT +rqdUKDT74eA7YH2gvnmJhsifLfkKS8RQouf9eRbHegsYz85M733WB2+Y8a+xwXrXgTW4qhe04MsC +AwEAAaNCMEAwHQYDVR0OBBYEFCnFkKslrxHkYb+j/4hhkeYO/pyBMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBBQUAA4IBAQAQDdr4Ouwo0RSVgrESLFF6QSU2TJ/s +Px+EnWVUXKgWAkD6bho3hO9ynYYKVZ1WKKxmLNA6VpM0ByWtCLCPyA8JWcqdmBzlVPi5RX9ql2+I +aE1KBiY3iAIOtsbWcpnOa3faYjGkVh+uX4132l32iPwa2Z61gfAyuOOI0JzzaqC5mxRZNTZPz/OO +Xl0XrRWV2N2y1RVuAE6zS89mlOTgzbUF2mNXi+WzqtvALhyQRNsaXRik7r4EW5nVcV9VZWRi1aKb +BFmGyGJ353yCRWo9F7/snXUMrqNvWtMvmDb08PUZqxFdyKbjKlhqQgnDvZImZjINXQhVdP+MmNAK +poRq0Tl9 +-----END CERTIFICATE----- + +T-TeleSec GlobalRoot Class 3 +============================ +-----BEGIN CERTIFICATE----- +MIIDwzCCAqugAwIBAgIBATANBgkqhkiG9w0BAQsFADCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoM +IlQtU3lzdGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBU +cnVzdCBDZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwHhcNMDgx +MDAxMTAyOTU2WhcNMzMxMDAxMjM1OTU5WjCBgjELMAkGA1UEBhMCREUxKzApBgNVBAoMIlQtU3lz +dGVtcyBFbnRlcnByaXNlIFNlcnZpY2VzIEdtYkgxHzAdBgNVBAsMFlQtU3lzdGVtcyBUcnVzdCBD +ZW50ZXIxJTAjBgNVBAMMHFQtVGVsZVNlYyBHbG9iYWxSb290IENsYXNzIDMwggEiMA0GCSqGSIb3 +DQEBAQUAA4IBDwAwggEKAoIBAQC9dZPwYiJvJK7genasfb3ZJNW4t/zN8ELg63iIVl6bmlQdTQyK +9tPPcPRStdiTBONGhnFBSivwKixVA9ZIw+A5OO3yXDw/RLyTPWGrTs0NvvAgJ1gORH8EGoel15YU +NpDQSXuhdfsaa3Ox+M6pCSzyU9XDFES4hqX2iys52qMzVNn6chr3IhUciJFrf2blw2qAsCTz34ZF +iP0Zf3WHHx+xGwpzJFu5ZeAsVMhg02YXP+HMVDNzkQI6pn97djmiH5a2OK61yJN0HZ65tOVgnS9W +0eDrXltMEnAMbEQgqxHY9Bn20pxSN+f6tsIxO0rUFJmtxxr1XV/6B7h8DR/Wgx6zAgMBAAGjQjBA +MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBS1A/d2O2GCahKqGFPr +AyGUv/7OyjANBgkqhkiG9w0BAQsFAAOCAQEAVj3vlNW92nOyWL6ukK2YJ5f+AbGwUgC4TeQbIXQb +fsDuXmkqJa9c1h3a0nnJ85cp4IaH3gRZD/FZ1GSFS5mvJQQeyUapl96Cshtwn5z2r3Ex3XsFpSzT +ucpH9sry9uetuUg/vBa3wW306gmv7PO15wWeph6KU1HWk4HMdJP2udqmJQV0eVp+QD6CSyYRMG7h +P0HHRwA11fXT91Q+gT3aSWqas+8QPebrb9HIIkfLzM8BMZLZGOMivgkeGj5asuRrDFR6fUNOuIml +e9eiPZaGzPImNC1qkp2aGtAw4l1OBLBfiyB+d8E9lYLRRpo7PHi4b6HQDWSieB4pTpPDpFQUWw== +-----END CERTIFICATE----- + +EE Certification Centre Root CA +=============================== +-----BEGIN CERTIFICATE----- +MIIEAzCCAuugAwIBAgIQVID5oHPtPwBMyonY43HmSjANBgkqhkiG9w0BAQUFADB1MQswCQYDVQQG +EwJFRTEiMCAGA1UECgwZQVMgU2VydGlmaXRzZWVyaW1pc2tlc2t1czEoMCYGA1UEAwwfRUUgQ2Vy +dGlmaWNhdGlvbiBDZW50cmUgUm9vdCBDQTEYMBYGCSqGSIb3DQEJARYJcGtpQHNrLmVlMCIYDzIw +MTAxMDMwMTAxMDMwWhgPMjAzMDEyMTcyMzU5NTlaMHUxCzAJBgNVBAYTAkVFMSIwIAYDVQQKDBlB +UyBTZXJ0aWZpdHNlZXJpbWlza2Vza3VzMSgwJgYDVQQDDB9FRSBDZXJ0aWZpY2F0aW9uIENlbnRy +ZSBSb290IENBMRgwFgYJKoZIhvcNAQkBFglwa2lAc2suZWUwggEiMA0GCSqGSIb3DQEBAQUAA4IB +DwAwggEKAoIBAQDIIMDs4MVLqwd4lfNE7vsLDP90jmG7sWLqI9iroWUyeuuOF0+W2Ap7kaJjbMeM +TC55v6kF/GlclY1i+blw7cNRfdCT5mzrMEvhvH2/UpvObntl8jixwKIy72KyaOBhU8E2lf/slLo2 +rpwcpzIP5Xy0xm90/XsY6KxX7QYgSzIwWFv9zajmofxwvI6Sc9uXp3whrj3B9UiHbCe9nyV0gVWw +93X2PaRka9ZP585ArQ/dMtO8ihJTmMmJ+xAdTX7Nfh9WDSFwhfYggx/2uh8Ej+p3iDXE/+pOoYtN +P2MbRMNE1CV2yreN1x5KZmTNXMWcg+HCCIia7E6j8T4cLNlsHaFLAgMBAAGjgYowgYcwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBLyWj7qVhy/zQas8fElyalL1BSZ +MEUGA1UdJQQ+MDwGCCsGAQUFBwMCBggrBgEFBQcDAQYIKwYBBQUHAwMGCCsGAQUFBwMEBggrBgEF +BQcDCAYIKwYBBQUHAwkwDQYJKoZIhvcNAQEFBQADggEBAHv25MANqhlHt01Xo/6tu7Fq1Q+e2+Rj +xY6hUFaTlrg4wCQiZrxTFGGVv9DHKpY5P30osxBAIWrEr7BSdxjhlthWXePdNl4dp1BUoMUq5KqM +lIpPnTX/dqQGE5Gion0ARD9V04I8GtVbvFZMIi5GQ4okQC3zErg7cBqklrkar4dBGmoYDQZPxz5u +uSlNDUmJEYcyW+ZLBMjkXOZ0c5RdFpgTlf7727FE5TpwrDdr5rMzcijJs1eg9gIWiAYLtqZLICjU +3j2LrTcFU3T+bsy8QxdxXvnFzBqpYe73dgzzcvRyrc9yAjYHR8/vGVCJYMzpJJUPwssd8m92kMfM +dcGWxZ0= +-----END CERTIFICATE----- diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/lib/Auth/Source/Facebook.php b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/lib/Auth/Source/Facebook.php new file mode 100644 index 0000000000000000000000000000000000000000..b4a0c1ea9402ee9c943cda5c03318155a383ed7a --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/lib/Auth/Source/Facebook.php @@ -0,0 +1,169 @@ +<?php + +namespace SimpleSAML\Module\authfacebook\Auth\Source; + +use SimpleSAML\Auth; +use SimpleSAML\Configuration; +use SimpleSAML\Error; +use SimpleSAML\Logger; +use SimpleSAML\Module; +use SimpleSAML\Utils; + +/** + * Authenticate using Facebook Platform. + * + * @author Andreas Åkre Solberg, UNINETT AS. + * @package SimpleSAMLphp + */ + +class Facebook extends \SimpleSAML\Auth\Source +{ + /** + * The string used to identify our states. + */ + const STAGE_INIT = 'facebook:init'; + + + /** + * The key of the AuthId field in the state. + */ + const AUTHID = 'facebook:AuthId'; + + + /** + * Facebook App ID or API Key + */ + private $api_key; + + + /** + * Facebook App Secret + */ + private $secret; + + + /** + * Which additional data permissions to request from user + */ + private $req_perms; + + + /** + * A comma-separated list of user profile fields to request. + * + * Note that some user fields require appropriate permissions. For + * example, to retrieve the user's primary email address, "email" must + * be specified in both the req_perms and the user_fields parameter. + * + * When empty, only the app-specific user id and name will be returned. + * + * See the Graph API specification for all available user fields: + * https://developers.facebook.com/docs/graph-api/reference/v2.6/user + */ + private $user_fields; + + + /** + * Constructor for this authentication source. + * + * @param array $info Information about this authentication source. + * @param array $config Configuration. + */ + public function __construct($info, $config) + { + assert(is_array($info)); + assert(is_array($config)); + + // Call the parent constructor first, as required by the interface + parent::__construct($info, $config); + + $cfgParse = Configuration::loadFromArray( + $config, + 'authsources[' . var_export($this->authId, true) . ']' + ); + + $this->api_key = $cfgParse->getString('api_key'); + $this->secret = $cfgParse->getString('secret'); + $this->req_perms = $cfgParse->getString('req_perms', null); + $this->user_fields = $cfgParse->getString('user_fields', null); + } + + + /** + * Log-in using Facebook platform + * + * @param array &$state Information about the current authentication. + * @return void + */ + public function authenticate(&$state) + { + assert(is_array($state)); + + // We are going to need the authId in order to retrieve this authentication source later + $state[self::AUTHID] = $this->authId; + Auth\State::saveState($state, self::STAGE_INIT); + + $facebook = new Module\authfacebook\Facebook( + ['appId' => $this->api_key, 'secret' => $this->secret], + $state + ); + $facebook->destroySession(); + + $linkback = Module::getModuleURL('authfacebook/linkback.php'); + $url = $facebook->getLoginUrl(['redirect_uri' => $linkback, 'scope' => $this->req_perms]); + Auth\State::saveState($state, self::STAGE_INIT); + + Utils\HTTP::redirectTrustedURL($url); + } + + + /** + * @param array &$state + * @return void + */ + public function finalStep(&$state) + { + assert(is_array($state)); + + $facebook = new Module\authfacebook\Facebook( + ['appId' => $this->api_key, 'secret' => $this->secret], + $state + ); + $uid = $facebook->getUser(); + + $info = null; + if ($uid > 0) { + try { + $info = $facebook->api("/" . $uid . ($this->user_fields ? "?fields=" . $this->user_fields : "")); + } catch (\FacebookApiException $e) { + throw new Error\AuthSource($this->authId, 'Error getting user profile.', $e); + } + } + + if (!isset($info)) { + throw new Error\AuthSource($this->authId, 'Error getting user profile.'); + } + + $attributes = []; + foreach ($info as $key => $value) { + if (is_string($value) && !empty($value)) { + $attributes['facebook.' . $key] = [(string) $value]; + } + } + + if (array_key_exists('third_party_id', $info)) { + $attributes['facebook_user'] = [$info['third_party_id'] . '@facebook.com']; + } else { + $attributes['facebook_user'] = [$uid . '@facebook.com']; + } + + $attributes['facebook_targetedID'] = ['http://facebook.com!' . $uid]; + $attributes['facebook_cn'] = [$info['name']]; + + Logger::debug('Facebook Returned Attributes: ' . implode(", ", array_keys($attributes))); + + $state['Attributes'] = $attributes; + + $facebook->destroySession(); + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/lib/Facebook.php b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/lib/Facebook.php new file mode 100644 index 0000000000000000000000000000000000000000..308bb6e6aa1b832bf4f000eec4da08bb2e7ff821 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/lib/Facebook.php @@ -0,0 +1,223 @@ +<?php + +namespace SimpleSAML\Module\authfacebook; + +require_once(dirname(dirname(__FILE__)) . '/extlibinc/base_facebook.php'); + +/** + * Extends the BaseFacebook class with the intent of using + * PHP sessions to store user ids and access tokens. + */ + +class Facebook extends \BaseFacebook +{ + const FBSS_COOKIE_NAME = 'fbss'; + + // We can set this to a high number because the main session + // expiration will trump this + const FBSS_COOKIE_EXPIRE = 31556926; // 1 year + + /** + * Stores the shared session ID if one is set + * @var string + */ + protected $sharedSessionID = ''; + + /** + * SimpleSAMLphp state array + * @var array + */ + protected $ssp_state = []; + + /** @var string|null */ + protected $state = null; + + /** @var array */ + protected static $kSupportedKeys = ['state', 'code', 'access_token', 'user_id']; + + + /** + * Identical to the parent constructor, except that + * we start a PHP session to store the user ID and + * access token if during the course of execution + * we discover them. + * + * @param array $config the application configuration. Additionally + * @param array &$ssp_state + * accepts "sharedSession" as a boolean to turn on a secondary + * cookie for environments with a shared session (that is, your app + * shares the domain with other apps). + * @see BaseFacebook::__construct in base_facebook.php + */ + public function __construct(array $config, &$ssp_state) + { + $this->ssp_state = &$ssp_state; + + parent::__construct($config); + if (!empty($config['sharedSession'])) { + $this->initSharedSession(); + } + } + + + /** + * @return void + */ + protected function initSharedSession() + { + $cookie_name = $this->getSharedSessionCookieName(); + if (isset($_COOKIE[$cookie_name])) { + $data = $this->parseSignedRequest($_COOKIE[$cookie_name]); + if ( + !empty($data) + && !empty($data['domain']) + && self::isAllowedDomain($this->getHttpHost(), $data['domain']) + ) { + // good case + $this->sharedSessionID = $data['id']; + return; + } + // ignoring potentially unreachable data + } + // evil/corrupt/missing case + $base_domain = $this->getBaseDomain(); + $this->sharedSessionID = md5(uniqid(strval(mt_rand()), true)); + $cookie_value = $this->makeSignedRequest( + [ + 'domain' => $base_domain, + 'id' => $this->sharedSessionID, + ] + ); + $_COOKIE[$cookie_name] = $cookie_value; + if (!headers_sent()) { + $expire = time() + self::FBSS_COOKIE_EXPIRE; + setcookie($cookie_name, $cookie_value, $expire, '/', '.' . $base_domain); + } else { + // @codeCoverageIgnoreStart + \SimpleSAML\Logger::debug( + 'Shared session ID cookie could not be set! You must ensure you ' . + 'create the Facebook instance before headers have been sent. This ' . + 'will cause authentication issues after the first request.' + ); + // @codeCoverageIgnoreEnd + } + } + + + /** + * Provides the implementations of the inherited abstract + * methods. The implementation uses PHP sessions to maintain + * a store for authorization codes, user ids, CSRF states, and + * access tokens. + * + * @param string $key + * @param mixed $value + * @return void + */ + protected function setPersistentData($key, $value) + { + if (!in_array($key, self::$kSupportedKeys)) { + \SimpleSAML\Logger::debug("Unsupported key passed to setPersistentData: " . var_export($key, true)); + return; + } + + $session_var_name = $this->constructSessionVariableName($key); + $this->ssp_state[$session_var_name] = $value; + } + + + /** + * @param string $key + * @param bool $default + * @return mixed + */ + protected function getPersistentData($key, $default = false) + { + if (!in_array($key, self::$kSupportedKeys)) { + \SimpleSAML\Logger::debug("Unsupported key passed to getPersistentData: " . var_export($key, true)); + return $default; + } + + $session_var_name = $this->constructSessionVariableName($key); + return isset($this->ssp_state[$session_var_name]) ? $this->ssp_state[$session_var_name] : $default; + } + + + /** + * @param string $key + * @return void + */ + protected function clearPersistentData($key) + { + if (!in_array($key, self::$kSupportedKeys)) { + \SimpleSAML\Logger::debug("Unsupported key passed to clearPersistentData: " . var_export($key, true)); + return; + } + + $session_var_name = $this->constructSessionVariableName($key); + if (isset($this->ssp_state[$session_var_name])) { + unset($this->ssp_state[$session_var_name]); + } + } + + + /** + * @return void + */ + protected function clearAllPersistentData() + { + foreach (self::$kSupportedKeys as $key) { + $this->clearPersistentData($key); + } + if ($this->sharedSessionID) { + $this->deleteSharedSessionCookie(); + } + } + + + /** + * @return void + */ + protected function deleteSharedSessionCookie() + { + $cookie_name = $this->getSharedSessionCookieName(); + unset($_COOKIE[$cookie_name]); + $base_domain = $this->getBaseDomain(); + setcookie($cookie_name, '', 1, '/', '.' . $base_domain); + } + + + /** + * @return string + */ + protected function getSharedSessionCookieName() + { + return self::FBSS_COOKIE_NAME . '_' . $this->getAppId(); + } + + + /** + * @param string $key + * @return string + */ + protected function constructSessionVariableName($key) + { + $parts = ['authfacebook:authdata:fb', $this->getAppId(), $key]; + if ($this->sharedSessionID) { + array_unshift($parts, $this->sharedSessionID); + } + return implode('_', $parts); + } + + + /** + * @return void + */ + protected function establishCSRFTokenState() + { + if ($this->state === null) { + $this->state = \SimpleSAML\Auth\State::getStateId($this->ssp_state); + $this->setPersistentData('state', $this->state); + } + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/phpunit.xml b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/phpunit.xml new file mode 100644 index 0000000000000000000000000000000000000000..cfe86d3ec52b3a54c722bd41a5fc66bc438575d5 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/phpunit.xml @@ -0,0 +1,22 @@ +<?xml version="1.0" encoding="utf-8" ?> +<phpunit bootstrap="tests/bootstrap.php"> + <testsuites> + <testsuite name="The project's test suite"> + <directory>./vendor/simplesamlphp/simplesamlphp-test-framework/tests/</directory> + <directory>tests/</directory> + </testsuite> + </testsuites> + <filter> + <whitelist processUncoveredFilesFromWhitelist="true"> + <directory suffix=".php">./lib</directory> + <directory suffix=".php">./extlibinc</directory> + <directory suffix=".php">./tests</directory> + </whitelist> + </filter> + <logging> + <log type="coverage-text" target="php://stdout" showUncoveredFiles="true" /> + <log type="coverage-html" target="build/coverage" title="PHP Coveralls" charset="UTF-8" yui="true" highlight="true" lowUpperBound="35" highLowerBound="70" /> + <log type="coverage-clover" target="build/logs/clover.xml" /> + </logging> +</phpunit> + diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/psalm.xml b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/psalm.xml new file mode 100644 index 0000000000000000000000000000000000000000..b670a64a6d43694b9e8e88dc2adb78565c0282c3 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/psalm.xml @@ -0,0 +1,32 @@ +<?xml version="1.0"?> +<psalm + name="SimpleSAMLphp Module for Facebook Authentication" + useDocblockTypes="true" + totallyTyped="false" +> + <projectFiles> + <directory name="lib" /> + <directory name="extlibinc" /> + <directory name="www" /> + </projectFiles> + + <issueHandlers> + <LessSpecificReturnType errorLevel="info" /> + + <!-- level 3 issues - slightly lazy code writing, but probably low false-negatives --> + <DeprecatedMethod 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" /> + <UnusedClass errorLevel="info" /> + <PossiblyUnusedMethod errorLevel="info" /> + </issueHandlers> +</psalm> diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/tests/bootstrap.php b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/tests/bootstrap.php new file mode 100644 index 0000000000000000000000000000000000000000..0436c472c9cb630598497d27a3b44c9c095f4bb1 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/tests/bootstrap.php @@ -0,0 +1,11 @@ +<?php + +$projectRoot = dirname(__DIR__); +require_once($projectRoot . '/vendor/autoload.php'); + +// Symlink module into ssp vendor lib so that templates and urls can resolve correctly +$linkPath = $projectRoot . '/vendor/simplesamlphp/simplesamlphp/modules/authfacebook'; +if (file_exists($linkPath) === false) { + echo "Linking '$linkPath' to '$projectRoot'\n"; + symlink($projectRoot, $linkPath); +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/www/linkback.php b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/www/linkback.php new file mode 100644 index 0000000000000000000000000000000000000000..84e5e32c5db1689fb47e4e1dc2ea2ed0e92f8e37 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authfacebook/www/linkback.php @@ -0,0 +1,53 @@ +<?php + +/** + * Handle linkback() response from Facebook. + */ + +// For backwards compatability look for AuthState first +if (array_key_exists('AuthState', $_REQUEST) && !empty($_REQUEST['AuthState'])) { + $state = \SimpleSAML\Auth\State::loadState( + $_REQUEST['AuthState'], + \SimpleSAML\Module\authfacebook\Auth\Source\Facebook::STAGE_INIT + ); +} elseif (array_key_exists('state', $_REQUEST) && !empty($_REQUEST['state'])) { + $state = \SimpleSAML\Auth\State::loadState( + $_REQUEST['state'], + \SimpleSAML\Module\authfacebook\Auth\Source\Facebook::STAGE_INIT + ); +} else { + throw new \SimpleSAML\Error\BadRequest('Missing state parameter on facebook linkback endpoint.'); +} + +// Find authentication source +if (is_null($state) || !array_key_exists(\SimpleSAML\Module\authfacebook\Auth\Source\Facebook::AUTHID, $state)) { + throw new \SimpleSAML\Error\BadRequest( + 'No data in state for ' . \SimpleSAML\Module\authfacebook\Auth\Source\Facebook::AUTHID + ); +} +$sourceId = $state[\SimpleSAML\Module\authfacebook\Auth\Source\Facebook::AUTHID]; + +/** @var \SimpleSAML\Module\authfacebook\Auth\Source\Facebook|null $source */ +$source = \SimpleSAML\Auth\Source::getById($sourceId); +if ($source === null) { + throw new \SimpleSAML\Error\BadRequest( + 'Could not find authentication source with id ' . var_export($sourceId, true) + ); +} + +try { + if (isset($_REQUEST['error_reason']) && $_REQUEST['error_reason'] == 'user_denied') { + throw new \SimpleSAML\Error\UserAborted(); + } + + $source->finalStep($state); +} catch (\SimpleSAML\Error\Exception $e) { + \SimpleSAML\Auth\State::throwException($state, $e); +} catch (\Exception $e) { + \SimpleSAML\Auth\State::throwException( + $state, + new \SimpleSAML\Error\AuthSource($sourceId, 'Error on facebook linkback endpoint.', $e) + ); +} + +\SimpleSAML\Auth\Source::completeAuth($state); diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/.codecov.yml b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/.codecov.yml new file mode 100644 index 0000000000000000000000000000000000000000..f7f39e1e93d0ca23383d5ed120442f62f5f15ac9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/.codecov.yml @@ -0,0 +1,11 @@ +coverage: + status: + project: yes + +comment: + layout: "diff" + behavior: once + require_changes: true + require_base: no + require_head: yes + branches: null diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/.php_cs.dist b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/.php_cs.dist new file mode 100644 index 0000000000000000000000000000000000000000..33467ebed8fd85e1f86baae2dc2f5b75cbe7143f --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/.php_cs.dist @@ -0,0 +1,16 @@ +<?php +$finder = PhpCsFixer\Finder::create() + ->in([ + __DIR__ . '/lib', + __DIR__ . '/tests', + __DIR__ . '/www', + ]) +; +return PhpCsFixer\Config::create() + ->setRules([ + '@PSR2' => true, + '@PSR4' => true, + '@PSR5' => true, + ]) + ->setFinder($finder) +; diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/.travis.yml b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..fec43ab41a5a3b2129c6a4b00802c56325717fe9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/.travis.yml @@ -0,0 +1,31 @@ +sudo: required + +language: php + +php: + - 5.6 + - 7.0 + - 7.1 + - 7.2 + - 7.3 + +env: + - SIMPLESAMLPHP_VERSION=1.17.* + +before_script: + - composer require "simplesamlphp/simplesamlphp:${SIMPLESAMLPHP_VERSION}" --no-update + - composer update --no-interaction + - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then composer require --dev vimeo/psalm:1.1.9; fi + +script: + - bin/check-syntax.sh + - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then php vendor/phpunit/phpunit/phpunit; else php vendor/phpunit/phpunit/phpunit --no-coverage; fi + - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then vendor/bin/psalm; fi + +after_success: + # Codecov, need to edit bash uploader for incorrect TRAVIS_PYTHON_VERSION environment variable matching, at least until codecov/codecov-bash#133 is resolved + - curl -s https://codecov.io/bash > .codecov + - sed -i -e 's/TRAVIS_.*_VERSION/^TRAVIS_.*_VERSION=/' .codecov + - chmod +x .codecov + - if [[ $TRAVIS_PHP_VERSION == "5.6" ]]; then ./.codecov -X gcov; fi +# - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then bash <(curl -s https://codecov.io/bash); fi diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/LICENSE b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..0a041280bd00a9d068f503b8ee7ce35214bd24a1 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/LICENSE @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + 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 that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU 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 as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/bin/check-syntax.sh b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/bin/check-syntax.sh new file mode 100755 index 0000000000000000000000000000000000000000..96dfbb9f5565e3550d3609f8ca9a44814d157af5 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/bin/check-syntax.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +PHP='/usr/bin/env php' +RETURN=0 + +# check PHP files +for FILE in `find lib tests www -name "*.php"`; do + $PHP -l $FILE > /dev/null 2>&1 + if [ $? -ne 0 ]; then + echo "Syntax check failed for ${FILE}" + RETURN=`expr ${RETURN} + 1` + fi +done + +exit $RETURN diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/composer.json b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..484f420145b5d09b18dac359a6f4db22db87a777 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/composer.json @@ -0,0 +1,47 @@ +{ + "name": "simplesamlphp/simplesamlphp-module-authwindowslive", + "description": "A module that is able to perform authentication against Windows Live", + "type": "simplesamlphp-module", + "keywords": ["simplesamlphp", "windowslive", "windows", "live"], + "license": "LGPL-3.0-or-later", + "authors": [ + { + "name": "Olav Morken", + "email": "olavmrk@gmail.com" + }, + { + "name": "Tim van Dijen", + "email": "tvdijen@gmail.com" + } + ], + "config": { + "preferred-install": { + "simplesamlphp/simplesamlphp": "source", + "*": "dist" + } + }, + "autoload": { + "psr-4": { + "SimpleSAML\\Module\\authwindowslive\\": "lib/" + } + }, + "autoload-dev": { + "psr-4": { + "Tests\\SimpleSAML\\modules\\authwindowslive\\TestFiles\\": "tests/files", + "SimpleSAML\\Test\\Utils\\": "vendor/simplesamlphp/simplesamlphp/tests/Utils" + } + }, + "require": { + "php": ">=5.6", + "simplesamlphp/composer-module-installer": "~1.1" + }, + "require-dev": { + "simplesamlphp/simplesamlphp": "^1.17", + "phpunit/phpunit": "~5.7" + }, + "support": { + "issues": "https://github.com/tvdijen/simplesamlphp-module-authwindowslive/issues", + "source": "https://github.com/tvdijen/simplesamlphp-module-authwindowslive" + } +} + diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/default-disable b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/default-disable new file mode 100644 index 0000000000000000000000000000000000000000..fa0bd82e2df7bd79d57593d35bc53c1f9d3ef71f --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/default-disable @@ -0,0 +1,3 @@ +This file indicates that the default state of this module +is disabled. To enable, create a file named enable in the +same directory as this file. diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/docs/windowsliveid.md b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/docs/windowsliveid.md new file mode 100644 index 0000000000000000000000000000000000000000..b80116cf3a7ad20fc55ad1e0ceacb6999e438693 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/docs/windowsliveid.md @@ -0,0 +1,22 @@ +Using the Windows Live ID authentication source with SimpleSAMLphp +================================================================== +This module works around the limitation in Microsoft Online/Azure OIDC implementation of not supplying the OIDC userinfo endpoint. +Microsoft explains the omission by suggesting that the Graph API can produce anything userinfo would have brought, in place. + +Remember to configure `authsources.php`, with both your Client ID and Secret key. + +To get an API key and a secret, register the application at: + + * <https://msdn.microsoft.com/en-us/library/ff751474.aspx> + * <https://apps.dev.microsoft.com/> + +## Testing authentication + +On the SimpleSAMLphp frontpage, go to the *Authentication* tab, and use the link: + + * *Test configured authentication sources* + +Then choose the *windowsliveid* authentication source. + +Expected behaviour would then be that you are sent to Windows Live ID and asked to login. + diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/lib/Auth/Source/LiveID.php b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/lib/Auth/Source/LiveID.php new file mode 100644 index 0000000000000000000000000000000000000000..5a1ef32018b3a21f4a317a83d460505df85c66ad --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/lib/Auth/Source/LiveID.php @@ -0,0 +1,170 @@ +<?php + +namespace SimpleSAML\Module\authwindowslive\Auth\Source; + +/** + * Authenticate using LiveID. + * + * @author Brook Schofield, TERENA. + * @author Guy Halse, TENET. + * @package SimpleSAMLphp + */ +class LiveID extends \SimpleSAML\Auth\Source +{ + /** + * The string used to identify our states. + */ + const STAGE_INIT = 'authwindowslive:init'; + + /** + * The key of the AuthId field in the state. + */ + const AUTHID = 'authwindowslive:AuthId'; + + /** @var string */ + private $key; + + /** @var string */ + private $secret; + + + /** + * Constructor for this authentication source. + * + * @param array $info Information about this authentication source. + * @param array $config Configuration. + * + * @throws \Exception In case of misconfiguration. + */ + public function __construct($info, $config) + { + assert(is_array($info)); + assert(is_array($config)); + + // Call the parent constructor first, as required by the interface + parent::__construct($info, $config); + + if (!array_key_exists('key', $config)) { + throw new \Exception('LiveID authentication source is not properly configured: missing [key]'); + } + + $this->key = $config['key']; + + if (!array_key_exists('secret', $config)) { + throw new \Exception('LiveID authentication source is not properly configured: missing [secret]'); + } + + $this->secret = $config['secret']; + } + + /** + * Log-in using LiveID platform + * + * @param array &$state Information about the current authentication. + * @return void + */ + public function authenticate(&$state) + { + assert(is_array($state)); + + // we are going to need the authId in order to retrieve this authentication source later + $state[self::AUTHID] = $this->authId; + + $stateID = \SimpleSAML\Auth\State::saveState($state, self::STAGE_INIT); + + \SimpleSAML\Logger::debug('authwindowslive auth state id = '.$stateID); + + // authenticate the user + // documentation at: + // https://azure.microsoft.com/en-us/documentation/articles/active-directory-v2-protocols-oauth-code/ + $authorizeURL = 'https://login.microsoftonline.com/common/oauth2/v2.0/authorize'. + '?client_id='.$this->key. + '&response_type=code'. + '&response_mode=query'. + '&redirect_uri='.urlencode(\SimpleSAML\Module::getModuleURL('authwindowslive').'/linkback.php'). + '&state='.urlencode($stateID). + '&scope='.urlencode('openid https://graph.microsoft.com/user.read') + ; + + \SimpleSAML\Utils\HTTP::redirectTrustedURL($authorizeURL); + } + + /** + * @param array &$state + * @return void + * @throws \Exception + */ + public function finalStep(&$state) + { + \SimpleSAML\Logger::debug( + "authwindowslive oauth: Using this verification code [".$state['authwindowslive:verification_code']."]" + ); + + // retrieve Access Token + // documentation at: + // https://azure.microsoft.com/en-us/documentation/articles/active-directory-v2-protocols-oauth-code/#request-an-access-token + $postData = 'client_id='.urlencode($this->key). + '&client_secret='.urlencode($this->secret). + '&scope='.urlencode('https://graph.microsoft.com/user.read'). + '&grant_type=authorization_code'. + '&redirect_uri='.urlencode(\SimpleSAML\Module::getModuleURL('authwindowslive').'/linkback.php'). + '&code='.urlencode($state['authwindowslive:verification_code']); + + $context = [ + 'http' => [ + 'method' => 'POST', + 'header' => 'Content-type: application/x-www-form-urlencoded', + 'content' => $postData, + ], + ]; + + /** @var string $result */ + $result = \SimpleSAML\Utils\HTTP::fetch('https://login.microsoftonline.com/common/oauth2/v2.0/token', $context, false); + + $response = json_decode($result, true); + + // error checking of $response to make sure we can proceed + if (!array_key_exists('access_token', $response)) { + throw new \Exception( + '['.$response['error'].'] '.$response['error_description']. + "\r\nNo access_token returned - cannot proceed\r\n".implode(', ', $response['error_codes']) + ); + } + + \SimpleSAML\Logger::debug( + "authwindowslive: Got an access token from the OAuth service provider [".$response['access_token']."]" + ); + + // documentation at: http://graph.microsoft.io/en-us/docs/overview/call_api + $opts = [ + 'http' => ['header' => "Accept: application/json\r\nAuthorization: Bearer ". + $response['access_token']."\r\n"] + ]; + + /** @var string $data */ + $data = \SimpleSAML\Utils\HTTP::fetch('https://graph.microsoft.com/v1.0/me', $opts); + $userdata = json_decode($data, true); + + // this is the simplest case + if (!array_key_exists('@odata.context', $userdata) || array_key_exists('error', $userdata)) { + throw new \Exception( + 'Unable to retrieve userdata from Microsoft Graph ['.$userdata['error']['code'].'] '. + $userdata['error']['message'] + ); + } + $attributes = []; + $attributes['windowslive_targetedID'] = [ + 'https://graph.microsoft.com!'.(!empty($userdata['id']) ? $userdata['id'] : 'unknown') + ]; + foreach ($userdata as $key => $value) { + if (is_string($value)) { + $attributes['windowslive.'.$key] = [(string) $value]; + } + } + + + \SimpleSAML\Logger::debug('LiveID Returned Attributes: '.implode(", ", array_keys($attributes))); + + $state['Attributes'] = $attributes; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/phpunit.xml b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/phpunit.xml new file mode 100644 index 0000000000000000000000000000000000000000..c0985fdd804b18d8d9179ecd956d63582c189e95 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/phpunit.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" ?> +<phpunit bootstrap="tests/bootstrap.php"> + <testsuites> + <testsuite name="The project's test suite"> + <directory>tests/</directory> + </testsuite> + </testsuites> + <filter> + <whitelist processUncoveredFilesFromWhitelist="true"> + <directory suffix=".php">./lib</directory> + </whitelist> + </filter> + <logging> + <log type="coverage-text" target="php://stdout" showUncoveredFiles="true" /> + <log type="coverage-html" target="build/coverage" title="PHP Coveralls" charset="UTF-8" yui="true" highlight="true" lowUpperBound="35" highLowerBound="70" /> + <log type="coverage-clover" target="build/logs/clover.xml" /> + </logging> +</phpunit> + diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/psalm.xml b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/psalm.xml new file mode 100644 index 0000000000000000000000000000000000000000..0d86dfe3c1ed28e249d2ee86ed48cfd18b8e982d --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/psalm.xml @@ -0,0 +1,31 @@ +<?xml version="1.0"?> +<psalm + name="SimpleSAMLphp Authentication Module for Windows Live" + useDocblockTypes="true" + totallyTyped="false" +> + <projectFiles> + <directory name="lib" /> + <directory name="www" /> + </projectFiles> + + <issueHandlers> + <LessSpecificReturnType errorLevel="info" /> + + <!-- level 3 issues - slightly lazy code writing, but probably low false-negatives --> + <DeprecatedMethod 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" /> + <UnusedClass errorLevel="info" /> + <PossiblyUnusedMethod errorLevel="info" /> + </issueHandlers> +</psalm> diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/tests/bootstrap.php b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/tests/bootstrap.php new file mode 100644 index 0000000000000000000000000000000000000000..60d182a767e9a61b714ccb93cb6a19312cc80174 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/tests/bootstrap.php @@ -0,0 +1,11 @@ +<?php + +$projectRoot = dirname(__DIR__); +require_once($projectRoot.'/vendor/autoload.php'); + +// Symlink module into ssp vendor lib so that templates and urls can resolve correctly +$linkPath = $projectRoot.'/vendor/simplesamlphp/simplesamlphp/modules/simplesamlphp-module-authwindowslive'; +if (file_exists($linkPath) === false) { + echo "Linking '$linkPath' to '$projectRoot'\n"; + symlink($projectRoot, $linkPath); +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/www/linkback.php b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/www/linkback.php new file mode 100644 index 0000000000000000000000000000000000000000..a87c7b09780fe85a16150bdc9855d1103d4b6c08 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/authwindowslive/www/linkback.php @@ -0,0 +1,51 @@ +<?php + +/** + * Handle linkback() response from Windows Live ID. + */ + +if (!array_key_exists('state', $_REQUEST)) { + throw new \Exception('Lost OAuth Client State'); +} +$state = \SimpleSAML\Auth\State::loadState( + $_REQUEST['state'], + \SimpleSAML\Module\authwindowslive\Auth\Source\LiveID::STAGE_INIT +); + +// http://msdn.microsoft.com/en-us/library/ff749771.aspx +if (array_key_exists('code', $_REQUEST)) { + // good + $state['authwindowslive:verification_code'] = $_REQUEST['code']; + + if (array_key_exists('exp', $_REQUEST)) { + $state['authwindowslive:exp'] = $_REQUEST['exp']; + } +} else { + // In the OAuth WRAP service, error_reason = 'user_denied' means user chose + // not to login with LiveID. It isn't clear that this is still true in the + // newer API, but the parameter name has changed to error. It doesn't hurt + // to preserve support for this, so this is left in as a placeholder. + // redirect them to their original page so they can choose another auth mechanism + if (($_REQUEST['error'] === 'user_denied') && ($state !== null)) { + $e = new \SimpleSAML\Error\UserAborted(); + \SimpleSAML\Auth\State::throwException($state, $e); + } + + // error + throw new \Exception('Authentication failed: ['.$_REQUEST['error'].'] '.$_REQUEST['error_description']); +} + +assert(array_key_exists(\SimpleSAML\Module\authwindowslive\Auth\Source\LiveID::AUTHID, $state)); + +// find authentication source +$sourceId = $state[\SimpleSAML\Module\authwindowslive\Auth\Source\LiveID::AUTHID]; + +/** @var \SimpleSAML\Module\authwindowslive\Auth\Source\LiveID|null $source */ +$source = \SimpleSAML\Auth\Source::getById($sourceId); +if ($source === null) { + throw new \Exception('Could not find authentication source with id '.$sourceId); +} + +$source->finalStep($state); + +\SimpleSAML\Auth\Source::completeAuth($state); diff --git a/vendor/simplesamlphp/simplesamlphp/modules/cas/.codecov.yml b/vendor/simplesamlphp/simplesamlphp/modules/cas/.codecov.yml new file mode 100644 index 0000000000000000000000000000000000000000..f7f39e1e93d0ca23383d5ed120442f62f5f15ac9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/cas/.codecov.yml @@ -0,0 +1,11 @@ +coverage: + status: + project: yes + +comment: + layout: "diff" + behavior: once + require_changes: true + require_base: no + require_head: yes + branches: null diff --git a/vendor/simplesamlphp/simplesamlphp/modules/cas/.php_cs.dist b/vendor/simplesamlphp/simplesamlphp/modules/cas/.php_cs.dist new file mode 100644 index 0000000000000000000000000000000000000000..e7d314696c7e461b645c3d603f3a5d3034082ba5 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/cas/.php_cs.dist @@ -0,0 +1,15 @@ +<?php +$finder = PhpCsFixer\Finder::create() + ->in([ + __DIR__ . '/lib', + __DIR__ . '/tests', + ]) +; +return PhpCsFixer\Config::create() + ->setRules([ + '@PSR2' => true, + '@PSR4' => true, + '@PSR5' => true, + ]) + ->setFinder($finder) +; diff --git a/vendor/simplesamlphp/simplesamlphp/modules/cas/.travis.yml b/vendor/simplesamlphp/simplesamlphp/modules/cas/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..a090b629439d90419e41ea41034758c0fc8695c1 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/cas/.travis.yml @@ -0,0 +1,31 @@ +sudo: required + +language: php + +php: + - 5.6 + - 7.0 + - 7.1 + - 7.2 + - 7.3 + +env: + - SIMPLESAMLPHP_VERSION=1.17.* + +before_script: + - composer require "simplesamlphp/simplesamlphp:${SIMPLESAMLPHP_VERSION}" --no-update + - composer update --no-interaction + - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then composer require --dev vimeo/psalm:1.1.9; fi + +script: + - bin/check-syntax.sh + - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then php vendor/phpunit/phpunit/phpunit; else php vendor/phpunit/phpunit/phpunit --no-coverage; fi + - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then vendor/bin/psalm; fi + +after_success: + # Codecov, need to edit bash uploader for incorrect TRAVIS_PYTHON_VERSION environment variable matching, at least until codecov/codecov-bash#133 is resolved + - curl -s https://codecov.io/bash > .codecov + - sed -i -e 's/TRAVIS_.*_VERSION/^TRAVIS_.*_VERSION=/' .codecov + - chmod +x .codecov + - if [[ $TRAVIS_PHP_VERSION == "5.6" ]]; then ./.codecov -X gcov; fi +# - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then bash <(curl -s https://codecov.io/bash); fi diff --git a/vendor/simplesamlphp/simplesamlphp/modules/cas/bin/check-syntax.sh b/vendor/simplesamlphp/simplesamlphp/modules/cas/bin/check-syntax.sh new file mode 100755 index 0000000000000000000000000000000000000000..db6dc4b0140cb09231c6bf2e756c6a668e8e7cbe --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/cas/bin/check-syntax.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +PHP='/usr/bin/env php' +RETURN=0 + +# check PHP files +for FILE in `find lib tests -name "*.php"`; do + $PHP -l $FILE > /dev/null 2>&1 + if [ $? -ne 0 ]; then + echo "Syntax check failed for ${FILE}" + RETURN=`expr ${RETURN} + 1` + fi +done + +exit $RETURN diff --git a/vendor/simplesamlphp/simplesamlphp/modules/cas/composer.json b/vendor/simplesamlphp/simplesamlphp/modules/cas/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..23e4b0943c6cd1085bbfc6e8fe1b1cd02861fdd5 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/cas/composer.json @@ -0,0 +1,43 @@ +{ + "name": "simplesamlphp/simplesamlphp-module-cas", + "description": "A module that provides CAS authentication", + "type": "simplesamlphp-module", + "keywords": ["simplesamlphp", "cas"], + "license": "LGPL-3.0-or-later", + "authors": [ + { + "name": "Olav Morken", + "email": "olavmrk@gmail.com" + } + ], + "config": { + "preferred-install": { + "simplesamlphp/simplesamlphp": "source", + "*": "dist" + } + }, + "autoload": { + "psr-4": { + "SimpleSAML\\Module\\cas\\": "lib/" + } + }, + "autoload-dev": { + "psr-4": { + "SimpleSAML\\Test\\Utils\\": "vendor/simplesamlphp/simplesamlphp/tests/Utils" + } + }, + "require": { + "php": ">=5.6", + "simplesamlphp/composer-module-installer": "~1.1", + "simplesamlphp/simplesamlphp-module-ldap": "^0.9", + "webmozart/assert": "~1.4" + }, + "require-dev": { + "simplesamlphp/simplesamlphp": "^1.17", + "phpunit/phpunit": "~5.7" + }, + "support": { + "issues": "https://github.com/tvdijen/simplesamlphp-module-cas/issues", + "source": "https://github.com/tvdijen/simplesamlphp-module-cas" + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/cas/default-disable b/vendor/simplesamlphp/simplesamlphp/modules/cas/default-disable new file mode 100644 index 0000000000000000000000000000000000000000..fa0bd82e2df7bd79d57593d35bc53c1f9d3ef71f --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/cas/default-disable @@ -0,0 +1,3 @@ +This file indicates that the default state of this module +is disabled. To enable, create a file named enable in the +same directory as this file. diff --git a/vendor/simplesamlphp/simplesamlphp/modules/cas/docs/cas.md b/vendor/simplesamlphp/simplesamlphp/modules/cas/docs/cas.md new file mode 100644 index 0000000000000000000000000000000000000000..c4c6ba72d9350f6d3923c34ee3f628c1c6203b3b --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/cas/docs/cas.md @@ -0,0 +1,32 @@ +Using the CAS authentication source with SimpleSAMLphp +========================================================== + +This is completely based on the original cas authentication, +the only diffrence is this is authentication module and not a script. + +Setting up the CAS authentication module +---------------------------------- + +Adding a authentication source + +example authsource.php +---------------------------------- + + 'example-cas' => array( + 'cas:CAS', + 'cas' => array( + 'login' => 'https://cas.example.com/login', + 'validate' => 'https://cas.example.com/validate', + 'logout' => 'https://cas.example.com/logout' + ), + 'ldap' => array( + 'servers' => 'ldaps://ldaps.example.be:636/', + 'enable_tls' => true, + 'searchbase' => 'ou=people,dc=org,dc=com', + 'searchattributes' => 'uid', + 'attributes' => array('uid','cn'), + 'priv_user_dn' => 'cn=simplesamlphp,ou=applications,dc=org,dc=com', + 'priv_user_pw' => 'password', + + ), + ), diff --git a/vendor/simplesamlphp/simplesamlphp/modules/cas/lib/Auth/Source/CAS.php b/vendor/simplesamlphp/simplesamlphp/modules/cas/lib/Auth/Source/CAS.php new file mode 100644 index 0000000000000000000000000000000000000000..0b0d23460ff6f4ff1b70f0791cc26ef142c24d6b --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/cas/lib/Auth/Source/CAS.php @@ -0,0 +1,270 @@ +<?php + +namespace SimpleSAML\Module\cas\Auth\Source; + +use Webmozart\Assert\Assert; + +/** + * Authenticate using CAS. + * + * Based on www/auth/login-cas.php by Mads Freek, RUC. + * + * @author Danny Bollaert, UGent. + * @package SimpleSAMLphp + */ + +class CAS extends \SimpleSAML\Auth\Source +{ + /** + * The string used to identify our states. + */ + const STAGE_INIT = '\SimpleSAML\Module\cas\Auth\Source\CAS.state'; + + /** + * The key of the AuthId field in the state. + */ + const AUTHID = '\SimpleSAML\Module\cas\Auth\Source\CAS.AuthId'; + + /** + * @var array with ldap configuration + */ + private $ldapConfig; + + /** + * @var array cas configuration + */ + private $casConfig; + + /** + * @var string cas chosen validation method + */ + + private $validationMethod; + + /** + * @var string cas login method + */ + private $loginMethod; + + /** + * Constructor for this authentication source. + * + * @param array $info Information about this authentication source. + * @param array $config Configuration. + */ + public function __construct($info, $config) + { + Assert::isArray($info); + Assert::isArray($config); + + // Call the parent constructor first, as required by the interface + parent::__construct($info, $config); + + if (!array_key_exists('cas', $config)) { + throw new \Exception('cas authentication source is not properly configured: missing [cas]'); + } + + if (!array_key_exists('ldap', $config)) { + throw new \Exception('ldap authentication source is not properly configured: missing [ldap]'); + } + + $this->casConfig = $config['cas']; + $this->ldapConfig = $config['ldap']; + + if (isset($this->casConfig['serviceValidate'])) { + $this->validationMethod = 'serviceValidate'; + } elseif (isset($this->casConfig['validate'])) { + $this->validationMethod = 'validate'; + } else { + throw new \Exception("validate or serviceValidate not specified"); + } + + if (isset($this->casConfig['login'])) { + $this->loginMethod = $this->casConfig['login']; + } else { + throw new \Exception("cas login URL not specified"); + } + } + + + /** + * This the most simple version of validating, this provides only authentication validation + * + * @param string $ticket + * @param string $service + * + * @return array username and attributes + */ + private function casValidate($ticket, $service) + { + $url = \SimpleSAML\Utils\HTTP::addURLParameters($this->casConfig['validate'], [ + 'ticket' => $ticket, + 'service' => $service, + ]); + $result = \SimpleSAML\Utils\HTTP::fetch($url); + + /** @var string $result */ + $res = preg_split("/\r?\n/", $result); + + if (strcmp($res[0], "yes") == 0) { + return [$res[1], []]; + } else { + throw new \Exception("Failed to validate CAS service ticket: $ticket"); + } + } + + + /** + * Uses the cas service validate, this provides additional attributes + * + * @param string $ticket + * @param string $service + * + * @return array username and attributes + */ + private function casServiceValidate($ticket, $service) + { + $url = \SimpleSAML\Utils\HTTP::addURLParameters( + $this->casConfig['serviceValidate'], + [ + 'ticket' => $ticket, + 'service' => $service, + ] + ); + $result = \SimpleSAML\Utils\HTTP::fetch($url); + + /** @var string $result */ + $dom = \SAML2\DOMDocumentFactory::fromString($result); + $xPath = new \DOMXpath($dom); + $xPath->registerNamespace("cas", 'http://www.yale.edu/tp/cas'); + $success = $xPath->query("/cas:serviceResponse/cas:authenticationSuccess/cas:user"); + if ($success->length == 0) { + $failure = $xPath->evaluate("/cas:serviceResponse/cas:authenticationFailure"); + throw new \Exception("Error when validating CAS service ticket: ".$failure->item(0)->textContent); + } else { + $attributes = []; + if ($casattributes = $this->casConfig['attributes']) { + // Some has attributes in the xml - attributes is a list of XPath expressions to get them + foreach ($casattributes as $name => $query) { + $attrs = $xPath->query($query); + foreach ($attrs as $attrvalue) { + $attributes[$name][] = $attrvalue->textContent; + } + } + } + + $item = $success->item(0); + if (is_null($item)) { + throw new \Exception("Error parsing serviceResponse."); + } + $casusername = $item->textContent; + + return [$casusername, $attributes]; + } + } + + + /** + * Main validation method, redirects to correct method + * (keeps finalStep clean) + * + * @param string $ticket + * @param string $service + * @return array username and attributes + */ + protected function casValidation($ticket, $service) + { + switch ($this->validationMethod) { + case 'validate': + return $this->casValidate($ticket, $service); + case 'serviceValidate': + return $this->casServiceValidate($ticket, $service); + default: + throw new \Exception("validate or serviceValidate not specified"); + } + } + + + /** + * Called by linkback, to finish validate/ finish logging in. + * @param array $state + * @return void + */ + public function finalStep(&$state) + { + $ticket = $state['cas:ticket']; + $stateID = \SimpleSAML\Auth\State::saveState($state, self::STAGE_INIT); + $service = \SimpleSAML\Module::getModuleURL('cas/linkback.php', ['stateID' => $stateID]); + list($username, $casattributes) = $this->casValidation($ticket, $service); + $ldapattributes = []; + + $config = \SimpleSAML\Configuration::loadFromArray( + $this->ldapConfig, + 'Authentication source '.var_export($this->authId, true) + ); + if ($this->ldapConfig['servers']) { + $ldap = new \SimpleSAML\Module\ldap\Auth\Ldap( + $config->getString('servers'), + $config->getBoolean('enable_tls', false), + $config->getBoolean('debug', false), + $config->getInteger('timeout', 0), + $config->getInteger('port', 389), + $config->getBoolean('referrals', true) + ); + $ldapattributes = $ldap->validate($this->ldapConfig, $username); + if ($ldapattributes === false) { + throw new \Exception("Failed to authenticate against LDAP-server."); + } + } + $attributes = array_merge_recursive($casattributes, $ldapattributes); + $state['Attributes'] = $attributes; + + \SimpleSAML\Auth\Source::completeAuth($state); + } + + + /** + * Log-in using cas + * + * @param array &$state Information about the current authentication. + * @return void + */ + public function authenticate(&$state) + { + Assert::isArray($state); + + // We are going to need the authId in order to retrieve this authentication source later + $state[self::AUTHID] = $this->authId; + + $stateID = \SimpleSAML\Auth\State::saveState($state, self::STAGE_INIT); + + $serviceUrl = \SimpleSAML\Module::getModuleURL('cas/linkback.php', ['stateID' => $stateID]); + + \SimpleSAML\Utils\HTTP::redirectTrustedURL($this->loginMethod, ['service' => $serviceUrl]); + } + + + /** + * Log out from this authentication source. + * + * This function should be overridden if the authentication source requires special + * steps to complete a logout operation. + * + * If the logout process requires a redirect, the state should be saved. Once the + * logout operation is completed, the state should be restored, and completeLogout + * should be called with the state. If this operation can be completed without + * showing the user a page, or redirecting, this function should return. + * + * @param array &$state Information about the current logout operation. + * @return void + */ + public function logout(&$state) + { + Assert::isArray($state); + $logoutUrl = $this->casConfig['logout']; + + \SimpleSAML\Auth\State::deleteState($state); + // we want cas to log us out + \SimpleSAML\Utils\HTTP::redirectTrustedURL($logoutUrl); + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/cas/phpunit.xml b/vendor/simplesamlphp/simplesamlphp/modules/cas/phpunit.xml new file mode 100644 index 0000000000000000000000000000000000000000..c0985fdd804b18d8d9179ecd956d63582c189e95 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/cas/phpunit.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" ?> +<phpunit bootstrap="tests/bootstrap.php"> + <testsuites> + <testsuite name="The project's test suite"> + <directory>tests/</directory> + </testsuite> + </testsuites> + <filter> + <whitelist processUncoveredFilesFromWhitelist="true"> + <directory suffix=".php">./lib</directory> + </whitelist> + </filter> + <logging> + <log type="coverage-text" target="php://stdout" showUncoveredFiles="true" /> + <log type="coverage-html" target="build/coverage" title="PHP Coveralls" charset="UTF-8" yui="true" highlight="true" lowUpperBound="35" highLowerBound="70" /> + <log type="coverage-clover" target="build/logs/clover.xml" /> + </logging> +</phpunit> + diff --git a/vendor/simplesamlphp/simplesamlphp/modules/cas/psalm.xml b/vendor/simplesamlphp/simplesamlphp/modules/cas/psalm.xml new file mode 100644 index 0000000000000000000000000000000000000000..4340e105df8bfe90a623d444c4b36cd0531cca21 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/cas/psalm.xml @@ -0,0 +1,30 @@ +<?xml version="1.0"?> +<psalm + name="SimpleSAMLphp CAS module" + useDocblockTypes="true" + totallyTyped="false" +> + <projectFiles> + <directory name="lib" /> + </projectFiles> + + <issueHandlers> + <LessSpecificReturnType errorLevel="info" /> + + <!-- level 3 issues - slightly lazy code writing, but probably low false-negatives --> + <DeprecatedMethod 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" /> + <UnusedClass errorLevel="info" /> + <PossiblyUnusedMethod errorLevel="info" /> + </issueHandlers> +</psalm> diff --git a/vendor/simplesamlphp/simplesamlphp/modules/cas/tests/bootstrap.php b/vendor/simplesamlphp/simplesamlphp/modules/cas/tests/bootstrap.php new file mode 100644 index 0000000000000000000000000000000000000000..f0c4e8c00af08ab3c490d5520fe4f14b347ba75c --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/cas/tests/bootstrap.php @@ -0,0 +1,11 @@ +<?php + +$projectRoot = dirname(__DIR__); +require_once($projectRoot.'/vendor/autoload.php'); + +// Symlink module into ssp vendor lib so that templates and urls can resolve correctly +$linkPath = $projectRoot.'/vendor/simplesamlphp/simplesamlphp/modules/cas'; +if (file_exists($linkPath) === false) { + echo "Linking '$linkPath' to '$projectRoot'\n"; + symlink($projectRoot, $linkPath); +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/cas/www/linkback.php b/vendor/simplesamlphp/simplesamlphp/modules/cas/www/linkback.php new file mode 100644 index 0000000000000000000000000000000000000000..15bae662e70d7d2a5cb08a98bf6bbb37eeeac8f2 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/cas/www/linkback.php @@ -0,0 +1,31 @@ +<?php + +use Webmozart\Assert\Assert; + +use \SimpleSAML\Module\cas\Auth\Source\CAS; + +/** + * Handle linkback() response from CAS. + */ + +if (!isset($_GET['stateID'])) { + throw new \SimpleSAML\Error\BadRequest('Missing stateID parameter.'); +} +$state = \SimpleSAML\Auth\State::loadState($_GET['stateID'], CAS::STAGE_INIT); + +if (!isset($_GET['ticket'])) { + throw new \SimpleSAML\Error\BadRequest('Missing ticket parameter.'); +} +$state['cas:ticket'] = (string) $_GET['ticket']; + +// Find authentication source +Assert::keyExists($state, CAS::AUTHID); +$sourceId = $state[CAS::AUTHID]; + +/** @var \SimpleSAML\Module\cas\Auth\Source\CAS|null $source */ +$source = \SimpleSAML\Auth\Source::getById($sourceId); +if ($source === null) { + throw new \Exception('Could not find authentication source with id '.$sourceId); +} + +$source->finalStep($state); diff --git a/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/.codecov.yml b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/.codecov.yml new file mode 100644 index 0000000000000000000000000000000000000000..f7f39e1e93d0ca23383d5ed120442f62f5f15ac9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/.codecov.yml @@ -0,0 +1,11 @@ +coverage: + status: + project: yes + +comment: + layout: "diff" + behavior: once + require_changes: true + require_base: no + require_head: yes + branches: null diff --git a/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/.php_cs.dist b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/.php_cs.dist new file mode 100644 index 0000000000000000000000000000000000000000..9649d08b883c8a661ebabcc8df54c4b748c8973f --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/.php_cs.dist @@ -0,0 +1,15 @@ +<?php +$finder = PhpCsFixer\Finder::create() + ->in([ + __DIR__ . '/tests', + __DIR__ . '/www', + ]) +; +return PhpCsFixer\Config::create() + ->setRules([ + '@PSR2' => true, + '@PSR4' => true, + '@PSR5' => true, + ]) + ->setFinder($finder) +; diff --git a/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/.travis.yml b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..3c250287a743959883e40e541e22f26fb1dd8635 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/.travis.yml @@ -0,0 +1,35 @@ +sudo: required + +language: php + +php: + - 5.6 + - 7.0 + - 7.1 + - 7.2 + - 7.3 + +env: + - SIMPLESAMLPHP_VERSION=1.17.* + +matrix: + allow_failures: + - php: 7.3 + +before_script: + - composer require "simplesamlphp/simplesamlphp:${SIMPLESAMLPHP_VERSION}" --no-update + - composer update --no-interaction + - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then composer require --dev vimeo/psalm:1.1.9; fi + +script: + - bin/check-syntax.sh + - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then php vendor/phpunit/phpunit/phpunit; else php vendor/phpunit/phpunit/phpunit --no-coverage; fi + - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then vendor/bin/psalm; fi + +after_success: + # Codecov, need to edit bash uploader for incorrect TRAVIS_PYTHON_VERSION environment variable matching, at least until codecov/codecov-bash#133 is resolved + - curl -s https://codecov.io/bash > .codecov + - sed -i -e 's/TRAVIS_.*_VERSION/^TRAVIS_.*_VERSION=/' .codecov + - chmod +x .codecov + - if [[ $TRAVIS_PHP_VERSION == "5.6" ]]; then ./.codecov -X gcov; fi +# - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then bash <(curl -s https://codecov.io/bash); fi diff --git a/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/LICENSE b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..0a041280bd00a9d068f503b8ee7ce35214bd24a1 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/LICENSE @@ -0,0 +1,165 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + + This version of the GNU Lesser General Public License incorporates +the terms and conditions of version 3 of the GNU General Public +License, supplemented by the additional permissions listed below. + + 0. Additional Definitions. + + As used herein, "this License" refers to version 3 of the GNU Lesser +General Public License, and the "GNU GPL" refers to version 3 of the GNU +General Public License. + + "The Library" refers to a covered work governed by this License, +other than an Application or a Combined Work as defined below. + + An "Application" is any work that makes use of an interface provided +by the Library, but which is not otherwise based on the Library. +Defining a subclass of a class defined by the Library is deemed a mode +of using an interface provided by the Library. + + A "Combined Work" is a work produced by combining or linking an +Application with the Library. The particular version of the Library +with which the Combined Work was made is also called the "Linked +Version". + + The "Minimal Corresponding Source" for a Combined Work means the +Corresponding Source for the Combined Work, excluding any source code +for portions of the Combined Work that, considered in isolation, are +based on the Application, and not on the Linked Version. + + The "Corresponding Application Code" for a Combined Work means the +object code and/or source code for the Application, including any data +and utility programs needed for reproducing the Combined Work from the +Application, but excluding the System Libraries of the Combined Work. + + 1. Exception to Section 3 of the GNU GPL. + + You may convey a covered work under sections 3 and 4 of this License +without being bound by section 3 of the GNU GPL. + + 2. Conveying Modified Versions. + + If you modify a copy of the Library, and, in your modifications, a +facility refers to a function or data to be supplied by an Application +that uses the facility (other than as an argument passed when the +facility is invoked), then you may convey a copy of the modified +version: + + a) under this License, provided that you make a good faith effort to + ensure that, in the event an Application does not supply the + function or data, the facility still operates, and performs + whatever part of its purpose remains meaningful, or + + b) under the GNU GPL, with none of the additional permissions of + this License applicable to that copy. + + 3. Object Code Incorporating Material from Library Header Files. + + The object code form of an Application may incorporate material from +a header file that is part of the Library. You may convey such object +code under terms of your choice, provided that, if the incorporated +material is not limited to numerical parameters, data structure +layouts and accessors, or small macros, inline functions and templates +(ten or fewer lines in length), you do both of the following: + + a) Give prominent notice with each copy of the object code that the + Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the object code with a copy of the GNU GPL and this license + document. + + 4. Combined Works. + + You may convey a Combined Work under terms of your choice that, +taken together, effectively do not restrict modification of the +portions of the Library contained in the Combined Work and reverse +engineering for debugging such modifications, if you also do each of +the following: + + a) Give prominent notice with each copy of the Combined Work that + the Library is used in it and that the Library and its use are + covered by this License. + + b) Accompany the Combined Work with a copy of the GNU GPL and this license + document. + + c) For a Combined Work that displays copyright notices during + execution, include the copyright notice for the Library among + these notices, as well as a reference directing the user to the + copies of the GNU GPL and this license document. + + d) Do one of the following: + + 0) Convey the Minimal Corresponding Source under the terms of this + License, and the Corresponding Application Code in a form + suitable for, and under terms that permit, the user to + recombine or relink the Application with a modified version of + the Linked Version to produce a modified Combined Work, in the + manner specified by section 6 of the GNU GPL for conveying + Corresponding Source. + + 1) Use a suitable shared library mechanism for linking with the + Library. A suitable mechanism is one that (a) uses at run time + a copy of the Library already present on the user's computer + system, and (b) will operate properly with a modified version + of the Library that is interface-compatible with the Linked + Version. + + e) Provide Installation Information, but only if you would otherwise + be required to provide such information under section 6 of the + GNU GPL, and only to the extent that such information is + necessary to install and execute a modified version of the + Combined Work produced by recombining or relinking the + Application with a modified version of the Linked Version. (If + you use option 4d0, the Installation Information must accompany + the Minimal Corresponding Source and Corresponding Application + Code. If you use option 4d1, you must provide the Installation + Information in the manner specified by section 6 of the GNU GPL + for conveying Corresponding Source.) + + 5. Combined Libraries. + + 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 that are not Applications and are not covered by this +License, and convey such a combined library under terms of your +choice, if you do both of the following: + + a) Accompany the combined library with a copy of the same work based + on the Library, uncombined with any other library facilities, + conveyed under the terms of this License. + + b) Give prominent notice with the combined library that part of it + is a work based on the Library, and explaining where to find the + accompanying uncombined form of the same work. + + 6. Revised Versions of the GNU Lesser General Public License. + + The Free Software Foundation may publish revised and/or new versions +of the GNU 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 as you received it specifies that a certain numbered version +of the GNU Lesser General Public License "or any later version" +applies to it, you have the option of following the terms and +conditions either of that published version or of any later version +published by the Free Software Foundation. If the Library as you +received it does not specify a version number of the GNU Lesser +General Public License, you may choose any version of the GNU Lesser +General Public License ever published by the Free Software Foundation. + + If the Library as you received it specifies that a proxy can decide +whether future versions of the GNU Lesser General Public License shall +apply, that proxy's public statement of acceptance of any version is +permanent authorization for you to choose that version for the +Library. diff --git a/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/bin/check-syntax.sh b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/bin/check-syntax.sh new file mode 100755 index 0000000000000000000000000000000000000000..7fc4fcd3da6b1e849ad958ee52e31ef0514963b9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/bin/check-syntax.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +PHP='/usr/bin/env php' +RETURN=0 + +# check PHP files +for FILE in `find tests www -name "*.php"`; do + $PHP -l $FILE > /dev/null 2>&1 + if [ $? -ne 0 ]; then + echo "Syntax check failed for ${FILE}" + RETURN=`expr ${RETURN} + 1` + fi +done + +exit $RETURN diff --git a/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/composer.json b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..b4c0ff482cbbc7d668c61a9ec1c051bfa74f43ac --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/composer.json @@ -0,0 +1,41 @@ +{ + "name": "simplesamlphp/simplesamlphp-module-exampleattributeserver", + "description": "An example for SAML attributes queries", + "type": "simplesamlphp-module", + "keywords": ["simplesamlphp", "exampleattributeserver"], + "license": "LGPL-3.0-or-later", + "authors": [ + { + "name": "Olav Morken", + "email": "olavmrk@gmail.com" + } + ], + "config": { + "preferred-install": { + "simplesamlphp/simplesamlphp": "source", + "*": "dist" + } + }, + "autoload": { + "psr-4": { + "SimpleSAML\\Module\\exampleattributeserver\\": "lib/" + } + }, + "autoload-dev": { + "psr-4": { + "SimpleSAML\\Test\\Utils\\": "vendor/simplesamlphp/simplesamlphp/tests/Utils" + } + }, + "require": { + "php": ">=5.6", + "simplesamlphp/composer-module-installer": "~1.1" + }, + "require-dev": { + "simplesamlphp/simplesamlphp": "^1.17", + "phpunit/phpunit": "~5.7" + }, + "support": { + "issues": "https://github.com/tvdijen/simplesamlphp-module-exampleattributeserver/issues", + "source": "https://github.com/tvdijen/simplesamlphp-module-exampleattributeserver" + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/default-enable b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/default-enable new file mode 100644 index 0000000000000000000000000000000000000000..25615cb47c350d23033eb9801627ed8330bcc3e9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/default-enable @@ -0,0 +1,3 @@ +This file indicates that the default state of this module +is enabled. To disable, create a file named disable in the +same directory as this file. diff --git a/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/phpunit.xml b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/phpunit.xml new file mode 100644 index 0000000000000000000000000000000000000000..c0985fdd804b18d8d9179ecd956d63582c189e95 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/phpunit.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" ?> +<phpunit bootstrap="tests/bootstrap.php"> + <testsuites> + <testsuite name="The project's test suite"> + <directory>tests/</directory> + </testsuite> + </testsuites> + <filter> + <whitelist processUncoveredFilesFromWhitelist="true"> + <directory suffix=".php">./lib</directory> + </whitelist> + </filter> + <logging> + <log type="coverage-text" target="php://stdout" showUncoveredFiles="true" /> + <log type="coverage-html" target="build/coverage" title="PHP Coveralls" charset="UTF-8" yui="true" highlight="true" lowUpperBound="35" highLowerBound="70" /> + <log type="coverage-clover" target="build/logs/clover.xml" /> + </logging> +</phpunit> + diff --git a/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/psalm.xml b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/psalm.xml new file mode 100644 index 0000000000000000000000000000000000000000..9326f7da9c0e9e1ec6bdbb0e019e12c16f8a38c6 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/psalm.xml @@ -0,0 +1,30 @@ +<?xml version="1.0"?> +<psalm + name="SimpleSAMLphp exampleattributeserver module" + useDocblockTypes="true" + totallyTyped="false" +> + <projectFiles> + <directory name="www" /> + </projectFiles> + + <issueHandlers> + <LessSpecificReturnType errorLevel="info" /> + + <!-- level 3 issues - slightly lazy code writing, but probably low false-negatives --> + <DeprecatedMethod 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" /> + <UnusedClass errorLevel="info" /> + <PossiblyUnusedMethod errorLevel="info" /> + </issueHandlers> +</psalm> diff --git a/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/tests/bootstrap.php b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/tests/bootstrap.php new file mode 100644 index 0000000000000000000000000000000000000000..67beffd16eb162c745130827e836a3f8c6a442fb --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/tests/bootstrap.php @@ -0,0 +1,11 @@ +<?php + +$projectRoot = dirname(__DIR__); +require_once($projectRoot.'/vendor/autoload.php'); + +// Symlink module into ssp vendor lib so that templates and urls can resolve correctly +$linkPath = $projectRoot.'/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver'; +if (file_exists($linkPath) === false) { + echo "Linking '$linkPath' to '$projectRoot'\n"; + symlink($projectRoot, $linkPath); +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/www/attributeserver.php b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/www/attributeserver.php new file mode 100644 index 0000000000000000000000000000000000000000..84aad77dd1204475d4a9d1b908e7c9c32904bb01 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/exampleattributeserver/www/attributeserver.php @@ -0,0 +1,93 @@ +<?php + +$metadata = \SimpleSAML\Metadata\MetaDataStorageHandler::getMetadataHandler(); + +$binding = \SAML2\Binding::getCurrentBinding(); +$query = $binding->receive(); +if (!($query instanceof \SAML2\AttributeQuery)) { + throw new \SimpleSAML\Error\BadRequest('Invalid message received to AttributeQuery endpoint.'); +} + +$idpEntityId = $metadata->getMetaDataCurrentEntityID('saml20-idp-hosted'); + +$issuer = $query->getIssuer(); +if ($issuer === null) { + throw new \SimpleSAML\Error\BadRequest('Missing <saml:Issuer> in <samlp:AttributeQuery>.'); +} elseif (is_string($issuer)) { + $spEntityId = $issuer; +} else { + $spEntityId = $issuer->getValue(); +} + +$idpMetadata = $metadata->getMetaDataConfig($idpEntityId, 'saml20-idp-hosted'); +$spMetadata = $metadata->getMetaDataConfig($spEntityId, 'saml20-sp-remote'); + +// The endpoint we should deliver the message to +$endpoint = $spMetadata->getString('testAttributeEndpoint'); + +// The attributes we will return +$attributes = [ + 'name' => ['value1', 'value2', 'value3'], + 'test' => ['test'], +]; + +// The name format of the attributes +$attributeNameFormat = \SAML2\Constants::NAMEFORMAT_UNSPECIFIED; + +// Determine which attributes we will return +$returnAttributes = array_keys($query->getAttributes()); +if (count($returnAttributes) === 0) { + SimpleSAML\Logger::debug('No attributes requested - return all attributes.'); + $returnAttributes = $attributes; +} elseif ($query->getAttributeNameFormat() !== $attributeNameFormat) { + SimpleSAML\Logger::debug('Requested attributes with wrong NameFormat - no attributes returned.'); + $returnAttributes = []; +} else { + foreach ($returnAttributes as $name => $values) { + /** @var array $values */ + if (!array_key_exists($name, $attributes)) { + // We don't have this attribute + unset($returnAttributes[$name]); + continue; + } + if (count($values) === 0) { + // Return all attributes + $returnAttributes[$name] = $attributes[$name]; + continue; + } + + // Filter which attribute values we should return + $returnAttributes[$name] = array_intersect($values, $attributes[$name]); + } +} + +// $returnAttributes contains the attributes we should return. Send them +$assertion = new \SAML2\Assertion(); +$assertion->setIssuer($idpEntityId); +$assertion->setNameId($query->getNameId()); +$assertion->setNotBefore(time()); +$assertion->setNotOnOrAfter(time() + 300); // 60*5 = 5min +$assertion->setValidAudiences([$spEntityId]); +$assertion->setAttributes($returnAttributes); +$assertion->setAttributeNameFormat($attributeNameFormat); + +$sc = new \SAML2\XML\saml\SubjectConfirmation(); +$sc->Method = \SAML2\Constants::CM_BEARER; +$sc->SubjectConfirmationData = new \SAML2\XML\saml\SubjectConfirmationData(); +$sc->SubjectConfirmationData->setNotOnOrAfter(time() + 300); // 60*5 = 5min +$sc->SubjectConfirmationData->setRecipient($endpoint); +$sc->SubjectConfirmationData->setInResponseTo($query->getId()); +$assertion->setSubjectConfirmation([$sc]); + +\SimpleSAML\Module\saml\Message::addSign($idpMetadata, $spMetadata, $assertion); + +$response = new \SAML2\Response(); +$response->setRelayState($query->getRelayState()); +$response->setDestination($endpoint); +$response->setIssuer($idpEntityId); +$response->setInResponseTo($query->getId()); +$response->setAssertions([$assertion]); +\SimpleSAML\Module\saml\Message::addSign($idpMetadata, $spMetadata, $response); + +$binding = new \SAML2\HTTPPost(); +$binding->send($response); diff --git a/vendor/simplesamlphp/simplesamlphp/modules/memcookie/.codecov.yml b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/.codecov.yml new file mode 100644 index 0000000000000000000000000000000000000000..f7f39e1e93d0ca23383d5ed120442f62f5f15ac9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/.codecov.yml @@ -0,0 +1,11 @@ +coverage: + status: + project: yes + +comment: + layout: "diff" + behavior: once + require_changes: true + require_base: no + require_head: yes + branches: null diff --git a/vendor/simplesamlphp/simplesamlphp/modules/memcookie/.travis.yml b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..69769c6526ba4a6040eddf0fd3dfb4920a68ede8 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/.travis.yml @@ -0,0 +1,31 @@ +sudo: required + +language: php + +php: + - 5.6 + - 7.0 + - 7.1 + - 7.2 + - 7.3 + +env: + - SIMPLESAMLPHP_VERSION=1.17.* + +before_script: + - composer require "simplesamlphp/simplesamlphp:${SIMPLESAMLPHP_VERSION}" --no-update + - composer update --no-interaction + - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then composer require --dev vimeo/psalm:1.1.9; fi + +script: + - vendor/simplesamlphp/simplesamlphp-test-framework/bin/check-syntax-php.sh + - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then php vendor/phpunit/phpunit/phpunit; else php vendor/phpunit/phpunit/phpunit --no-coverage; fi + - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then vendor/bin/psalm; fi + +after_success: + # Codecov, need to edit bash uploader for incorrect TRAVIS_PYTHON_VERSION environment variable matching, at least until codecov/codecov-bash#133 is resolved + - curl -s https://codecov.io/bash > .codecov + - sed -i -e 's/TRAVIS_.*_VERSION/^TRAVIS_.*_VERSION=/' .codecov + - chmod +x .codecov + - if [[ $TRAVIS_PHP_VERSION == "5.6" ]]; then ./.codecov -X gcov; fi +# - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then bash <(curl -s https://codecov.io/bash); fi diff --git a/vendor/simplesamlphp/simplesamlphp/modules/memcookie/README.md b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/README.md new file mode 100644 index 0000000000000000000000000000000000000000..cea74f253dcdbd76f4af4103360088a9a1c6ce7d --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/README.md @@ -0,0 +1,109 @@ +SimpleSAMLphp AuthMemCookie module +================================== + +This module implements [Auth MemCookie](https://zenprojects.github.io/Apache-Authmemcookie-Module/) support for SimpleSAMLphp. This allows +you to integrate SimpleSAMLphp with web applications written in languages other than PHP. + +*AuthMemCookie* works by reading authentication data from a *memcache* server and setting environment variables based on +the attributes found in this data. It also allows you to use the default **Apache access control** features to restrict +access to your site. + +Requisites +---------- + +This module requires you to install and set up the following requirements: + +* SimpleSAMLphp running as a [Service Provider](https://simplesamlphp.org/docs/stable/simplesamlphp-sp). +* A *memcache* server. +* [Auth MemCookie](https://zenprojects.github.io/Apache-Authmemcookie-Module/) . + +Installation +------------ + +Once you have installed SimpleSAMLphp, installing this module is very simple. First of all, you will need to [download +Composer](https://getcomposer.org/) if you haven't already. After installing Composer, just execute the following +command in the root of your SimpleSAMLphp installation: + +``` +./composer.phar require simplesamlphp/simplesamlphp-module-memcookie:dev-master +``` + +where `dev-master` instructs Composer to install the `master` branch from the Git repository. See the +[releases](https://github.com/simplesamlphp/simplesamlphp-module-memcookie/releases) available if you want to use a +stable version of the module. + +The module is enabled by default. If you want to disable the module once installed, you just need to create a file named +`disable` in the `modules/memcookie` directory inside your SimpleSAMLphp installation. + +Configuration +------------- + +The first step to use this module is to configure *Auth MemCookie* appropriately. The following example (that you can +find also in `extra/auth_memcookie.conf`) might be helpful: + +``` +<Location /> + # This is a list of memcache servers which Auth MemCookie + # should use. + # Note that this list must list the same servers as the + # 'authmemcookie.servers'-option in config.php in the + # configuration for simpleSAMLphp. + # + # The syntax for this option is inherited from: http://docs.libmemcached.org/libmemcached_configuration.html + Auth_memCookie_Memcached_Configuration "--SERVER=127.0.0.1:11211" + + # This must be set to 'on' to enable Auth MemCookie for + # this directory. + Auth_memCookie_Authoritative on + + # This adjusts the maximum number of data elements in the + # session data. The default is 10, which can be to low. + Auth_memCookie_SessionTableSize "40" + + # These two commands are required to enable access control + # in Apache. + AuthType Cookie + AuthName "My Login" + + # This command causes apache to redirect to the given + # URL when we receive a '401 Authorization Required' + # error. We redirect to "/simplesaml/module.php/memcookie/auth.php", + # which initializes a login to the IdP. + ErrorDocument 401 "/simplesaml/module.php/memcookie/auth.php" +</Location> + +<Location /protected> + # This allows all authenticated users to access the + # directory. To learn more about the 'Require' command, + # please look at: + # http://httpd.apache.org/docs/2.0/mod/core.html#require + Require valid-user +</Location> +``` + +Once *Auth MemCookie* has been correctly configured, you need to configure the module itself by editing the +`config/authmemcookie.php` file. Set the `username` configuration option to the name of an attribute that you are sure +to receive and that will identify the user unambiguously. Read the instructions in the file itself if you need help to +configure it. + +If you already have an *auth source* configured and working in SimpleSAMLphp, and all your memcookie configuration +options are correct, you are ready to go! Make sure to reload Apache so that it uses the new configuration and *Auth +MemCookie* is loaded. Then you can point your browser to the location that you have protected in Apache and it should +redirect you automatically to the IdP for authentication. + +In order to see all the environment variables you have available in the protected location, you can drop a PHP script +like the following in there and access it from your browser after authenticating to your IdP: + +``` +<html> + <body> + <table> +<?php + foreach ($_SERVER as $key => $value) { + echo " <tr><td>".htmlspecialchars($key)."</td><td>".htmlspecialchars($value)."</td></tr>\n"; + } +?> + </table> + </body> +</html> +``` diff --git a/vendor/simplesamlphp/simplesamlphp/modules/memcookie/composer.json b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..994b242d1dafe31a0588341e52bc3257008e969f --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/composer.json @@ -0,0 +1,31 @@ +{ + "name": "simplesamlphp/simplesamlphp-module-memcookie", + "description": "A SimpleSAMLphp module that allows integration with Auth MemCookie, allowing web applications written in other languages than PHP to integrate with SimpleSAMLphp.", + "type": "simplesamlphp-module", + "keywords": [ "SimpleSAMLphp", "Auth MemCookie", "apache", "cookies"], + "homepage": "https://simplesamlphp.org/", + "license": "LGPL-2.1", + "authors": [ + { + "name": "Olav Morken", + "email": "olav.morken@uninett.no" + }, + { + "name": "Jaime Perez Crespo", + "email": "jaime.perez@uninett.no" + } + ], + "require": { + "php": ">=5.6", + "simplesamlphp/composer-module-installer": ">=1.1.6" + }, + "require-dev": { + "phpunit/phpunit": "~5.7", + "simplesamlphp/simplesamlphp": "^1.17", + "simplesamlphp/simplesamlphp-test-framework": "^0.0.6" + }, + "support": { + "issues": "https://github.com/simplesamlphp/simplesamlphp-module-memcookie/issues", + "source": "https://github.com/simplesamlphp/simplesamlphp-module-memcookie/" + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/memcookie/config-templates/authmemcookie.php b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/config-templates/authmemcookie.php new file mode 100644 index 0000000000000000000000000000000000000000..fac02813814cd56c09cd69ce3b526408d35da4e9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/config-templates/authmemcookie.php @@ -0,0 +1,73 @@ +<?php + +/** + * This is the configuration file for the Auth MemCookie example. + */ + +$config = [ + /* + * The authentication source that should be used. + * + * This must be one of the authentication sources configured in config/authsources.php. + */ + 'authsource' => 'default-sp', + + /* + * This is the name of the cookie we should save the session id in. The value of this option must match the + * Auth_memCookie_CookieName option in the Auth MemCookie configuration. The default value is 'AuthMemCookie'. + * + * Default: + * 'cookiename' => 'AuthMemCookie', + */ + 'cookiename' => 'AuthMemCookie', + + /* + * This option specifies the name of the attribute which contains the username of the user. It must be set to + * a valid attribute name. + * + * Examples: + * 'username' => 'uid', // LDAP attribute for user id. + * 'username' => 'mail', // LDAP attribute for email address. + * + * Default: + * No default value. + */ + 'username' => null, + + /* + * This option specifies the name of the attribute which contains the groups of the user. Set this option to + * NULL if you don't want to include any groups. + * + * Example: + * 'groups' => 'edupersonaffiliation', + * + * Default: + * 'groups' => null, + */ + 'groups' => null, + + /* + * This option contains the hostnames or IP addresses of the memcache servers where we should store the + * authentication information. Separator is a comma. This option should match the address part of the + * Auth_memCookie_Memcached_AddrPort option in the Auth MemCookie configuration. + * + * Examples: + * 'memcache.host' => '192.168.93.52', + * 'memcache.host' => 'memcache.example.org', + * 'memcache.host' => 'memcache1.example.org,memcache2.example.org' + * + * Default: + * 'memcache.host' => '127.0.0.1', + */ + 'memcache.host' => '127.0.0.1', + + /* + * This option contains the port number of the memcache server where we should store the + * authentication information. This option should match the port part of the + * Auth_memCookie_Memcached_AddrPort option in the Auth MemCookie configuration. + * + * Default: + * 'memcache.port' => 11211, + */ + 'memcache.port' => 11211, +]; diff --git a/vendor/simplesamlphp/simplesamlphp/modules/memcookie/default-enable b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/default-enable new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/vendor/simplesamlphp/simplesamlphp/modules/memcookie/extra/auth_memcookie.conf b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/extra/auth_memcookie.conf new file mode 100644 index 0000000000000000000000000000000000000000..a3477a80bdc046a97f053a8118a2ce2681508367 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/extra/auth_memcookie.conf @@ -0,0 +1,38 @@ +<Location /> + # This is a list of memcache servers which Auth MemCookie + # should use. + # Note that this list must list the same servers as the + # 'authmemcookie.servers'-option in config.php in the + # configuration for simpleSAMLphp. + # + # The syntax for this option is inherited from: http://docs.libmemcached.org/libmemcached_configuration.html + Auth_memCookie_Memcached_Configuration "--SERVER=127.0.0.1:11211" + + # This must be set to 'on' to enable Auth MemCookie for + # this directory. + Auth_memCookie_Authoritative on + + # This adjusts the maximum number of data elements in the + # session data. The default is 10, which can be to low. + Auth_memCookie_SessionTableSize "40" + + # These two commands are required to enable access control + # in Apache. + AuthType Cookie + AuthName "My Login" + + # This command causes apache to redirect to the given + # URL when we receive a '401 Authorization Required' + # error. We redirect to "/simplesaml/module.php/memcookie/auth.php", + # which initializes a login to the IdP. + ErrorDocument 401 "/simplesaml/module.php/memcookie/auth.php" +</Location> + +<Location /protected> + # This allows all authenticated users to access the + # directory. To learn more about the 'Require' command, + # please look at: + # http://httpd.apache.org/docs/2.0/mod/core.html#require + Require valid-user +</Location> + diff --git a/vendor/simplesamlphp/simplesamlphp/modules/memcookie/lib/AuthMemCookie.php b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/lib/AuthMemCookie.php new file mode 100644 index 0000000000000000000000000000000000000000..d5ecc4d88ab39115d556e5a7f68d192f786e741e --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/lib/AuthMemCookie.php @@ -0,0 +1,171 @@ +<?php + +namespace SimpleSAML\Module\memcookie; + +/** + * This is a helper class for the Auth MemCookie module. + * It handles the configuration, and implements the logout handler. + * + * @author Olav Morken, UNINETT AS. + * @package SimpleSAMLphp + */ +class AuthMemCookie +{ + /** + * @var AuthMemCookie|null This is the singleton instance of this class. + */ + private static $instance = null; + + + /** + * @var \SimpleSAML\Configuration The configuration for Auth MemCookie. + */ + private $config; + + + /** + * This function is used to retrieve the singleton instance of this class. + * + * @return AuthMemCookie The singleton instance of this class. + */ + public static function getInstance() + { + if (self::$instance === null) { + self::$instance = new AuthMemCookie(); + } + + return self::$instance; + } + + + /** + * This function implements the constructor for this class. It loads the Auth MemCookie configuration. + */ + private function __construct() + { + // load AuthMemCookie configuration + $this->config = \SimpleSAML\Configuration::getConfig('authmemcookie.php'); + } + + + /** + * Retrieve the authentication source that should be used to authenticate the user. + * + * @return string The login type which should be used for Auth MemCookie. + */ + public function getAuthSource() + { + return $this->config->getString('authsource'); + } + + + /** + * This function retrieves the name of the cookie from the configuration. + * + * @return string The name of the cookie. + * @throws \Exception If the value of the 'cookiename' configuration option is invalid. + */ + public function getCookieName() + { + $cookieName = $this->config->getString('cookiename', 'AuthMemCookie'); + if (!is_string($cookieName) || strlen($cookieName) === 0) { + throw new \Exception( + "Configuration option 'cookiename' contains an invalid value. This option should be a string." + ); + } + + return $cookieName; + } + + + /** + * This function retrieves the name of the attribute which contains the username from the configuration. + * + * @return string The name of the attribute which contains the username. + */ + public function getUsernameAttr() + { + $usernameAttr = $this->config->getString('username', null); + + return $usernameAttr; + } + + + /** + * This function retrieves the name of the attribute which contains the groups from the configuration. + * + * @return string|null The name of the attribute which contains the groups. + */ + public function getGroupsAttr() + { + $groupsAttr = $this->config->getString('groups', null); + + return $groupsAttr; + } + + + /** + * This function creates and initializes a Memcache object from our configuration. + * + * @return \Memcache|\Memcached A Memcache object initialized from our configuration. + */ + public function getMemcache() + { + $memcacheHost = $this->config->getString('memcache.host', '127.0.0.1'); + $memcachePort = $this->config->getInteger('memcache.port', 11211); + + $class = class_exists('\Memcache') ? '\Memcache' : (class_exists('\Memcached') ? '\Memcached' : false); + + if (!$class) { + throw new \Exception('Missing Memcached implementation. You must install either the Memcache or Memcached extension.'); + } + + /** @psalm-suppress InvalidStringClass */ + $memcache = new $class; + + foreach (explode(',', $memcacheHost) as $memcacheHost) { + if ($memcache instanceof \Memcached) { + $memcache->addServer($memcacheHost, $memcachePort); + } else { + $memcache->addServer($memcacheHost, $memcachePort, true); + } + } + + /** @var \Memcache|\Memcached $memcache */ + return $memcache; + } + + + /** + * This function logs the user out by deleting the session information from memcache. + * @return void + */ + private function doLogout() + { + $cookieName = $this->getCookieName(); + + // check if we have a valid cookie + if (!array_key_exists($cookieName, $_COOKIE)) { + return; + } + + $sessionID = $_COOKIE[$cookieName]; + + // delete the session from memcache + $memcache = $this->getMemcache(); + $memcache->delete($sessionID); + + // delete the session cookie + \SimpleSAML\Utils\HTTP::setCookie($cookieName, null); + } + + + /** + * This function implements the logout handler. It deletes the information from Memcache. + * @return void + */ + public static function logoutHandler() + { + self::getInstance()->doLogout(); + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/memcookie/phpunit.xml b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/phpunit.xml new file mode 100644 index 0000000000000000000000000000000000000000..c0985fdd804b18d8d9179ecd956d63582c189e95 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/phpunit.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" ?> +<phpunit bootstrap="tests/bootstrap.php"> + <testsuites> + <testsuite name="The project's test suite"> + <directory>tests/</directory> + </testsuite> + </testsuites> + <filter> + <whitelist processUncoveredFilesFromWhitelist="true"> + <directory suffix=".php">./lib</directory> + </whitelist> + </filter> + <logging> + <log type="coverage-text" target="php://stdout" showUncoveredFiles="true" /> + <log type="coverage-html" target="build/coverage" title="PHP Coveralls" charset="UTF-8" yui="true" highlight="true" lowUpperBound="35" highLowerBound="70" /> + <log type="coverage-clover" target="build/logs/clover.xml" /> + </logging> +</phpunit> + diff --git a/vendor/simplesamlphp/simplesamlphp/modules/memcookie/psalm.xml b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/psalm.xml new file mode 100644 index 0000000000000000000000000000000000000000..c257963f61a069567bcc606bd24ebb9142297870 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/psalm.xml @@ -0,0 +1,37 @@ +<?xml version="1.0"?> +<psalm + name="SimpleSAMLphp Memcookie" + useDocblockTypes="true" + totallyTyped="false" +> + <projectFiles> + <directory name="config-templates" /> + <directory name="lib" /> + <directory name="www" /> + </projectFiles> + + <issueHandlers> + <LessSpecificReturnType errorLevel="info" /> + + <!-- level 3 issues - slightly lazy code writing, but probably low false-negatives --> + <DeprecatedMethod 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" /> + <UnusedClass errorLevel="info" /> + <PossiblyUnusedMethod errorLevel="info" /> + </issueHandlers> + + <stubs> + <file name="vendor/simplesamlphp/simplesamlphp-test-framework/stubs/memcache.php" /> + <file name="vendor/simplesamlphp/simplesamlphp-test-framework/stubs/memcached.php" /> + </stubs> +</psalm> diff --git a/vendor/simplesamlphp/simplesamlphp/modules/memcookie/tests/bootstrap.php b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/tests/bootstrap.php new file mode 100644 index 0000000000000000000000000000000000000000..0fda7dc8d5f67a754a4ee1a42d9cf149a22ec487 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/tests/bootstrap.php @@ -0,0 +1,11 @@ +<?php + +$projectRoot = dirname(__DIR__); +require_once($projectRoot.'/vendor/autoload.php'); + +// Symlink module into ssp vendor lib so that templates and urls can resolve correctly +$linkPath = $projectRoot.'/vendor/simplesamlphp/simplesamlphp/modules/memcookie'; +if (file_exists($linkPath) === false) { + echo "Linking '$linkPath' to '$projectRoot'\n"; + symlink($projectRoot, $linkPath); +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/memcookie/www/auth.php b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/www/auth.php new file mode 100644 index 0000000000000000000000000000000000000000..9235245550f507eb650b7d532e02d0f3e9a18468 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/memcookie/www/auth.php @@ -0,0 +1,90 @@ +<?php + +use SimpleSAML\Utils; +use SimpleSAML\Module\memcookie\AuthMemCookie; + +/** + * This file implements an script which can be used to authenticate users with Auth MemCookie. + * See: https://zenprojects.github.io/Apache-Authmemcookie-Module/ + * + * The configuration for this script is stored in config/authmemcookie.php. + * + * The file extra/auth_memcookie.conf contains an example of how Auth Memcookie can be configured + * to use SimpleSAMLphp. + */ + +// load SimpleSAMLphp configuration +$ssp_cf = \SimpleSAML\Configuration::getInstance(); + +// load Auth MemCookie configuration +$amc_cf = AuthMemCookie::getInstance(); + +$sourceId = $amc_cf->getAuthSource(); +$s = new SimpleSAML\Auth\Simple($sourceId); + +// check if the user is authorized. We attempt to authenticate the user if not +$s->requireAuth(); + +// generate session id and save it in a cookie +$sessionID = Utils\Random::generateID(); +$cookieName = $amc_cf->getCookieName(); +Utils\HTTP::setCookie($cookieName, $sessionID); + +// generate the authentication information +$attributes = $s->getAttributes(); + +$authData = []; + +// username +$usernameAttr = $amc_cf->getUsernameAttr(); +if (!array_key_exists($usernameAttr, $attributes)) { + throw new \SimpleSAML\Error\Exception( + "The user doesn't have an attribute named '".$usernameAttr. + "'. This attribute is expected to contain the username." + ); +} +$authData['UserName'] = $attributes[$usernameAttr]; + +// groups +$groupsAttr = $amc_cf->getGroupsAttr(); +if ($groupsAttr !== null) { + if (!array_key_exists($groupsAttr, $attributes)) { + throw new \SimpleSAML\Error\Exception( + "The user doesn't have an attribute named '".$groupsAttr. + "'. This attribute is expected to contain the groups the user is a member of." + ); + } + $authData['Groups'] = $attributes[$groupsAttr]; +} else { + $authData['Groups'] = []; +} + +$authData['RemoteIP'] = $_SERVER['REMOTE_ADDR']; + +foreach ($attributes as $n => $v) { + $authData['ATTR_'.$n] = $v; +} + +// store the authentication data in the memcache server +$data = ''; +foreach ($authData as $n => $v) { + if (is_array($v)) { + $v = implode(':', $v); + } + $data .= $n.'='.$v."\r\n"; +} + +$memcache = $amc_cf->getMemcache(); +$expirationTime = $s->getAuthData('Expire'); +if ($memcache instanceof \Memcached) { + $memcache->set($sessionID, $data, $expirationTime); +} else { + $memcache->set($sessionID, $data, 0, $expirationTime); +} + +// register logout handler +$session = \SimpleSAML\Session::getSessionFromRequest(); +$session->registerLogoutHandler($sourceId, '\SimpleSAML\Module\memcookie\AuthMemCookie', 'logoutHandler'); + +// redirect the user back to this page to signal that the login is completed +Utils\HTTP::redirectTrustedURL(Utils\HTTP::getSelfURL()); diff --git a/vendor/simplesamlphp/simplesamlphp/modules/riak/.codecov.yml b/vendor/simplesamlphp/simplesamlphp/modules/riak/.codecov.yml new file mode 100644 index 0000000000000000000000000000000000000000..f7f39e1e93d0ca23383d5ed120442f62f5f15ac9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/riak/.codecov.yml @@ -0,0 +1,11 @@ +coverage: + status: + project: yes + +comment: + layout: "diff" + behavior: once + require_changes: true + require_base: no + require_head: yes + branches: null diff --git a/vendor/simplesamlphp/simplesamlphp/modules/riak/.php_cs.dist b/vendor/simplesamlphp/simplesamlphp/modules/riak/.php_cs.dist new file mode 100644 index 0000000000000000000000000000000000000000..88f0c20358084b7082cfa925993ee61f7d810af0 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/riak/.php_cs.dist @@ -0,0 +1,17 @@ +<?php +$finder = PhpCsFixer\Finder::create() + ->in([ + __DIR__ . '/lib', + __DIR__ . '/hooks', + __DIR__ . '/tests', + __DIR__ . '/config-templates', + ]) +; +return PhpCsFixer\Config::create() + ->setRules([ + '@PSR2' => true, + '@PSR4' => true, + '@PSR5' => true, + ]) + ->setFinder($finder) +; diff --git a/vendor/simplesamlphp/simplesamlphp/modules/riak/.travis.yml b/vendor/simplesamlphp/simplesamlphp/modules/riak/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..fec43ab41a5a3b2129c6a4b00802c56325717fe9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/riak/.travis.yml @@ -0,0 +1,31 @@ +sudo: required + +language: php + +php: + - 5.6 + - 7.0 + - 7.1 + - 7.2 + - 7.3 + +env: + - SIMPLESAMLPHP_VERSION=1.17.* + +before_script: + - composer require "simplesamlphp/simplesamlphp:${SIMPLESAMLPHP_VERSION}" --no-update + - composer update --no-interaction + - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then composer require --dev vimeo/psalm:1.1.9; fi + +script: + - bin/check-syntax.sh + - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then php vendor/phpunit/phpunit/phpunit; else php vendor/phpunit/phpunit/phpunit --no-coverage; fi + - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then vendor/bin/psalm; fi + +after_success: + # Codecov, need to edit bash uploader for incorrect TRAVIS_PYTHON_VERSION environment variable matching, at least until codecov/codecov-bash#133 is resolved + - curl -s https://codecov.io/bash > .codecov + - sed -i -e 's/TRAVIS_.*_VERSION/^TRAVIS_.*_VERSION=/' .codecov + - chmod +x .codecov + - if [[ $TRAVIS_PHP_VERSION == "5.6" ]]; then ./.codecov -X gcov; fi +# - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then bash <(curl -s https://codecov.io/bash); fi diff --git a/vendor/simplesamlphp/simplesamlphp/modules/riak/LICENSE b/vendor/simplesamlphp/simplesamlphp/modules/riak/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..f288702d2fa16d3cdf0035b15a9fcbc552cd88e7 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/riak/LICENSE @@ -0,0 +1,674 @@ + GNU GENERAL PUBLIC LICENSE + Version 3, 29 June 2007 + + Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/> + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The GNU General Public License is a free, copyleft license for +software and other kinds of works. + + The licenses for most software and other practical works are designed +to take away your freedom to share and change the works. By contrast, +the GNU General Public License is intended to guarantee your freedom to +share and change all versions of a program--to make sure it remains free +software for all its users. We, the Free Software Foundation, use the +GNU General Public License for most of our software; it applies also to +any other work released this way by its authors. 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 +them 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 prevent others from denying you +these rights or asking you to surrender the rights. Therefore, you have +certain responsibilities if you distribute copies of the software, or if +you modify it: responsibilities to respect the freedom of others. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must pass on to the recipients the same +freedoms that you received. 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. + + Developers that use the GNU GPL protect your rights with two steps: +(1) assert copyright on the software, and (2) offer you this License +giving you legal permission to copy, distribute and/or modify it. + + For the developers' and authors' protection, the GPL clearly explains +that there is no warranty for this free software. For both users' and +authors' sake, the GPL requires that modified versions be marked as +changed, so that their problems will not be attributed erroneously to +authors of previous versions. + + Some devices are designed to deny users access to install or run +modified versions of the software inside them, although the manufacturer +can do so. This is fundamentally incompatible with the aim of +protecting users' freedom to change the software. The systematic +pattern of such abuse occurs in the area of products for individuals to +use, which is precisely where it is most unacceptable. Therefore, we +have designed this version of the GPL to prohibit the practice for those +products. If such problems arise substantially in other domains, we +stand ready to extend this provision to those domains in future versions +of the GPL, as needed to protect the freedom of users. + + Finally, every program is threatened constantly by software patents. +States should not allow patents to restrict development and use of +software on general-purpose computers, but in those that do, we wish to +avoid the special danger that patents applied to a free program could +make it effectively proprietary. To prevent this, the GPL assures that +patents cannot be used to render the program non-free. + + The precise terms and conditions for copying, distribution and +modification follow. + + TERMS AND CONDITIONS + + 0. Definitions. + + "This License" refers to version 3 of the GNU General Public License. + + "Copyright" also means copyright-like laws that apply to other kinds of +works, such as semiconductor masks. + + "The Program" refers to any copyrightable work licensed under this +License. Each licensee is addressed as "you". "Licensees" and +"recipients" may be individuals or organizations. + + To "modify" a work means to copy from or adapt all or part of the work +in a fashion requiring copyright permission, other than the making of an +exact copy. The resulting work is called a "modified version" of the +earlier work or a work "based on" the earlier work. + + A "covered work" means either the unmodified Program or a work based +on the Program. + + To "propagate" a work means to do anything with it that, without +permission, would make you directly or secondarily liable for +infringement under applicable copyright law, except executing it on a +computer or modifying a private copy. Propagation includes copying, +distribution (with or without modification), making available to the +public, and in some countries other activities as well. + + To "convey" a work means any kind of propagation that enables other +parties to make or receive copies. Mere interaction with a user through +a computer network, with no transfer of a copy, is not conveying. + + An interactive user interface displays "Appropriate Legal Notices" +to the extent that it includes a convenient and prominently visible +feature that (1) displays an appropriate copyright notice, and (2) +tells the user that there is no warranty for the work (except to the +extent that warranties are provided), that licensees may convey the +work under this License, and how to view a copy of this License. If +the interface presents a list of user commands or options, such as a +menu, a prominent item in the list meets this criterion. + + 1. Source Code. + + The "source code" for a work means the preferred form of the work +for making modifications to it. "Object code" means any non-source +form of a work. + + A "Standard Interface" means an interface that either is an official +standard defined by a recognized standards body, or, in the case of +interfaces specified for a particular programming language, one that +is widely used among developers working in that language. + + The "System Libraries" of an executable work include anything, other +than the work as a whole, that (a) is included in the normal form of +packaging a Major Component, but which is not part of that Major +Component, and (b) serves only to enable use of the work with that +Major Component, or to implement a Standard Interface for which an +implementation is available to the public in source code form. A +"Major Component", in this context, means a major essential component +(kernel, window system, and so on) of the specific operating system +(if any) on which the executable work runs, or a compiler used to +produce the work, or an object code interpreter used to run it. + + The "Corresponding Source" for a work in object code form means all +the source code needed to generate, install, and (for an executable +work) run the object code and to modify the work, including scripts to +control those activities. However, it does not include the work's +System Libraries, or general-purpose tools or generally available free +programs which are used unmodified in performing those activities but +which are not part of the work. For example, Corresponding Source +includes interface definition files associated with source files for +the work, and the source code for shared libraries and dynamically +linked subprograms that the work is specifically designed to require, +such as by intimate data communication or control flow between those +subprograms and other parts of the work. + + The Corresponding Source need not include anything that users +can regenerate automatically from other parts of the Corresponding +Source. + + The Corresponding Source for a work in source code form is that +same work. + + 2. Basic Permissions. + + All rights granted under this License are granted for the term of +copyright on the Program, and are irrevocable provided the stated +conditions are met. This License explicitly affirms your unlimited +permission to run the unmodified Program. The output from running a +covered work is covered by this License only if the output, given its +content, constitutes a covered work. This License acknowledges your +rights of fair use or other equivalent, as provided by copyright law. + + You may make, run and propagate covered works that you do not +convey, without conditions so long as your license otherwise remains +in force. You may convey covered works to others for the sole purpose +of having them make modifications exclusively for you, or provide you +with facilities for running those works, provided that you comply with +the terms of this License in conveying all material for which you do +not control copyright. Those thus making or running the covered works +for you must do so exclusively on your behalf, under your direction +and control, on terms that prohibit them from making any copies of +your copyrighted material outside their relationship with you. + + Conveying under any other circumstances is permitted solely under +the conditions stated below. Sublicensing is not allowed; section 10 +makes it unnecessary. + + 3. Protecting Users' Legal Rights From Anti-Circumvention Law. + + No covered work shall be deemed part of an effective technological +measure under any applicable law fulfilling obligations under article +11 of the WIPO copyright treaty adopted on 20 December 1996, or +similar laws prohibiting or restricting circumvention of such +measures. + + When you convey a covered work, you waive any legal power to forbid +circumvention of technological measures to the extent such circumvention +is effected by exercising rights under this License with respect to +the covered work, and you disclaim any intention to limit operation or +modification of the work as a means of enforcing, against the work's +users, your or third parties' legal rights to forbid circumvention of +technological measures. + + 4. Conveying Verbatim Copies. + + You may convey 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; +keep intact all notices stating that this License and any +non-permissive terms added in accord with section 7 apply to the code; +keep intact all notices of the absence of any warranty; and give all +recipients a copy of this License along with the Program. + + You may charge any price or no price for each copy that you convey, +and you may offer support or warranty protection for a fee. + + 5. Conveying Modified Source Versions. + + You may convey a work based on the Program, or the modifications to +produce it from the Program, in the form of source code under the +terms of section 4, provided that you also meet all of these conditions: + + a) The work must carry prominent notices stating that you modified + it, and giving a relevant date. + + b) The work must carry prominent notices stating that it is + released under this License and any conditions added under section + 7. This requirement modifies the requirement in section 4 to + "keep intact all notices". + + c) You must license the entire work, as a whole, under this + License to anyone who comes into possession of a copy. This + License will therefore apply, along with any applicable section 7 + additional terms, to the whole of the work, and all its parts, + regardless of how they are packaged. This License gives no + permission to license the work in any other way, but it does not + invalidate such permission if you have separately received it. + + d) If the work has interactive user interfaces, each must display + Appropriate Legal Notices; however, if the Program has interactive + interfaces that do not display Appropriate Legal Notices, your + work need not make them do so. + + A compilation of a covered work with other separate and independent +works, which are not by their nature extensions of the covered work, +and which are not combined with it such as to form a larger program, +in or on a volume of a storage or distribution medium, is called an +"aggregate" if the compilation and its resulting copyright are not +used to limit the access or legal rights of the compilation's users +beyond what the individual works permit. Inclusion of a covered work +in an aggregate does not cause this License to apply to the other +parts of the aggregate. + + 6. Conveying Non-Source Forms. + + You may convey a covered work in object code form under the terms +of sections 4 and 5, provided that you also convey the +machine-readable Corresponding Source under the terms of this License, +in one of these ways: + + a) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by the + Corresponding Source fixed on a durable physical medium + customarily used for software interchange. + + b) Convey the object code in, or embodied in, a physical product + (including a physical distribution medium), accompanied by a + written offer, valid for at least three years and valid for as + long as you offer spare parts or customer support for that product + model, to give anyone who possesses the object code either (1) a + copy of the Corresponding Source for all the software in the + product that is covered by this License, on a durable physical + medium customarily used for software interchange, for a price no + more than your reasonable cost of physically performing this + conveying of source, or (2) access to copy the + Corresponding Source from a network server at no charge. + + c) Convey individual copies of the object code with a copy of the + written offer to provide the Corresponding Source. This + alternative is allowed only occasionally and noncommercially, and + only if you received the object code with such an offer, in accord + with subsection 6b. + + d) Convey the object code by offering access from a designated + place (gratis or for a charge), and offer equivalent access to the + Corresponding Source in the same way through the same place at no + further charge. You need not require recipients to copy the + Corresponding Source along with the object code. If the place to + copy the object code is a network server, the Corresponding Source + may be on a different server (operated by you or a third party) + that supports equivalent copying facilities, provided you maintain + clear directions next to the object code saying where to find the + Corresponding Source. Regardless of what server hosts the + Corresponding Source, you remain obligated to ensure that it is + available for as long as needed to satisfy these requirements. + + e) Convey the object code using peer-to-peer transmission, provided + you inform other peers where the object code and Corresponding + Source of the work are being offered to the general public at no + charge under subsection 6d. + + A separable portion of the object code, whose source code is excluded +from the Corresponding Source as a System Library, need not be +included in conveying the object code work. + + A "User Product" is either (1) a "consumer product", which means any +tangible personal property which is normally used for personal, family, +or household purposes, or (2) anything designed or sold for incorporation +into a dwelling. In determining whether a product is a consumer product, +doubtful cases shall be resolved in favor of coverage. For a particular +product received by a particular user, "normally used" refers to a +typical or common use of that class of product, regardless of the status +of the particular user or of the way in which the particular user +actually uses, or expects or is expected to use, the product. A product +is a consumer product regardless of whether the product has substantial +commercial, industrial or non-consumer uses, unless such uses represent +the only significant mode of use of the product. + + "Installation Information" for a User Product means any methods, +procedures, authorization keys, or other information required to install +and execute modified versions of a covered work in that User Product from +a modified version of its Corresponding Source. The information must +suffice to ensure that the continued functioning of the modified object +code is in no case prevented or interfered with solely because +modification has been made. + + If you convey an object code work under this section in, or with, or +specifically for use in, a User Product, and the conveying occurs as +part of a transaction in which the right of possession and use of the +User Product is transferred to the recipient in perpetuity or for a +fixed term (regardless of how the transaction is characterized), the +Corresponding Source conveyed under this section must be accompanied +by the Installation Information. But this requirement does not apply +if neither you nor any third party retains the ability to install +modified object code on the User Product (for example, the work has +been installed in ROM). + + The requirement to provide Installation Information does not include a +requirement to continue to provide support service, warranty, or updates +for a work that has been modified or installed by the recipient, or for +the User Product in which it has been modified or installed. Access to a +network may be denied when the modification itself materially and +adversely affects the operation of the network or violates the rules and +protocols for communication across the network. + + Corresponding Source conveyed, and Installation Information provided, +in accord with this section must be in a format that is publicly +documented (and with an implementation available to the public in +source code form), and must require no special password or key for +unpacking, reading or copying. + + 7. Additional Terms. + + "Additional permissions" are terms that supplement the terms of this +License by making exceptions from one or more of its conditions. +Additional permissions that are applicable to the entire Program shall +be treated as though they were included in this License, to the extent +that they are valid under applicable law. If additional permissions +apply only to part of the Program, that part may be used separately +under those permissions, but the entire Program remains governed by +this License without regard to the additional permissions. + + When you convey a copy of a covered work, you may at your option +remove any additional permissions from that copy, or from any part of +it. (Additional permissions may be written to require their own +removal in certain cases when you modify the work.) You may place +additional permissions on material, added by you to a covered work, +for which you have or can give appropriate copyright permission. + + Notwithstanding any other provision of this License, for material you +add to a covered work, you may (if authorized by the copyright holders of +that material) supplement the terms of this License with terms: + + a) Disclaiming warranty or limiting liability differently from the + terms of sections 15 and 16 of this License; or + + b) Requiring preservation of specified reasonable legal notices or + author attributions in that material or in the Appropriate Legal + Notices displayed by works containing it; or + + c) Prohibiting misrepresentation of the origin of that material, or + requiring that modified versions of such material be marked in + reasonable ways as different from the original version; or + + d) Limiting the use for publicity purposes of names of licensors or + authors of the material; or + + e) Declining to grant rights under trademark law for use of some + trade names, trademarks, or service marks; or + + f) Requiring indemnification of licensors and authors of that + material by anyone who conveys the material (or modified versions of + it) with contractual assumptions of liability to the recipient, for + any liability that these contractual assumptions directly impose on + those licensors and authors. + + All other non-permissive additional terms are considered "further +restrictions" within the meaning of section 10. If the Program as you +received it, or any part of it, contains a notice stating that it is +governed by this License along with a term that is a further +restriction, you may remove that term. If a license document contains +a further restriction but permits relicensing or conveying under this +License, you may add to a covered work material governed by the terms +of that license document, provided that the further restriction does +not survive such relicensing or conveying. + + If you add terms to a covered work in accord with this section, you +must place, in the relevant source files, a statement of the +additional terms that apply to those files, or a notice indicating +where to find the applicable terms. + + Additional terms, permissive or non-permissive, may be stated in the +form of a separately written license, or stated as exceptions; +the above requirements apply either way. + + 8. Termination. + + You may not propagate or modify a covered work except as expressly +provided under this License. Any attempt otherwise to propagate or +modify it is void, and will automatically terminate your rights under +this License (including any patent licenses granted under the third +paragraph of section 11). + + However, if you cease all violation of this License, then your +license from a particular copyright holder is reinstated (a) +provisionally, unless and until the copyright holder explicitly and +finally terminates your license, and (b) permanently, if the copyright +holder fails to notify you of the violation by some reasonable means +prior to 60 days after the cessation. + + Moreover, your license from a particular copyright holder is +reinstated permanently if the copyright holder notifies you of the +violation by some reasonable means, this is the first time you have +received notice of violation of this License (for any work) from that +copyright holder, and you cure the violation prior to 30 days after +your receipt of the notice. + + Termination of your rights under this section does not terminate the +licenses of parties who have received copies or rights from you under +this License. If your rights have been terminated and not permanently +reinstated, you do not qualify to receive new licenses for the same +material under section 10. + + 9. Acceptance Not Required for Having Copies. + + You are not required to accept this License in order to receive or +run a copy of the Program. Ancillary propagation of a covered work +occurring solely as a consequence of using peer-to-peer transmission +to receive a copy likewise does not require acceptance. However, +nothing other than this License grants you permission to propagate or +modify any covered work. These actions infringe copyright if you do +not accept this License. Therefore, by modifying or propagating a +covered work, you indicate your acceptance of this License to do so. + + 10. Automatic Licensing of Downstream Recipients. + + Each time you convey a covered work, the recipient automatically +receives a license from the original licensors, to run, modify and +propagate that work, subject to this License. You are not responsible +for enforcing compliance by third parties with this License. + + An "entity transaction" is a transaction transferring control of an +organization, or substantially all assets of one, or subdividing an +organization, or merging organizations. If propagation of a covered +work results from an entity transaction, each party to that +transaction who receives a copy of the work also receives whatever +licenses to the work the party's predecessor in interest had or could +give under the previous paragraph, plus a right to possession of the +Corresponding Source of the work from the predecessor in interest, if +the predecessor has it or can get it with reasonable efforts. + + You may not impose any further restrictions on the exercise of the +rights granted or affirmed under this License. For example, you may +not impose a license fee, royalty, or other charge for exercise of +rights granted under this License, and you may not initiate litigation +(including a cross-claim or counterclaim in a lawsuit) alleging that +any patent claim is infringed by making, using, selling, offering for +sale, or importing the Program or any portion of it. + + 11. Patents. + + A "contributor" is a copyright holder who authorizes use under this +License of the Program or a work on which the Program is based. The +work thus licensed is called the contributor's "contributor version". + + A contributor's "essential patent claims" are all patent claims +owned or controlled by the contributor, whether already acquired or +hereafter acquired, that would be infringed by some manner, permitted +by this License, of making, using, or selling its contributor version, +but do not include claims that would be infringed only as a +consequence of further modification of the contributor version. For +purposes of this definition, "control" includes the right to grant +patent sublicenses in a manner consistent with the requirements of +this License. + + Each contributor grants you a non-exclusive, worldwide, royalty-free +patent license under the contributor's essential patent claims, to +make, use, sell, offer for sale, import and otherwise run, modify and +propagate the contents of its contributor version. + + In the following three paragraphs, a "patent license" is any express +agreement or commitment, however denominated, not to enforce a patent +(such as an express permission to practice a patent or covenant not to +sue for patent infringement). To "grant" such a patent license to a +party means to make such an agreement or commitment not to enforce a +patent against the party. + + If you convey a covered work, knowingly relying on a patent license, +and the Corresponding Source of the work is not available for anyone +to copy, free of charge and under the terms of this License, through a +publicly available network server or other readily accessible means, +then you must either (1) cause the Corresponding Source to be so +available, or (2) arrange to deprive yourself of the benefit of the +patent license for this particular work, or (3) arrange, in a manner +consistent with the requirements of this License, to extend the patent +license to downstream recipients. "Knowingly relying" means you have +actual knowledge that, but for the patent license, your conveying the +covered work in a country, or your recipient's use of the covered work +in a country, would infringe one or more identifiable patents in that +country that you have reason to believe are valid. + + If, pursuant to or in connection with a single transaction or +arrangement, you convey, or propagate by procuring conveyance of, a +covered work, and grant a patent license to some of the parties +receiving the covered work authorizing them to use, propagate, modify +or convey a specific copy of the covered work, then the patent license +you grant is automatically extended to all recipients of the covered +work and works based on it. + + A patent license is "discriminatory" if it does not include within +the scope of its coverage, prohibits the exercise of, or is +conditioned on the non-exercise of one or more of the rights that are +specifically granted under this License. You may not convey a covered +work if you are a party to an arrangement with a third party that is +in the business of distributing software, under which you make payment +to the third party based on the extent of your activity of conveying +the work, and under which the third party grants, to any of the +parties who would receive the covered work from you, a discriminatory +patent license (a) in connection with copies of the covered work +conveyed by you (or copies made from those copies), or (b) primarily +for and in connection with specific products or compilations that +contain the covered work, unless you entered into that arrangement, +or that patent license was granted, prior to 28 March 2007. + + Nothing in this License shall be construed as excluding or limiting +any implied license or other defenses to infringement that may +otherwise be available to you under applicable patent law. + + 12. No Surrender of Others' Freedom. + + If 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 convey a +covered work so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you may +not convey it at all. For example, if you agree to terms that obligate you +to collect a royalty for further conveying from those to whom you convey +the Program, the only way you could satisfy both those terms and this +License would be to refrain entirely from conveying the Program. + + 13. Use with the GNU Affero General Public License. + + Notwithstanding any other provision of this License, you have +permission to link or combine any covered work with a work licensed +under version 3 of the GNU Affero General Public License into a single +combined work, and to convey the resulting work. The terms of this +License will continue to apply to the part which is the covered work, +but the special requirements of the GNU Affero General Public License, +section 13, concerning interaction through a network will apply to the +combination as such. + + 14. Revised Versions of this License. + + The Free Software Foundation may publish revised and/or new versions of +the GNU 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 that a certain numbered version of the GNU General +Public License "or any later version" applies to it, you have the +option of following the terms and conditions either of that numbered +version or of any later version published by the Free Software +Foundation. If the Program does not specify a version number of the +GNU General Public License, you may choose any version ever published +by the Free Software Foundation. + + If the Program specifies that a proxy can decide which future +versions of the GNU General Public License can be used, that proxy's +public statement of acceptance of a version permanently authorizes you +to choose that version for the Program. + + Later license versions may give you additional or different +permissions. However, no additional obligations are imposed on any +author or copyright holder as a result of your choosing to follow a +later version. + + 15. Disclaimer of Warranty. + + 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. + + 16. Limitation of Liability. + + IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS +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. + + 17. Interpretation of Sections 15 and 16. + + If the disclaimer of warranty and limitation of liability provided +above cannot be given local legal effect according to their terms, +reviewing courts shall apply local law that most closely approximates +an absolute waiver of all civil liability in connection with the +Program, unless a warranty or assumption of liability accompanies a +copy of the Program in return for a fee. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +state the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see <https://www.gnu.org/licenses/>. + +Also add information on how to contact you by electronic and paper mail. + + If the program does terminal interaction, make it output a short +notice like this when it starts in an interactive mode: + + <program> Copyright (C) <year> <name of author> + This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, your program's commands +might be different; for a GUI interface, you would use an "about box". + + You should also get your employer (if you work as a programmer) or school, +if any, to sign a "copyright disclaimer" for the program, if necessary. +For more information on this, and how to apply and follow the GNU GPL, see +<https://www.gnu.org/licenses/>. + + The GNU General Public License does not permit incorporating your program +into proprietary programs. If your program is a subroutine library, you +may consider it more useful to permit linking proprietary applications with +the library. If this is what you want to do, use the GNU Lesser General +Public License instead of this License. But first, please read +<https://www.gnu.org/licenses/why-not-lgpl.html>. diff --git a/vendor/simplesamlphp/simplesamlphp/modules/riak/README.md b/vendor/simplesamlphp/simplesamlphp/modules/riak/README.md new file mode 100644 index 0000000000000000000000000000000000000000..08083ca31a2eab5330c6f772fa5b9aadd5555c40 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/riak/README.md @@ -0,0 +1,2 @@ +# simplesamlphp-module-riak +This module implements the Riak session store diff --git a/vendor/simplesamlphp/simplesamlphp/modules/riak/bin/check-syntax.sh b/vendor/simplesamlphp/simplesamlphp/modules/riak/bin/check-syntax.sh new file mode 100755 index 0000000000000000000000000000000000000000..6938306b365213de303e7b9cab6cedcad45c8021 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/riak/bin/check-syntax.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +PHP='/usr/bin/env php' +RETURN=0 + +# check PHP files +for FILE in `find config-templates hooks lib tests -name "*.php"`; do + $PHP -l $FILE > /dev/null 2>&1 + if [ $? -ne 0 ]; then + echo "Syntax check failed for ${FILE}" + RETURN=`expr ${RETURN} + 1` + fi +done + +exit $RETURN diff --git a/vendor/simplesamlphp/simplesamlphp/modules/riak/composer.json b/vendor/simplesamlphp/simplesamlphp/modules/riak/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..10fc58404c345a80f4a49f68dcf746e1811a3db9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/riak/composer.json @@ -0,0 +1,42 @@ +{ + "name": "simplesamlphp/simplesamlphp-module-riak", + "description": "A module that is able to store key/value pairs in a Riak store", + "type": "simplesamlphp-module", + "keywords": ["simplesamlphp", "riak"], + "license": "LGPL-3.0-or-later", + "authors": [ + { + "name": "Tim van Dijen", + "email": "tvdijen@gmail.com" + } + ], + "config": { + "preferred-install": { + "simplesamlphp/simplesamlphp": "source", + "*": "dist" + } + }, + "autoload": { + "psr-4": { + "SimpleSAML\\Module\\riak\\": "lib/" + } + }, + "autoload-dev": { + "psr-4": { + "SimpleSAML\\Test\\Utils\\": "vendor/simplesamlphp/simplesamlphp/tests/Utils" + } + }, + "require": { + "php": ">=5.6", + "simplesamlphp/composer-module-installer": "~1.1", + "phpfastcache/riak-client": "^3.4" + }, + "require-dev": { + "simplesamlphp/simplesamlphp": "^1.17", + "phpunit/phpunit": "~5.7" + }, + "support": { + "issues": "https://github.com/tvdijen/simplesamlphp-module-riak/issues", + "source": "https://github.com/tvdijen/simplesamlphp-module-riak" + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/riak/config-templates/module_riak.php b/vendor/simplesamlphp/simplesamlphp/modules/riak/config-templates/module_riak.php new file mode 100644 index 0000000000000000000000000000000000000000..355711794fa593b0dbcb48bd8c2ce2e491487f44 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/riak/config-templates/module_riak.php @@ -0,0 +1,14 @@ +<?php + +/** + * The configuration of the riak Store module + * + */ + +$config = [ + 'host' => 'localhost', + 'port' => 8098, + + // The name of the store + 'bucket' => 'SimpleSAMLphp', +]; diff --git a/vendor/simplesamlphp/simplesamlphp/modules/riak/default-disable b/vendor/simplesamlphp/simplesamlphp/modules/riak/default-disable new file mode 100644 index 0000000000000000000000000000000000000000..fa0bd82e2df7bd79d57593d35bc53c1f9d3ef71f --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/riak/default-disable @@ -0,0 +1,3 @@ +This file indicates that the default state of this module +is disabled. To enable, create a file named enable in the +same directory as this file. diff --git a/vendor/simplesamlphp/simplesamlphp/modules/riak/docs/simplesamlphp-riak.md b/vendor/simplesamlphp/simplesamlphp/modules/riak/docs/simplesamlphp-riak.md new file mode 100644 index 0000000000000000000000000000000000000000..1598d8a4e47141397d0129f9993536b84cb8be55 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/riak/docs/simplesamlphp-riak.md @@ -0,0 +1,113 @@ +Riak Store module +================= + +<!-- + This file is written in Markdown syntax. + For more information about how to use the Markdown syntax, read here: + http://daringfireball.net/projects/markdown/syntax +--> + + +<!-- {{TOC}} --> + +Introduction +------------ + +The riak module implements a Store that can be used as a backend +for SimpleSAMLphp session data like the phpsession, sql, or memcache +backends. + +Preparations +------------ + +The obvious first step for using Riak as a backend is to install +and configure a Riak cluster for SimpleSAMLphp to use. Please refer +to the Riak documentation for this. + +This module requires the use of a Riak backend that supports secondary +indexes. Refer to the Riak documentation on how to enable an +appropriate backend for use by this module. Currently the only +storage backend that supports secondary indexes is leveldb. + +Finally, you need to config SimpleSAMLphp to use the riak Store by +enabling the following modules: + + 1. cron + 2. riak + +The cron module allows you to do tasks regularly by setting up a +cronjob that calls hooks in SimpleSAMLphp. This is required by the +riak module to remove expired entries in the store. + +Enabling the riak module allows it to be loaded and used as a storage +backend. + +You also need to copy the `config-templates` files from the cron +module above into the global `config/` directory. + + $ cd /var/simplesamlphp + $ touch modules/cron/enable + $ cp modules/cron/config-templates/*.php config/ + $ touch modules/riak/enable + $ cp modules/riak/config-templates/*.php config/ + + +Configuring the cron module +--------------------------- + +At `/var/simplesamlphp/config` + + $ vi module_cron.php + +edit: + + $config = array ( + 'key' => 'secret', + 'allowed_tags' => array('daily', 'hourly', 'frequent'), + 'debug_message' => TRUE, + 'sendemail' => TRUE, + ); + +Then: With your browser go to => https://simplesamlphp_machine/simplesaml/module.php/cron/croninfo.php + +And copy the cron's sugestion: + + ------------------------------------------------------------------------------------------------------------------- + Cron is a way to run things regularly on unix systems. + + Here is a suggestion for a crontab file: + + # Run cron [daily] + 02 0 * * * curl --silent "https://simplesamlphp_machine/simplesaml/module.php/cron/cron.php?key=secret&tag=daily" > /dev/null 2>&1 + # Run cron [hourly] + 01 * * * * curl --silent "https://simplesamlphp_machine/simplesaml/module.php/cron/cron.php?key=secret&tag=hourly" > /dev/null 2>&1 + # Run cron [frequent] + XXXXXXXXXX curl --silent "https://simplesamlphp_machine/simplesaml/module.php/cron/cron.php?key=secret&tag=frequent" > /dev/null 2>&1 + Click here to run the cron jobs: + + Run cron [daily] + Run cron [hourly] + Run cron [frequent] + ------------------------------------------------------------------------------------------------------------------- + +Add to CRON with + + # crontab -e + +Configuring the riak module +--------------------------- + +The riak module uses the following configuration options specified +in `config/module_riak.php`. The defaults are listed: + + $config = [ + 'host' => 'localhost', + 'port' => 8098, + 'bucket' => 'SimpleSAMLphp', + ]; + +Finally, the module can be specified as the Store in `config/config.php` +with the following setting: + + 'store.type' => 'riak:Riak', + diff --git a/vendor/simplesamlphp/simplesamlphp/modules/riak/hooks/hook_cron.php b/vendor/simplesamlphp/simplesamlphp/modules/riak/hooks/hook_cron.php new file mode 100644 index 0000000000000000000000000000000000000000..63d7099808d0975ee5a8109cbbf0fa31a279987e --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/riak/hooks/hook_cron.php @@ -0,0 +1,61 @@ +<?php + +/* + * Copyright (c) 2012 The University of Queensland + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +/* + * Written by David Gwynne <dlg@uq.edu.au> as part of the IT + * Infrastructure Group in the Faculty of Engineering, Architecture + * and Information Technology. + */ + +/** + * Hook to run a cron job. + * + * @param array &$croninfo Output + * @return void + */ +function riak_hook_cron(&$croninfo) +{ + assert(is_array($croninfo)); + assert(array_key_exists('summary', $croninfo)); + assert(array_key_exists('tag', $croninfo)); + + if ($croninfo['tag'] !== 'hourly') { + return; + } + + try { + $store = new \SimpleSAML\Module\riak\Store\Riak(); + $result = $store->getExpired(); + + if ($result === null) { + $result = []; + } else { + foreach ($result as $key) { + $store->delete('session', $key); + } + } + + \SimpleSAML\Logger::info( + sprintf("deleted %s riak key%s", sizeof($result), sizeof($result) == 1 ? '' : 's') + ); + } catch (\Exception $e) { + $message = 'riak threw exception: ' . $e->getMessage(); + \SimpleSAML\Logger::warning($message); + $croninfo['summary'][] = $message; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/riak/lib/Store/Riak.php b/vendor/simplesamlphp/simplesamlphp/modules/riak/lib/Store/Riak.php new file mode 100644 index 0000000000000000000000000000000000000000..94aa1c63fcec8765fcb0b6674ab9c8aaf9c1d060 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/riak/lib/Store/Riak.php @@ -0,0 +1,175 @@ +<?php + +/* + * Copyright (c) 2012 The University of Queensland + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * Written by David Gwynne <dlg@uq.edu.au> as part of the IT + * Infrastructure Group in the Faculty of Engineering, Architecture + * and Information Technology. + * + * @package SimpleSAMLphp + * Rewriten by Tim van Dijen for SimpleSAMLphp + */ + +namespace SimpleSAML\Module\riak\Store; + +use Basho\Riak\Bucket; +use Basho\Riak\Command\Builder\DeleteObject; +use Basho\Riak\Command\Builder\FetchObject; +use Basho\Riak\Command\Builder\StoreObject; +use Basho\Riak\Command\Builder\QueryIndex; +use Basho\Riak\Location; +use Basho\Riak\Node; +use Basho\Riak\DataObject; +use Basho\Riak as RiakClient; +use SimpleSAML\Configuration; +use SimpleSAML\Error\CriticalConfigurationError; +use Webmozart\Assert\Assert; + +class Riak extends \SimpleSAML\Store +{ + /** @var \Basho\Riak */ + protected $client; + + /** @var string */ + protected $bucket_name; + + /** @var \Basho\Riak\Bucket */ + protected $bucket; + + /** @var \Basho\Riak\Location|null */ + protected $location = null; + + + public function __construct() + { + $config = Configuration::getConfig('module_riak.php'); + + $host = $config->getString('host', 'localhost'); + $port = $config->getInteger('port', 8098); + + $node = (new Node\Builder()) + ->atHost($host) + ->onPort($port) + ->build(); + + $this->client = new RiakClient([$node]); + $this->bucket_name = $config->getString('bucket', 'simpleSAMLphp'); + + $this->bucket = new Bucket($this->bucket_name); + } + + + /** + * Retrieve a value from the datastore. + * + * @param string $type The datatype. + * @param string $key The key. + * @return mixed|null The value. + */ + public function get($type, $key) + { + assert(is_string($type)); + assert(is_string($key)); + + $key = 'key_' . $key; + $this->location = new Location($key, $this->bucket); + + $response = (new FetchObject($this->client)) + ->atLocation($this->location) + ->build() + ->execute(); + + if ($response->getObject() === null) { + return null; + } + + $data = $response->getObject()->getData(); + $data_decoded = unserialize(json_decode($data, true)); + + return $data_decoded[$key]; + } + + + /** + * Save a value to the datastore. + * + * @param string $type The datatype. + * @param string $key The key. + * @param mixed $value The value. + * @param int|null $expire The expiration time (unix timestamp), or NULL if it never expires. + * @return void + */ + public function set($type, $key, $value, $expire = null) + { + assert(is_string($type)); + assert(is_string($key)); + assert(is_null($expire) || is_int($expire)); + assert($expire > 2592000); + + $key = 'key_' . $key; + $this->location = new Location($key, $this->bucket); + + $data = serialize([$key => $value]); + if (is_null($expire)) { + $object = new DataObject(json_encode($data), ['Content-type' => 'application/json']); + } else { + $object = (new DataObject(json_encode($data), ['Content-type' => 'application/json'])) + ->addValueToIndex('expire_int', time() + $expire); + } + + $storecmd = (new StoreObject($this->client)) + ->withObject($object) + ->atLocation($this->location) + ->build(); + $storecmd->execute(); + } + + + /** + * @return array|null + */ + public function getExpired() + { + $results = (new QueryIndex($this->client)) + ->inBucket($this->bucket) + ->withIndexName('expire_int') + ->withRangeValue(0, time()) + ->build() + ->execute() + ->getResults(); + + return $results; + } + + + /** + * Delete a value from the datastore. + * + * @param string $type The datatype. + * @param string $key The key. + * @return void + */ + public function delete($type, $key) + { + assert(is_string($type)); + assert(is_string($key)); + + $key = 'key_' . $key; + $this->location = new Location($key, $this->bucket); + + (new DeleteObject($this->client))->atLocation($this->location)->build()->execute(); + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/riak/phpunit.xml b/vendor/simplesamlphp/simplesamlphp/modules/riak/phpunit.xml new file mode 100644 index 0000000000000000000000000000000000000000..c0985fdd804b18d8d9179ecd956d63582c189e95 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/riak/phpunit.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" ?> +<phpunit bootstrap="tests/bootstrap.php"> + <testsuites> + <testsuite name="The project's test suite"> + <directory>tests/</directory> + </testsuite> + </testsuites> + <filter> + <whitelist processUncoveredFilesFromWhitelist="true"> + <directory suffix=".php">./lib</directory> + </whitelist> + </filter> + <logging> + <log type="coverage-text" target="php://stdout" showUncoveredFiles="true" /> + <log type="coverage-html" target="build/coverage" title="PHP Coveralls" charset="UTF-8" yui="true" highlight="true" lowUpperBound="35" highLowerBound="70" /> + <log type="coverage-clover" target="build/logs/clover.xml" /> + </logging> +</phpunit> + diff --git a/vendor/simplesamlphp/simplesamlphp/modules/riak/psalm.xml b/vendor/simplesamlphp/simplesamlphp/modules/riak/psalm.xml new file mode 100644 index 0000000000000000000000000000000000000000..84f09c7494aebfdc7b331406fe0fab93bac1f06e --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/riak/psalm.xml @@ -0,0 +1,32 @@ +<?xml version="1.0"?> +<psalm + name="SimpleSAMLphp Riak" + useDocblockTypes="true" + totallyTyped="false" +> + <projectFiles> + <directory name="config-templates" /> + <directory name="lib" /> + <directory name="hooks" /> + </projectFiles> + + <issueHandlers> + <LessSpecificReturnType errorLevel="info" /> + + <!-- level 3 issues - slightly lazy code writing, but probably low false-negatives --> + <DeprecatedMethod 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" /> + <UnusedClass errorLevel="info" /> + <PossiblyUnusedMethod errorLevel="info" /> + </issueHandlers> +</psalm> diff --git a/vendor/simplesamlphp/simplesamlphp/modules/riak/tests/bootstrap.php b/vendor/simplesamlphp/simplesamlphp/modules/riak/tests/bootstrap.php new file mode 100644 index 0000000000000000000000000000000000000000..2e7ccd2f95ed133a57511d8289e2130326aa889b --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/riak/tests/bootstrap.php @@ -0,0 +1,11 @@ +<?php + +$projectRoot = dirname(__DIR__); +require_once($projectRoot . '/vendor/autoload.php'); + +// Symlink module into ssp vendor lib so that templates and urls can resolve correctly +$linkPath = $projectRoot . '/vendor/simplesamlphp/simplesamlphp/modules/riak'; +if (file_exists($linkPath) === false) { + echo "Linking '$linkPath' to '$projectRoot'\n"; + symlink($projectRoot, $linkPath); +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/.php_cs.dist b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/.php_cs.dist new file mode 100644 index 0000000000000000000000000000000000000000..084410f1da100a54a5061274f899839a5b3a91e1 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/.php_cs.dist @@ -0,0 +1,18 @@ +<?php +$finder = PhpCsFixer\Finder::create() + ->in([ + __DIR__ . '/config-templates', + __DIR__ . '/hooks', + __DIR__ . '/templates', + __DIR__ . '/tests', + __DIR__ . '/www', + ]) +; +return PhpCsFixer\Config::create() + ->setRules([ + '@PSR2' => true, + '@PSR4' => true, + '@PSR5' => true, + ]) + ->setFinder($finder) +; diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/.travis.yml b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..3c250287a743959883e40e541e22f26fb1dd8635 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/.travis.yml @@ -0,0 +1,35 @@ +sudo: required + +language: php + +php: + - 5.6 + - 7.0 + - 7.1 + - 7.2 + - 7.3 + +env: + - SIMPLESAMLPHP_VERSION=1.17.* + +matrix: + allow_failures: + - php: 7.3 + +before_script: + - composer require "simplesamlphp/simplesamlphp:${SIMPLESAMLPHP_VERSION}" --no-update + - composer update --no-interaction + - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then composer require --dev vimeo/psalm:1.1.9; fi + +script: + - bin/check-syntax.sh + - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then php vendor/phpunit/phpunit/phpunit; else php vendor/phpunit/phpunit/phpunit --no-coverage; fi + - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then vendor/bin/psalm; fi + +after_success: + # Codecov, need to edit bash uploader for incorrect TRAVIS_PYTHON_VERSION environment variable matching, at least until codecov/codecov-bash#133 is resolved + - curl -s https://codecov.io/bash > .codecov + - sed -i -e 's/TRAVIS_.*_VERSION/^TRAVIS_.*_VERSION=/' .codecov + - chmod +x .codecov + - if [[ $TRAVIS_PHP_VERSION == "5.6" ]]; then ./.codecov -X gcov; fi +# - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then bash <(curl -s https://codecov.io/bash); fi diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/LICENSE b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..a345e48d049f9c6756e9364e908b3f26e36c9df1 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/LICENSE @@ -0,0 +1,459 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 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. + +[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 + \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/bin/check-syntax.sh b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/bin/check-syntax.sh new file mode 100755 index 0000000000000000000000000000000000000000..75a810c21842c5c381392a13daa1d742adadd44c --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/bin/check-syntax.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +PHP='/usr/bin/env php' +RETURN=0 + +# check PHP files +for FILE in `find config-templates hooks templates tests www -name "*.php"`; do + $PHP -l $FILE > /dev/null 2>&1 + if [ $? -ne 0 ]; then + echo "Syntax check failed for ${FILE}" + RETURN=`expr ${RETURN} + 1` + fi +done + +exit $RETURN diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/codecov.yml b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/codecov.yml new file mode 100644 index 0000000000000000000000000000000000000000..f7f39e1e93d0ca23383d5ed120442f62f5f15ac9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/codecov.yml @@ -0,0 +1,11 @@ +coverage: + status: + project: yes + +comment: + layout: "diff" + behavior: once + require_changes: true + require_base: no + require_head: yes + branches: null diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/composer.json b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..20073b1e75dcddaa275ba2be50a5b2e4ad551ef1 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/composer.json @@ -0,0 +1,42 @@ +{ + "name": "simplesamlphp/simplesamlphp-module-sanitycheck", + "description": "Perform sanity checks on configuration", + "type": "simplesamlphp-module", + "keywords": ["simplesamlphp", "sanitycheck"], + "license": "LGPL-2.1-or-later", + "authors": [ + { + "name": "Andreas Åkre Solberg", + "email": "andreas.solberg@uninett.no" + } + ], + "config": { + "preferred-install": { + "simplesamlphp/simplesamlphp": "source", + "*": "dist" + } + }, + "autoload": { + "psr-4": { + "SimpleSAML\\Module\\sanitycheck\\": "lib/" + } + }, + "autoload-dev": { + "psr-4": { + "SimpleSAML\\Test\\Utils\\": "vendor/simplesamlphp/simplesamlphp/tests/Utils" + } + }, + "require": { + "php": ">=5.6", + "simplesamlphp/composer-module-installer": "~1.1", + "webmozart/assert": "~1.4" + }, + "require-dev": { + "simplesamlphp/simplesamlphp": "^1.17", + "phpunit/phpunit": "~5.7" + }, + "support": { + "issues": "https://github.com/tvdijen/simplesamlphp-module-sanitycheck/issues", + "source": "https://github.com/tvdijen/simplesamlphp-module-sanitycheck" + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/config-templates/config-sanitycheck.php b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/config-templates/config-sanitycheck.php new file mode 100644 index 0000000000000000000000000000000000000000..d9b45bb8af9fb724067659284eb3a0d67116d642 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/config-templates/config-sanitycheck.php @@ -0,0 +1,14 @@ +<?php +/* + * The configuration of SimpleSAMLphp sanitycheck package + */ + +$config = [ + /* + * Do you want to generate statistics using the cron module? If so, specify which cron tag to use. + * Examples: daily, weekly + * To not run statistics in cron, set value to + * 'cron_tag' => null, + */ + 'cron_tag' => 'hourly', +]; diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/default-enable b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/default-enable new file mode 100644 index 0000000000000000000000000000000000000000..25615cb47c350d23033eb9801627ed8330bcc3e9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/default-enable @@ -0,0 +1,3 @@ +This file indicates that the default state of this module +is enabled. To disable, create a file named disable in the +same directory as this file. diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/dictionaries/strings.definition.json b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/dictionaries/strings.definition.json new file mode 100644 index 0000000000000000000000000000000000000000..38aa732b32daec72c0ebecc77b37441802b93186 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/dictionaries/strings.definition.json @@ -0,0 +1,5 @@ +{ + "link_sanitycheck": { + "en": "Sanity check of your SimpleSAMLphp setup" + } +} \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/dictionaries/strings.translation.json b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/dictionaries/strings.translation.json new file mode 100644 index 0000000000000000000000000000000000000000..802fe912c7271d1099e12cbb05fb30dbc4f8430f --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/dictionaries/strings.translation.json @@ -0,0 +1,8 @@ +{ + "link_sanitycheck": { + "es": "Comprobaciones básicas de la instalación", + "no": "Sjekk din installasjon", + "nn": "Sjekk din installasjon", + "ca": "Comprovació de la validesa de la vostra configuració de SimpleSAMLphp" + } +} \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/hooks/hook_configpage.php b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/hooks/hook_configpage.php new file mode 100644 index 0000000000000000000000000000000000000000..68856b9305f72040d8c14a372ee18d1fb908a074 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/hooks/hook_configpage.php @@ -0,0 +1,16 @@ +<?php + +/** + * Hook to add the sanitycheck link to the config page. + * + * @param \SimpleSAML\XHTML\Template $template The template that we should alter in this hook. + * @return void + */ +function sanitycheck_hook_configpage(\SimpleSAML\XHTML\Template &$template) +{ + $template->data['links']['sanitycheck'] = [ + 'href' => SimpleSAML\Module::getModuleURL('sanitycheck/index.php'), + 'text' => \SimpleSAML\Locale\Translate::noop('Sanity check of your SimpleSAMLphp setup'), + ]; + $template->getLocalization()->addModuleDomain('sanitycheck'); +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/hooks/hook_cron.php b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/hooks/hook_cron.php new file mode 100644 index 0000000000000000000000000000000000000000..0ab1a6604666aaa381e6334644c1fbd40954377d --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/hooks/hook_cron.php @@ -0,0 +1,42 @@ +<?php + +/** + * Hook to run a cron job. + * + * @param array &$croninfo Output + * @return void + */ +function sanitycheck_hook_cron(&$croninfo) +{ + assert(is_array($croninfo)); + assert(array_key_exists('summary', $croninfo)); + assert(array_key_exists('tag', $croninfo)); + + \SimpleSAML\Logger::info('cron [sanitycheck]: Running cron in cron tag ['.$croninfo['tag'].'] '); + + try { + $sconfig = \SimpleSAML\Configuration::getOptionalConfig('config-sanitycheck.php'); + + $cronTag = $sconfig->getString('cron_tag', null); + if ($cronTag === null || $cronTag !== $croninfo['tag']) { + return; + } + + $info = []; + $errors = []; + $hookinfo = [ + 'info' => &$info, + 'errors' => &$errors, + ]; + + SimpleSAML\Module::callHooks('sanitycheck', $hookinfo); + + if (count($errors) > 0) { + foreach ($errors as $err) { + $croninfo['summary'][] = 'Sanitycheck error: '.$err; + } + } + } catch (\Exception $e) { + $croninfo['summary'][] = 'Error executing sanity check: '.$e->getMessage(); + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/hooks/hook_frontpage.php b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/hooks/hook_frontpage.php new file mode 100644 index 0000000000000000000000000000000000000000..e1b1a126d9c94b0df8816ac3f87d11fe6b03e268 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/hooks/hook_frontpage.php @@ -0,0 +1,19 @@ +<?php + +/** + * Hook to add the modinfo module to the frontpage. + * + * @param array &$links The links on the frontpage, split into sections. + * @return void + */ +function sanitycheck_hook_frontpage(&$links) +{ + assert(is_array($links)); + assert(array_key_exists('links', $links)); + + $links['config']['sanitycheck'] = [ + 'href' => SimpleSAML\Module::getModuleURL('sanitycheck/index.php'), + 'text' => '{sanitycheck:strings:link_sanitycheck}', + ]; +} + diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/hooks/hook_moduleinfo.php b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/hooks/hook_moduleinfo.php new file mode 100644 index 0000000000000000000000000000000000000000..d0eb684e1f3ab7ba9455a77dbae25a0a4a1a76ab --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/hooks/hook_moduleinfo.php @@ -0,0 +1,21 @@ +<?php + +/** + * This hook lets the module describe itself. + * + * @param array &$moduleinfo The links on the frontpage, split into sections. + * @return void + */ +function sanitycheck_hook_moduleinfo(&$moduleinfo) +{ + assert(is_array($moduleinfo)); + assert(array_key_exists('info', $moduleinfo)); + + $moduleinfo['info']['sanitycheck'] = [ + 'name' => ['en' => 'Sanity check'], + 'description' => ['en' => 'This module adds functionality for other modules to provide sanity checks.'], + + 'dependencies' => ['core'], + 'uses' => ['cron'], + ]; +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/hooks/hook_sanitycheck.php b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/hooks/hook_sanitycheck.php new file mode 100644 index 0000000000000000000000000000000000000000..6288c1be69767b617bec3e5ee13dd9cbf6bade7f --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/hooks/hook_sanitycheck.php @@ -0,0 +1,16 @@ +<?php + +/** + * Hook to add the modinfo module to the frontpage. + * + * @param array &$hookinfo hookinfo + * @return void + */ +function sanitycheck_hook_sanitycheck(&$hookinfo) +{ + assert(is_array($hookinfo)); + assert(array_key_exists('errors', $hookinfo)); + assert(array_key_exists('info', $hookinfo)); + + $hookinfo['info'][] = '[sanitycheck] At least the sanity check itself is working :)'; +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/en/LC_MESSAGES/sanitycheck.po b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/en/LC_MESSAGES/sanitycheck.po new file mode 100644 index 0000000000000000000000000000000000000000..140725668de0b59cdd3866c9f099602c0d179f5d --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/en/LC_MESSAGES/sanitycheck.po @@ -0,0 +1,11 @@ +msgid "These checks failed:" +msgstr "These checks failed:" + +msgid "These checks succeeded:" +msgstr "These checks succeeded:" + +msgid "{sanitycheck:strings:link_sanitycheck}" +msgstr "Sanity check of your SimpleSAMLphp setup" + +msgid "Sanity check of your SimpleSAMLphp setup" +msgstr "Sanity check of your SimpleSAMLphp setup" \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/es/LC_MESSAGES/sanitycheck.po b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/es/LC_MESSAGES/sanitycheck.po new file mode 100644 index 0000000000000000000000000000000000000000..8ccf3453db844db2aa394de45e7da54cb4b6da83 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/es/LC_MESSAGES/sanitycheck.po @@ -0,0 +1,11 @@ +msgid "These checks failed:" +msgstr "Las siguientes comprobaciones han fallado:" + +msgid "These checks succeeded:" +msgstr "Las siguientes comprobaciones fueron satisfactorias:" + +msgid "{sanitycheck:strings:link_sanitycheck}" +msgstr "Comprobaciones básicas de la instalación" + +msgid "Sanity check of your SimpleSAMLphp setup" +msgstr "Comprobaciones básicas de la instalación" diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/it/LC_MESSAGES/sanitycheck.po b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/it/LC_MESSAGES/sanitycheck.po new file mode 100644 index 0000000000000000000000000000000000000000..558b243e066a7ab4408a5223ad3529b804efc737 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/it/LC_MESSAGES/sanitycheck.po @@ -0,0 +1,6 @@ +msgid "These checks failed:" +msgstr "I seguenti controlli hanno riscontrato dei problemi:" + +msgid "These checks succeeded:" +msgstr "I seguenti controlli sono stati eseguiti con successo:" + diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/nb/LC_MESSAGES/sanitycheck.po b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/nb/LC_MESSAGES/sanitycheck.po new file mode 100644 index 0000000000000000000000000000000000000000..eed8799443a3aaf137c3fb919507338934461357 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/nb/LC_MESSAGES/sanitycheck.po @@ -0,0 +1,11 @@ +msgid "These checks failed:" +msgstr "Disse sjekkene har feila:" + +msgid "These checks succeeded:" +msgstr "Disse sjekkene var suksessfulle:" + +msgid "{sanitycheck:strings:link_sanitycheck}" +msgstr "Sjekk din installasjon" + +msgid "Sanity check of your SimpleSAMLphp setup" +msgstr "Sjekk din installasjon" diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/nl/LC_MESSAGES/sanitycheck.po b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/nl/LC_MESSAGES/sanitycheck.po new file mode 100644 index 0000000000000000000000000000000000000000..e6c41cc5748cdf3f3988b6b778cf1873f296f438 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/nl/LC_MESSAGES/sanitycheck.po @@ -0,0 +1,11 @@ +msgid "These checks failed:" +msgstr "De volgende controles zijn mislukt:" + +msgid "These checks succeeded:" +msgstr "De volgende controles zijn geslaagd:" + +msgid "{sanitycheck:strings:link_sanitycheck}" +msgstr "Sanity check van je SimpleSAMLphp setup" + +msgid "Sanity check of your SimpleSAMLphp setup" +msgstr "Sanity check van je SimpleSAMLphp setup" diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/nn/LC_MESSAGES/sanitycheck.po b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/nn/LC_MESSAGES/sanitycheck.po new file mode 100644 index 0000000000000000000000000000000000000000..e3e4c989f91924dfcc967c6eb6365f954a370855 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/locales/nn/LC_MESSAGES/sanitycheck.po @@ -0,0 +1,11 @@ +msgid "These checks failed:" +msgstr "These checks failed:" + +msgid "These checks succeeded:" +msgstr "Desse sjekkane var suksessfulle:" + +msgid "{sanitycheck:strings:link_sanitycheck}" +msgstr "Sjekk din installasjon" + +msgid "Sanity check of your SimpleSAMLphp setup" +msgstr "Sjekk din installasjon" diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/phpunit.xml b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/phpunit.xml new file mode 100644 index 0000000000000000000000000000000000000000..c0985fdd804b18d8d9179ecd956d63582c189e95 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/phpunit.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" ?> +<phpunit bootstrap="tests/bootstrap.php"> + <testsuites> + <testsuite name="The project's test suite"> + <directory>tests/</directory> + </testsuite> + </testsuites> + <filter> + <whitelist processUncoveredFilesFromWhitelist="true"> + <directory suffix=".php">./lib</directory> + </whitelist> + </filter> + <logging> + <log type="coverage-text" target="php://stdout" showUncoveredFiles="true" /> + <log type="coverage-html" target="build/coverage" title="PHP Coveralls" charset="UTF-8" yui="true" highlight="true" lowUpperBound="35" highLowerBound="70" /> + <log type="coverage-clover" target="build/logs/clover.xml" /> + </logging> +</phpunit> + diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/psalm.xml b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/psalm.xml new file mode 100644 index 0000000000000000000000000000000000000000..ce1e5b4b8d5ba91c858e191bfb138c847069d3ac --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/psalm.xml @@ -0,0 +1,33 @@ +<?xml version="1.0"?> +<psalm + name="SimpleSAMLphp sanitycheck module" + useDocblockTypes="true" + totallyTyped="false" +> + <projectFiles> + <directory name="config-templates" /> + <directory name="hooks" /> + <directory name="templates" /> + <directory name="www" /> + </projectFiles> + + <issueHandlers> + <LessSpecificReturnType errorLevel="info" /> + + <!-- level 3 issues - slightly lazy code writing, but probably low false-negatives --> + <DeprecatedMethod 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" /> + <UnusedClass errorLevel="info" /> + <PossiblyUnusedMethod errorLevel="info" /> + </issueHandlers> +</psalm> diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/templates/check.tpl.php b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/templates/check.tpl.php new file mode 100644 index 0000000000000000000000000000000000000000..2dba59166b643198863c604c2774eca9629fecba --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/templates/check.tpl.php @@ -0,0 +1,27 @@ +<?php +$this->data['header'] = 'Sanity check'; +$this->includeAtTemplateBase('includes/header.php'); + +echo '<h2>'.$this->data['header'].'</h2>'; +if (count($this->data['errors']) > 0) { + echo '<div style="border: 1px solid #800; background: #caa; margin: 1em; padding: .5em">'; + echo '<p><img class="float-r" src="/'.$this->data['baseurlpath']. + 'resources/icons/silk/delete.png" alt="Failed" />These checks failed:</p>'; + echo '<ul>'; + foreach ($this->data['errors'] as $err) { + echo '<li>'.$err.'</li>'; + } + echo '</ul></div>'; +} + +if (count($this->data['info']) > 0) { + echo '<div style="border: 1px solid #ccc; background: #eee; margin: 1em; padding: .5em">'; + echo '<p><img class="float-r" src="/'.$this->data['baseurlpath']. + 'resources/icons/silk/accept.png" alt="OK" />These checks succeeded:</p>'; + echo '<ul>'; + foreach ($this->data['info'] as $i) { + echo '<li>'.$i.'</li>'; + } +} +echo '</ul></div>'; +$this->includeAtTemplateBase('includes/footer.php'); diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/templates/check.twig b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/templates/check.twig new file mode 100644 index 0000000000000000000000000000000000000000..fe51f41809cade804ccfcb83bdd5eb9b3dccfa8a --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/templates/check.twig @@ -0,0 +1,46 @@ +{% extends "base.twig" %} +{% set pagetitle = 'Sanity check' %} +{% block content %} + +<h2>{{ pagetitle }}</h2> + +{% if errors %} + +<div class="message-box error"> + <div class="pure-g"> + <div class="pure-u-1-12"> + <span class="fa fa-times-circle fa-2x"></span> + </div> + <div class="pure-u-11-12"> + <p>{{ 'These checks failed:'|trans }}</p> + + <ul class="error-list"> + {% for err in errors %} + <li>{{ err }}</li> + {% endfor %} + </ul> + </div> + </div> +</div> +{% endif %} + +{% if info %} +<div class="message-box success"> + <div class="pure-g"> + <div class="pure-u-1-12"> + <span class="fa fa-check fa-2x"> </span> + </div> + <div class="pure-u-11-12"> + <p>{{ 'These checks succeeded:'|trans }}</p> + + <ul> + {% for i in info %} + <li>{{ i }}</li> + {% endfor %} + </ul> + </div> + </div> +</div> +{% endif %} + +{% endblock %} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/tests/bootstrap.php b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/tests/bootstrap.php new file mode 100644 index 0000000000000000000000000000000000000000..57fcb7dd392498da7eaea23c370e811186306ccd --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/tests/bootstrap.php @@ -0,0 +1,11 @@ +<?php + +$projectRoot = dirname(__DIR__); +require_once($projectRoot.'/vendor/autoload.php'); + +// Symlink module into ssp vendor lib so that templates and urls can resolve correctly +$linkPath = $projectRoot.'/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck'; +if (file_exists($linkPath) === false) { + echo "Linking '$linkPath' to '$projectRoot'\n"; + symlink($projectRoot, $linkPath); +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/www/index.php b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/www/index.php new file mode 100644 index 0000000000000000000000000000000000000000..8946bad073f5ca56a7107056c5343ec8acefda21 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sanitycheck/www/index.php @@ -0,0 +1,26 @@ +<?php + +$config = \SimpleSAML\Configuration::getInstance(); + +$info = []; +$errors = []; +$hookinfo = [ + 'info' => &$info, + 'errors' => &$errors, +]; +\SimpleSAML\Module::callHooks('sanitycheck', $hookinfo); + +if (isset($_REQUEST['output']) && $_REQUEST['output'] == 'text') { + if (count($errors) === 0) { + echo 'OK'; + } else { + echo 'FAIL'; + } + exit; +} + +$t = new \SimpleSAML\XHTML\Template($config, 'sanitycheck:check.tpl.php'); +$t->data['pageid'] = 'sanitycheck'; +$t->data['errors'] = $errors; +$t->data['info'] = $info; +$t->show(); diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/.php_cs.dist b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/.php_cs.dist new file mode 100644 index 0000000000000000000000000000000000000000..e7d314696c7e461b645c3d603f3a5d3034082ba5 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/.php_cs.dist @@ -0,0 +1,15 @@ +<?php +$finder = PhpCsFixer\Finder::create() + ->in([ + __DIR__ . '/lib', + __DIR__ . '/tests', + ]) +; +return PhpCsFixer\Config::create() + ->setRules([ + '@PSR2' => true, + '@PSR4' => true, + '@PSR5' => true, + ]) + ->setFinder($finder) +; diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/.travis.yml b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..fec43ab41a5a3b2129c6a4b00802c56325717fe9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/.travis.yml @@ -0,0 +1,31 @@ +sudo: required + +language: php + +php: + - 5.6 + - 7.0 + - 7.1 + - 7.2 + - 7.3 + +env: + - SIMPLESAMLPHP_VERSION=1.17.* + +before_script: + - composer require "simplesamlphp/simplesamlphp:${SIMPLESAMLPHP_VERSION}" --no-update + - composer update --no-interaction + - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then composer require --dev vimeo/psalm:1.1.9; fi + +script: + - bin/check-syntax.sh + - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then php vendor/phpunit/phpunit/phpunit; else php vendor/phpunit/phpunit/phpunit --no-coverage; fi + - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then vendor/bin/psalm; fi + +after_success: + # Codecov, need to edit bash uploader for incorrect TRAVIS_PYTHON_VERSION environment variable matching, at least until codecov/codecov-bash#133 is resolved + - curl -s https://codecov.io/bash > .codecov + - sed -i -e 's/TRAVIS_.*_VERSION/^TRAVIS_.*_VERSION=/' .codecov + - chmod +x .codecov + - if [[ $TRAVIS_PHP_VERSION == "5.6" ]]; then ./.codecov -X gcov; fi +# - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then bash <(curl -s https://codecov.io/bash); fi diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/LICENSE b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..a345e48d049f9c6756e9364e908b3f26e36c9df1 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/LICENSE @@ -0,0 +1,459 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 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. + +[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 + \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/bin/check-syntax.sh b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/bin/check-syntax.sh new file mode 100755 index 0000000000000000000000000000000000000000..db6dc4b0140cb09231c6bf2e756c6a668e8e7cbe --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/bin/check-syntax.sh @@ -0,0 +1,15 @@ +#!/usr/bin/env bash + +PHP='/usr/bin/env php' +RETURN=0 + +# check PHP files +for FILE in `find lib tests -name "*.php"`; do + $PHP -l $FILE > /dev/null 2>&1 + if [ $? -ne 0 ]; then + echo "Syntax check failed for ${FILE}" + RETURN=`expr ${RETURN} + 1` + fi +done + +exit $RETURN diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/codecov.yml b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/codecov.yml new file mode 100644 index 0000000000000000000000000000000000000000..f7f39e1e93d0ca23383d5ed120442f62f5f15ac9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/codecov.yml @@ -0,0 +1,11 @@ +coverage: + status: + project: yes + +comment: + layout: "diff" + behavior: once + require_changes: true + require_base: no + require_head: yes + branches: null diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/composer.json b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..58e6419ce03533c5755a1257a9128da1a696d7b2 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/composer.json @@ -0,0 +1,45 @@ +{ + "name": "simplesamlphp/simplesamlphp-module-sqlauth", + "description": "This is a authentication module for authenticating a user against a SQL database", + "type": "simplesamlphp-module", + "keywords": ["simplesamlphp", "sqlauth"], + "license": "LGPL-2.1-or-later", + "authors": [ + { + "name": "Olav Morken", + "email": "olavmrk@gmail.com" + } + ], + "config": { + "preferred-install": { + "simplesamlphp/simplesamlphp": "source", + "*": "dist" + }, + "allow-plugins": { + "composer/package-versions-deprecated": true + } + }, + "autoload": { + "psr-4": { + "SimpleSAML\\Module\\sqlauth\\": "lib/" + } + }, + "autoload-dev": { + "psr-4": { + "SimpleSAML\\Test\\Utils\\": "vendor/simplesamlphp/simplesamlphp/tests/Utils" + } + }, + "require": { + "php": ">=5.6", + "simplesamlphp/composer-module-installer": "~1.1" + }, + "require-dev": { + "phpunit/phpunit": "~5.7", + "simplesamlphp/simplesamlphp": "^1.17", + "webmozart/assert": "^1.4 <1.7" + }, + "support": { + "issues": "https://github.com/tvdijen/simplesamlphp-module-sqlauth/issues", + "source": "https://github.com/tvdijen/simplesamlphp-module-sqlauth" + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/default-disable b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/default-disable new file mode 100644 index 0000000000000000000000000000000000000000..fa0bd82e2df7bd79d57593d35bc53c1f9d3ef71f --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/default-disable @@ -0,0 +1,3 @@ +This file indicates that the default state of this module +is disabled. To enable, create a file named enable in the +same directory as this file. diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/docs/sql.md b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/docs/sql.md new file mode 100644 index 0000000000000000000000000000000000000000..310b47eb17d971c63a4881e58065c29c25271074 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/docs/sql.md @@ -0,0 +1,100 @@ +`sqlauth:SQL` +============= + +This is a authentication module for authenticating a user against a SQL database. + + +Options +------- + +`dsn` +: The DSN which should be used to connect to the database server. + Check the various database drivers in the [PHP documentation](http://php.net/manual/en/pdo.drivers.php) for a description of the various DSN formats. + +`username` +: The username which should be used when connecting to the database server. + + +`password` +: The password which should be used when connecting to the database server. + +`query` +: The SQL query which should be used to retrieve the user. + The parameters :username and :password are available. + If the username/password is incorrect, the query should return no rows. + The name of the columns in resultset will be used as attribute names. + If the query returns multiple rows, they will be merged into the attributes. + Duplicate values and NULL values will be removed. + + +Examples +-------- + +Database layout used in some of the examples: + + CREATE TABLE users ( + uid VARCHAR(30) NOT NULL PRIMARY KEY, + password TEXT NOT NULL, + salt TEXT NOT NULL, + givenName TEXT NOT NULL, + email TEXT NOT NULL, + eduPersonPrincipalName TEXT NOT NULL + ); + CREATE TABLE usergroups ( + uid VARCHAR(30) NOT NULL REFERENCES users (uid) ON DELETE CASCADE ON UPDATE CASCADE, + groupname VARCHAR(30) NOT NULL, + UNIQUE(uid, groupname) + ); + +Example query - SHA256 of salt + password, with the salt stored in an independent column, MySQL server: + + SELECT uid, givenName, email, eduPersonPrincipalName + FROM users + WHERE uid = :username + AND PASSWORD = SHA2( + CONCAT( + (SELECT salt FROM users WHERE uid = :username), + :password + ), + 256 + ) + +Example query - SHA256 of salt + password, with the salt stored in an independent column. Multiple groups, MySQL server: + + SELECT users.uid, givenName, email, eduPersonPrincipalName, groupname AS groups + FROM users LEFT JOIN usergroups ON users.uid = usergroups.username + WHERE users.uid = :username + AND PASSWORD = SHA2( + CONCAT( + (SELECT salt FROM users WHERE uid = :username), + :password + ), + 256 + ) + +Example query - SHA512 of salt + password, stored as salt (32 bytes) + sha256(salt + password) in password-field, PostgreSQL server: + + SELECT uid, givenName, email, eduPersonPrincipalName + FROM users + WHERE username = :username + AND SUBSTRING( + password FROM LENGTH(password) - 31 + ) = SHA2( + CONCAT( + SUBSTRING(password FROM 1 FOR LENGTH(password) - 32), + :password + ), + 512 + ) + +Security considerations +----------------------- + +Please never store passwords in plaintext in a database. You should always hash your passwords with a secure one-way +function like the ones in the SHA2 family. Use randomly generated salts with a length at least equal to the hash of the +password itself. Salts should be per-password, that meaning every time a password changes, the salt must change, and +therefore salts must be stored in the database alongside the passwords they were used for. Application-wide salts can +be used (by just concatenating them to the input of the hash function), but should never replace per-password salts, +used instead as an additional security measure. + +One way hashing algorithms like MD5 or SHA1 are considered insecure and should therefore be avoided. diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/lib/Auth/Source/SQL.php b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/lib/Auth/Source/SQL.php new file mode 100644 index 0000000000000000000000000000000000000000..2f1a602450a0f2a4936ac06f7d7e725f6f2c43f1 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/lib/Auth/Source/SQL.php @@ -0,0 +1,208 @@ +<?php + +namespace SimpleSAML\Module\sqlauth\Auth\Source; + +use Exception; +use PDO; +use PDOException; +use SimpleSAML\Error; +use SimpleSAML\Logger; + +/** + * Simple SQL authentication source + * + * This class is an example authentication source which authenticates an user + * against a SQL database. + * + * @package SimpleSAMLphp + */ + +class SQL extends \SimpleSAML\Module\core\Auth\UserPassBase +{ + /** + * The DSN we should connect to. + */ + private $dsn; + + /** + * The username we should connect to the database with. + */ + private $username; + + /** + * The password we should connect to the database with. + */ + private $password; + + /** + * The options that we should connect to the database with. + */ + private $options; + + /** + * The query we should use to retrieve the attributes for the user. + * + * The username and password will be available as :username and :password. + */ + private $query; + + /** + * Constructor for this authentication source. + * + * @param array $info Information about this authentication source. + * @param array $config Configuration. + */ + public function __construct($info, $config) + { + assert(is_array($info)); + assert(is_array($config)); + + // Call the parent constructor first, as required by the interface + parent::__construct($info, $config); + + // Make sure that all required parameters are present. + foreach (['dsn', 'username', 'password', 'query'] as $param) { + if (!array_key_exists($param, $config)) { + throw new Exception('Missing required attribute \''.$param. + '\' for authentication source '.$this->authId); + } + + if (!is_string($config[$param])) { + throw new Exception('Expected parameter \''.$param. + '\' for authentication source '.$this->authId. + ' to be a string. Instead it was: '. + var_export($config[$param], true)); + } + } + + $this->dsn = $config['dsn']; + $this->username = $config['username']; + $this->password = $config['password']; + $this->query = $config['query']; + if (isset($config['options'])) { + $this->options = $config['options']; + } + } + + + /** + * Create a database connection. + * + * @return \PDO The database connection. + */ + private function connect() + { + try { + $db = new PDO($this->dsn, $this->username, $this->password, $this->options); + } catch (PDOException $e) { + // Obfuscate the password if it's part of the dsn + $obfuscated_dsn = preg_replace('/(user|password)=(.*?([;]|$))/', '${1}=***', $this->dsn); + + throw new Exception('sqlauth:' . $this->authId . ': - Failed to connect to \'' . + $obfuscated_dsn . '\': ' . $e->getMessage()); + } + + $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); + + $driver = explode(':', $this->dsn, 2); + $driver = strtolower($driver[0]); + + // Driver specific initialization + switch ($driver) { + case 'mysql': + // Use UTF-8 + $db->exec("SET NAMES 'utf8mb4'"); + break; + case 'pgsql': + // Use UTF-8 + $db->exec("SET NAMES 'UTF8'"); + break; + } + + return $db; + } + + + /** + * Attempt to log in using the given username and password. + * + * On a successful login, this function should return the users attributes. On failure, + * it should throw an exception. If the error was caused by the user entering the wrong + * username or password, a \SimpleSAML\Error\Error('WRONGUSERPASS') should be thrown. + * + * Note that both the username and the password are UTF-8 encoded. + * + * @param string $username The username the user wrote. + * @param string $password The password the user wrote. + * @return array Associative array with the users attributes. + */ + protected function login($username, $password) + { + assert(is_string($username)); + assert(is_string($password)); + + $db = $this->connect(); + + try { + $sth = $db->prepare($this->query); + } catch (PDOException $e) { + throw new Exception('sqlauth:'.$this->authId. + ': - Failed to prepare query: '.$e->getMessage()); + } + + try { + $sth->execute(['username' => $username, 'password' => $password]); + } catch (PDOException $e) { + throw new Exception('sqlauth:'.$this->authId. + ': - Failed to execute query: '.$e->getMessage()); + } + + try { + $data = $sth->fetchAll(PDO::FETCH_ASSOC); + } catch (PDOException $e) { + throw new Exception('sqlauth:'.$this->authId. + ': - Failed to fetch result set: '.$e->getMessage()); + } + + Logger::info('sqlauth:'.$this->authId.': Got '.count($data). + ' rows from database'); + + if (count($data) === 0) { + // No rows returned - invalid username/password + Logger::error('sqlauth:'.$this->authId. + ': No rows in result set. Probably wrong username/password.'); + throw new Error\Error('WRONGUSERPASS'); + } + + /* Extract attributes. We allow the resultset to consist of multiple rows. Attributes + * which are present in more than one row will become multivalued. null values and + * duplicate values will be skipped. All values will be converted to strings. + */ + $attributes = []; + foreach ($data as $row) { + foreach ($row as $name => $value) { + if ($value === null) { + continue; + } + + $value = (string) $value; + + if (!array_key_exists($name, $attributes)) { + $attributes[$name] = []; + } + + if (in_array($value, $attributes[$name], true)) { + // Value already exists in attribute + continue; + } + + $attributes[$name][] = $value; + } + } + + Logger::info('sqlauth:'.$this->authId.': Attributes: '. + implode(',', array_keys($attributes))); + + return $attributes; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/phpunit.xml b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/phpunit.xml new file mode 100644 index 0000000000000000000000000000000000000000..c0985fdd804b18d8d9179ecd956d63582c189e95 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/phpunit.xml @@ -0,0 +1,19 @@ +<?xml version="1.0" encoding="utf-8" ?> +<phpunit bootstrap="tests/bootstrap.php"> + <testsuites> + <testsuite name="The project's test suite"> + <directory>tests/</directory> + </testsuite> + </testsuites> + <filter> + <whitelist processUncoveredFilesFromWhitelist="true"> + <directory suffix=".php">./lib</directory> + </whitelist> + </filter> + <logging> + <log type="coverage-text" target="php://stdout" showUncoveredFiles="true" /> + <log type="coverage-html" target="build/coverage" title="PHP Coveralls" charset="UTF-8" yui="true" highlight="true" lowUpperBound="35" highLowerBound="70" /> + <log type="coverage-clover" target="build/logs/clover.xml" /> + </logging> +</phpunit> + diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/psalm.xml b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/psalm.xml new file mode 100644 index 0000000000000000000000000000000000000000..a9cae34101aeb861353a1647059bb37ed40e205a --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/psalm.xml @@ -0,0 +1,30 @@ +<?xml version="1.0"?> +<psalm + name="The SimpleSAMLphp sqlauth module" + useDocblockTypes="true" + totallyTyped="false" +> + <projectFiles> + <directory name="lib" /> + </projectFiles> + + <issueHandlers> + <LessSpecificReturnType errorLevel="info" /> + + <!-- level 3 issues - slightly lazy code writing, but probably low false-negatives --> + <DeprecatedMethod 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" /> + <UnusedClass errorLevel="info" /> + <PossiblyUnusedMethod errorLevel="info" /> + </issueHandlers> +</psalm> diff --git a/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/tests/bootstrap.php b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/tests/bootstrap.php new file mode 100644 index 0000000000000000000000000000000000000000..28efee11df1f5b3ff515ddffd584f632b7d78c83 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/sqlauth/tests/bootstrap.php @@ -0,0 +1,11 @@ +<?php + +$projectRoot = dirname(__DIR__); +require_once($projectRoot.'/vendor/autoload.php'); + +// Symlink module into ssp vendor lib so that templates and urls can resolve correctly +$linkPath = $projectRoot.'/vendor/simplesamlphp/simplesamlphp/modules/sqlauth'; +if (file_exists($linkPath) === false) { + echo "Linking '$linkPath' to '$projectRoot'\n"; + symlink($projectRoot, $linkPath); +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/.php_cs.dist b/vendor/simplesamlphp/simplesamlphp/modules/statistics/.php_cs.dist new file mode 100644 index 0000000000000000000000000000000000000000..33467ebed8fd85e1f86baae2dc2f5b75cbe7143f --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/.php_cs.dist @@ -0,0 +1,16 @@ +<?php +$finder = PhpCsFixer\Finder::create() + ->in([ + __DIR__ . '/lib', + __DIR__ . '/tests', + __DIR__ . '/www', + ]) +; +return PhpCsFixer\Config::create() + ->setRules([ + '@PSR2' => true, + '@PSR4' => true, + '@PSR5' => true, + ]) + ->setFinder($finder) +; diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/.travis.yml b/vendor/simplesamlphp/simplesamlphp/modules/statistics/.travis.yml new file mode 100644 index 0000000000000000000000000000000000000000..208a6d6c78faaea8f1720aff7a6a2a756d266ab3 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/.travis.yml @@ -0,0 +1,30 @@ +sudo: required + +language: php + +php: + - 5.6 + - 7.0 + - 7.1 + - 7.2 + - 7.3 + +env: + - SIMPLESAMLPHP_VERSION=1.17.* + +before_script: + - composer require "simplesamlphp/simplesamlphp:${SIMPLESAMLPHP_VERSION}" --no-update + - composer update --no-interaction + +script: + - vendor/simplesamlphp/simplesamlphp-test-framework/bin/check-syntax-php.sh + - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then php vendor/phpunit/phpunit/phpunit; else php vendor/phpunit/phpunit/phpunit --no-coverage; fi + - if [[ "$TRAVIS_PHP_VERSION" == "7.3" ]]; then vendor/bin/psalm; fi + +after_success: + # Codecov, need to edit bash uploader for incorrect TRAVIS_PYTHON_VERSION environment variable matching, at least until codecov/codecov-bash#133 is resolved + - curl -s https://codecov.io/bash > .codecov + - sed -i -e 's/TRAVIS_.*_VERSION/^TRAVIS_.*_VERSION=/' .codecov + - chmod +x .codecov + - if [[ $TRAVIS_PHP_VERSION == "5.6" ]]; then ./.codecov -X gcov; fi +# - if [[ "$TRAVIS_PHP_VERSION" == "5.6" ]]; then bash <(curl -s https://codecov.io/bash); fi diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/LICENSE b/vendor/simplesamlphp/simplesamlphp/modules/statistics/LICENSE new file mode 100644 index 0000000000000000000000000000000000000000..a345e48d049f9c6756e9364e908b3f26e36c9df1 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/LICENSE @@ -0,0 +1,459 @@ + GNU LESSER GENERAL PUBLIC LICENSE + Version 2.1, February 1999 + + Copyright (C) 1991, 1999 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. + +[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 + \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/bin/loganalyzer.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/bin/loganalyzer.php new file mode 100755 index 0000000000000000000000000000000000000000..830d0d74be863093b66f378706ee7b409957525c --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/bin/loganalyzer.php @@ -0,0 +1,88 @@ +#!/usr/bin/env php +<?php + +// This is the base directory of the SimpleSAMLphp installation +$baseDir = dirname(dirname(dirname(dirname(__FILE__)))); + +// Add library autoloader. +require_once($baseDir . '/lib/_autoload.php'); + +// Initialize the configuration. +$configdir = \SimpleSAML\Utils\Config::getConfigDir(); +\SimpleSAML\Configuration::setConfigDir($configdir); +\SimpleSAML\Utils\Time::initTimezone(); + +$progName = array_shift($argv); +$debug = false; +$dryrun = false; + +foreach ($argv as $a) { + if (strlen($a) === 0) { + continue; + } + if (strpos($a, '=') !== false) { + $p = strpos($a, '='); + $v = substr($a, $p + 1); + $a = substr($a, 0, $p); + } else { + $v = null; + } + + // Map short options to long options. + $shortOptMap = ['-d' => '--debug']; + if (array_key_exists($a, $shortOptMap)) { + $a = $shortOptMap[$a]; + } + switch ($a) { + case '--help': + printHelp(); + exit(0); + case '--debug': + $debug = true; + break; + case '--dry-run': + $dryrun = true; + break; + default: + echo 'Unknown option: ' . $a . "\n"; + echo 'Please run `' . $progName . ' --help` for usage information.' . "\n"; + exit(1); + } +} + +$aggregator = new \SimpleSAML\Module\statistics\Aggregator(true); +$aggregator->dumpConfig(); +$aggregator->debugInfo(); +$results = $aggregator->aggregate($debug); +$aggregator->debugInfo(); + +if (!$dryrun) { + $aggregator->store($results); +} + +foreach ($results as $slot => $val) { + foreach ($val as $sp => $no) { + echo $sp . " " . count($no) . " - "; + } + echo "\n"; +} + + +/** + * This function prints the help output. + * @return void + */ +function printHelp() +{ + global $progName; + + echo <<<END +Usage: $progName [options] + +This program parses and aggregates SimpleSAMLphp log files. + +Options: + -d, --debug Used when configuring the log file syntax. See doc. + --dry-run Aggregate but do not store the results. +END; +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/bin/logcleaner.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/bin/logcleaner.php new file mode 100755 index 0000000000000000000000000000000000000000..45afa1b09d80264f8f5d7866776bd4f24011c24e --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/bin/logcleaner.php @@ -0,0 +1,92 @@ +#!/usr/bin/env php +<?php + +// This is the base directory of the SimpleSAMLphp installation +$baseDir = dirname(dirname(dirname(dirname(__FILE__)))); + +// Add library autoloader. +require_once($baseDir . '/lib/_autoload.php'); + +// Initialize the configuration. +$configdir = \SimpleSAML\Utils\Config::getConfigDir(); +\SimpleSAML\Configuration::setConfigDir($configdir); + +$progName = array_shift($argv); +$debug = false; +$dryrun = false; +$output = '/tmp/simplesamlphp-new.log'; +$infile = null; + +foreach ($argv as $a) { + if (strlen($a) === 0) { + continue; + } + if (strpos($a, '=') !== false) { + $p = strpos($a, '='); + $v = substr($a, $p + 1); + $a = substr($a, 0, $p); + } else { + $v = null; + } + + // Map short options to long options. + $shortOptMap = ['-d' => '--debug']; + if (array_key_exists($a, $shortOptMap)) { + $a = $shortOptMap[$a]; + } + + switch ($a) { + case '--help': + printHelp(); + exit(0); + case '--debug': + $debug = true; + break; + case '--dry-run': + $dryrun = true; + break; + case '--infile': + $infile = $v; + break; + case '--outfile': + $output = $v; + break; + default: + echo 'Unknown option: ' . $a . "\n"; + echo 'Please run `' . $progName . ' --help` for usage information.' . "\n"; + exit(1); + } +} + +$cleaner = new \SimpleSAML\Module\statistics\LogCleaner($infile); +$cleaner->dumpConfig(); +$todelete = $cleaner->clean($debug); + +echo "Cleaning these trackIDs: " . join(', ', $todelete) . "\n"; + +if (!$dryrun) { + $cleaner->store($todelete, $output); +} + +/** + * This function prints the help output. + * @return void + */ +function printHelp() +{ + global $progName; + + echo <<<END +Usage: $progName [options] + +This program cleans logs. This script is experimental. Do not run it unless you have talked to Andreas about it. +The script deletes log lines related to sessions that produce more than 200 lines. + +Options: + -d, --debug Used when configuring the log file syntax. See doc. + --dry-run Aggregate but do not store the results. + --infile File input. + --outfile File to output the results. + +END; +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/codecov.yml b/vendor/simplesamlphp/simplesamlphp/modules/statistics/codecov.yml new file mode 100644 index 0000000000000000000000000000000000000000..f7f39e1e93d0ca23383d5ed120442f62f5f15ac9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/codecov.yml @@ -0,0 +1,11 @@ +coverage: + status: + project: yes + +comment: + layout: "diff" + behavior: once + require_changes: true + require_base: no + require_head: yes + branches: null diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/composer.json b/vendor/simplesamlphp/simplesamlphp/modules/statistics/composer.json new file mode 100644 index 0000000000000000000000000000000000000000..10ddc9c7fad447f98674d06420e4f47150620c48 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/composer.json @@ -0,0 +1,43 @@ +{ + "name": "simplesamlphp/simplesamlphp-module-statistics", + "description": "The SimpleSAMLphp statistics module", + "type": "simplesamlphp-module", + "keywords": ["simplesamlphp", "statistics"], + "license": "LGPL-2.1-or-later", + "authors": [ + { + "name": "Andreas Åkre Solberg", + "email": "andreas.solberg@uninett.no" + } + ], + "config": { + "preferred-install": { + "simplesamlphp/simplesamlphp": "source", + "*": "dist" + } + }, + "autoload": { + "psr-4": { + "SimpleSAML\\Module\\statistics\\": "lib/" + } + }, + "autoload-dev": { + "psr-4": { + "SimpleSAML\\Test\\Utils\\": "vendor/simplesamlphp/simplesamlphp/tests/Utils" + } + }, + "require": { + "php": ">=5.6", + "simplesamlphp/composer-module-installer": "~1.1", + "webmozart/assert": "^1.4" + }, + "require-dev": { + "phpunit/phpunit": "~5.7", + "simplesamlphp/simplesamlphp": "^1.17", + "simplesamlphp/simplesamlphp-test-framework": "^0.0.12" + }, + "support": { + "issues": "https://github.com/simplesamlphp/simplesamlphp-module-statistics/issues", + "source": "https://github.com/simplesamlphp/simplesamlphp-module-statistics" + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/config-templates/module_statistics.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/config-templates/module_statistics.php new file mode 100644 index 0000000000000000000000000000000000000000..ccc119548da5319e4ec5e7fd8adc30d92348047b --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/config-templates/module_statistics.php @@ -0,0 +1,190 @@ +<?php +/* + * The configuration of SimpleSAMLphp statistics package + */ + +$config = [ + // Authentication & authorization for statistics + + // Whether the statistics require authentication before use. + 'protected' => false, + + // The authentication source that should be used. + 'auth' => 'admin', + + // Alternative 1: List of allowed users. + //'useridattr' => 'eduPersonPrincipalName', + //'allowedUsers' => array('andreas@uninett.no', 'ola.normann@sp.example.org'), + + // Alternative 2: External ACL list. + //'acl' => 'adminlist', + + 'default' => 'sso', + + 'statdir' => '/tmp/stats/', + 'inputfile' => '/var/log/simplesamlphp.stat', + 'offset' => 60 * 60 * 2 + 60 * 60 * 24 * 3, // Two hours offset to match epoch and norwegian winter time. + + 'datestart' => 1, + 'datelength' => 15, + 'offsetspan' => 21, + + // Dimensions on graph from Google Charts in pixels... + 'dimension.x' => 800, + 'dimension.y' => 350, + + /* + * Do you want to generate statistics using the cron module? If so, specify which cron tag to use. + * Examples: daily, weekly + * To not run statistics in cron, set value to + * 'cron_tag' => null, + */ + 'cron_tag' => 'daily', + + /* + * Set max running time for this script. This is also controlled by max_execution_time in php.ini + * and is set to 30 sec by default. Your web server can have other timeout configurations that may + * also interrupt PHP execution. Apache has a Timeout directive and IIS has a + * CGI timeout function. Both default to 300 seconds. + */ + 'time_limit' => 300, + + 'timeres' => [ + 'day' => [ + 'name' => 'Day', + 'slot' => 60 * 15, // Slots of 15 minutes + 'fileslot' => 60 * 60 * 24, // One day (24 hours) file slots + 'axislabelint' => 6 * 4, // Number of slots per label. 4 per hour *6 = 6 hours + 'dateformat-period' => 'j. M', // 4. Mars + 'dateformat-intra' => 'j. M H:i', // 4. Mars 12:30 + ], + 'week' => [ + 'name' => 'Week', + 'slot' => 60 * 60, // Slots of one hour + 'fileslot' => 60 * 60 * 24 * 7, // 7 days of data in each file + 'axislabelint' => 24, // Number of slots per label. 24 is one each day + 'dateformat-period' => 'j. M', // 4. Mars + 'dateformat-intra' => 'j. M H:i', // 4. Mars 12:30 + ], + 'month' => [ + 'name' => 'Month', + 'slot' => 60 * 60 * 24, // Slots of one day + 'fileslot' => 60 * 60 * 24 * 30, // 30 days of data in each file + 'axislabelint' => 7, // Number of slots per label. 7 days => 1 week + 'dateformat-period' => 'j. M Y H:i', // 4. Mars 12:30 + 'dateformat-intra' => 'j. M', // 4. Mars + ], + 'monthaligned' => [ + 'name' => 'AlignedMonth', + 'slot' => 60 * 60 * 24, // Slots of one day + 'fileslot' => null, // 30 days of data in each file + 'customDateHandler' => 'month', + 'axislabelint' => 7, // Number of slots per label. 7 days => 1 week + 'dateformat-period' => 'j. M Y H:i', // 4. Mars 12:30 + 'dateformat-intra' => 'j. M', // 4. Mars + ], + 'days180' => [ + 'name' => '180 days', + 'slot' => 60 * 60 * 24, // Slots of 1 day (24 hours) + 'fileslot' => 60 * 60 * 24 * 180, // 80 days of data in each file + 'axislabelint' => 30, // Number of slots per label. 7 days => 1 week + 'dateformat-period' => 'j. M', // 4. Mars + 'dateformat-intra' => 'j. M', // 4. Mars + ], + ], + + 'statrules' => [ + 'sloratio' => [ + 'name' => 'SLO to SSO ratio', + 'descr' => 'Comparison of the number of Single Log-Out compared to Single Sign-On.' . + ' Graph shows how many logouts where initiated for each Single Sign-On.', + 'type' => 'calculated', + 'presenter' => 'statistics:Ratio', + 'ref' => ['slo', 'sso'], + 'fieldPresentation' => [ + 'class' => 'statistics:Entity', + 'config' => 'saml20-sp-remote', + ], + ], + 'ssomulti' => [ + 'name' => 'Requests per session', + 'descr' => 'Number of SSO request pairs exchanged between IdP and SP within the same IdP session.' . + ' A high number indicates that the session at the SP is timing out faster than at the IdP.', + 'type' => 'calculated', + 'presenter' => 'statistics:Ratio', + 'ref' => ['sso', 'ssofirst'], + 'fieldPresentation' => [ + 'class' => 'statistics:Entity', + 'config' => 'saml20-sp-remote', + ], + ], + 'sso' => [ + 'name' => 'SSO to service', + 'descr' => 'The number of logins at a Service Provider.', + 'action' => 'saml20-idp-SSO', + 'col' => 6, // Service Provider EntityID + 'fieldPresentation' => [ + 'class' => 'statistics:Entity', + 'config' => 'saml20-sp-remote', + ], + ], + 'ssofirst' => [ + 'name' => 'SSO-first to service', + 'descr' => 'The number of logins at a Service Provider.', + 'action' => 'saml20-idp-SSO-first', + 'col' => 6, // Service Provider EntityID + 'fieldPresentation' => [ + 'class' => 'statistics:Entity', + 'config' => 'saml20-sp-remote', + ], + ], + 'slo' => [ + 'name' => 'SLO initiated from service', + 'descr' => 'The number of initated Sinlge Logout from each of the service providers.', + 'action' => 'saml20-idp-SLO', + 'col' => 7, // Service Provider EntityID that initiated the logout. + 'fieldPresentation' => [ + 'class' => 'statistics:Entity', + 'config' => 'saml20-sp-remote', + ], + ], + 'consent' => [ + 'name' => 'Consent', + 'descr' => 'Consent statistics. Everytime a user logs in to a service an entry is logged for' . + ' one of three states: consent was found, consent was not found or consent storage was not available.', + 'action' => 'consent', + 'col' => 6, + 'fieldPresentation' => [ + 'class' => 'statistics:Entity', + 'config' => 'saml20-sp-remote', + ], + ], + 'consentresponse' => [ + 'name' => 'Consent response', + 'descr' => 'Consent response statistics. Everytime a user accepts consent,' . + ' it is logged whether the user selected to remember the consent to next time.', + 'action' => 'consentResponse', + 'col' => 6, + 'fieldPresentation' => [ + 'class' => 'statistics:Entity', + 'config' => 'saml20-sp-remote', + ], + ], + 'slopages' => [ + 'name' => 'SLO iframe pages', + 'descr' => 'The varioust IFrame SLO pages a user visits', + 'action' => 'slo-iframe', + 'col' => 6, // Page the user visits. + ], + 'slofail' => [ + 'name' => 'Failed iframe IdP-init SLOs', + 'descr' => 'The number of logout failures from various SPs', + 'action' => 'slo-iframe-fail', + 'col' => 6, // Service Provider EntityID that wasn't logged out. + 'fieldPresentation' => [ + 'class' => 'statistics:Entity', + 'config' => 'saml20-sp-remote', + ], + ], + ], +]; diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/default-disable b/vendor/simplesamlphp/simplesamlphp/modules/statistics/default-disable new file mode 100644 index 0000000000000000000000000000000000000000..fa0bd82e2df7bd79d57593d35bc53c1f9d3ef71f --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/default-disable @@ -0,0 +1,3 @@ +This file indicates that the default state of this module +is disabled. To enable, create a file named enable in the +same directory as this file. diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/dictionaries/statistics.definition.json b/vendor/simplesamlphp/simplesamlphp/modules/statistics/dictionaries/statistics.definition.json new file mode 100644 index 0000000000000000000000000000000000000000..065b7b4d386391ae247300b09bd6c249172ea039 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/dictionaries/statistics.definition.json @@ -0,0 +1,8 @@ +{ + "link_statistics": { + "en": "Show statistics" + }, + "link_statistics_metadata": { + "en": "Show statistics metadata" + } +} \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/dictionaries/statistics.translation.json b/vendor/simplesamlphp/simplesamlphp/modules/statistics/dictionaries/statistics.translation.json new file mode 100644 index 0000000000000000000000000000000000000000..7a4adb1eac0e76cc9c663a958a925be135ca316f --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/dictionaries/statistics.translation.json @@ -0,0 +1,14 @@ +{ + "link_statistics": { + "es": "Mostrar estadísticas", + "no": "Vis statistikker", + "nn": "Vis statistikkar", + "ca": "Mostra les estadístiques" + }, + "link_statistics_metadata": { + "es": "Mostrar metadatos de las estadísticas", + "no": "Vis metadata om statistikker", + "nn": "Vis metadata om statistikkar", + "ca": "Mostra les estadístiques de les metadades" + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/docs/statistics.md b/vendor/simplesamlphp/simplesamlphp/modules/statistics/docs/statistics.md new file mode 100644 index 0000000000000000000000000000000000000000..07d7e40c44f997347b688da3fb30a36e70a6d907 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/docs/statistics.md @@ -0,0 +1,129 @@ +The SimpleSAMLphp statistics module +=================================== + + +<!-- + This file is written in Markdown syntax. + For more information about how to use the Markdown syntax, read here: + http://daringfireball.net/projects/markdown/syntax +--> + + * Andreas Åkre Solberg <andreas.solberg@uninett.no> + + +## Configure your logs + +It's recommended to use syslog for logging, then a separate log level is +dedicated to statistics. You need to get all statistics log entries +in one log file. Here is how I do it in syslog.conf: + + # SimpleSAMLphp logging + local5.* /var/log/simplesamlphp.log + # Notice level is reserved for statistics only... + local5.=notice /var/log/simplesamlphp.stat + +Then make sure you have configured this correctly such that you +have one log file like this: + + # ls -la /var/log/simplesamlphp.stat + -rw-r--r-- 1 root root 76740 Nov 15 13:37 /var/log/simplesamlphp.stat + +With content that looks like this: + + # tail /var/log/simplesamlphp.stat + Nov 15 12:01:49 www1 simplesamlphp-foodle[31960]: 5 STAT [77013b4b6e] saml20-sp-SSO urn:mace:feide.no:services:no.feide.foodle sam.feide.no andreas@uninett.no + Nov 15 13:01:14 www1 simplesamlphp-openwiki[2247]: 5 STAT [50292b9d04] saml20-sp-SSO urn:mace:feide.no:services:no.feide.openwikicore sam.feide.no NA + Nov 15 13:16:39 www1 simplesamlphp-openwiki[2125]: 5 STAT [3493d5d87f] saml20-sp-SSO urn:mace:feide.no:services:no.feide.openwikicore sam.feide.no NA + Nov 15 13:37:27 www1 simplesamlphp-foodle[3146]: 5 STAT [77013b4b6e] AUTH-login-admin OK + +Here you can see that I collect statistics in one file for several installations. You could easily separate each instance of SimpleSAMLphp into separate files (your preference). + +## Configure the statistics module + +First enable the statistics module, as you enable any other module: + + cd modules/statistics + touch enable + +Then take the configuration template: + + cp modules/statistics/config-templates/*.php config/ + +Configure the path of the log file: + + 'inputfile' => '/var/log/simplesamlphp.stat', + +Make sure the stat dir is writable. SimpleSAMLphp will write data here: + + 'statdir' => '/var/lib/simplesamlphp/stats/', + +### Configuring the syntax of the logfile + +Syslog uses different date formats on different environments, so you need to do some manual tweaking to make sure that SimpleSAMLphp knows how to interpret the logs. + +There are three parameter values you need to make sure are correct. + + 'datestart' => 1, + 'datelength' => 15, + 'offsetspan' => 21, + +The first `datestart` is 1 when the date starts from the beginning of the line. The `datelength` parameter tells how many characters long the date is. + +The `offsetspan` parameter shows on which character the first column starts, such that the STAT keyword becomes column number 3. + +Use the `loganalyzer` script with the `--debug` parameter to debug whether your configuration is correct. If not, then it easy to see what is wrong, for example if the STAT keyword is not in column 3. + +Here is some example output: + + + $ cd modules/statistics/bin + $ ./loganalyzer.php --debug + Statistics directory : /var/lib/simplesamlphp/stats/ + Input file : /Users/andreas/Desktop/simplesamlphp.log + Offset : 4237200 + ---------------------------------------- + Log line: Feb 11 11:32:57 moria-app1 syslog_moria-app1[6630]: 5 STAT [2d41ee3f1e] AUTH-login-admin Failed + Date parse [Feb 11 11:32:57] to [Wed, 11 Feb 09 11:32:57 +0100] + Array + ( + [0] => moria-app1 + [1] => syslog_moria-app1[6630]: + [2] => 5 + [3] => STAT + [4] => [2d41ee3f1e] + [5] => AUTH-login-admin + [6] => Failed + ) + +In the debug output, please verify four things: + + 1. That the first field in the date parse line contains all the characters that are part of the timestamp, compared with the log line on the line above. + 2. Verify that the second field in the date parse line is correct: corresponding to the input timestamp. + 3. That the first `[0]` field contains all the characters from the first column. + 4. That column `[3]` is STAT. + + +### Setup cron + +You also should setup the cron module: + + cd modules/cron + touch enable + +### Alternative to using the cron module + +As an alternative to using the cron module you can run the +script `statistics/bin/loganalyzer.php` manually. + +## Presentation of the statistics + +At the Installation page there will be a link "show statistics", go there and if SimpleSAMLphp finds the statistics files in the `statdir` generated from cron or the script you will see statistics. Enjoy. + +Support +------- + +If you need help to make this work, or want to discuss SimpleSAMLphp with other users of the software, you are fortunate: Around SimpleSAMLphp there is a great Open source community, and you are welcome to join! The forums are open for you to ask questions, contribute answers other further questions, request improvements or contribute with code or plugins of your own. + +- [SimpleSAMLphp homepage](http://simplesamlphp.org) +- [List of all available SimpleSAMLphp documentation](http://simplesamlphp.org/docs/stable/) +- [Join the SimpleSAMLphp user's mailing list](http://simplesamlphp.org/lists) diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/hooks/hook_configpage.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/hooks/hook_configpage.php new file mode 100644 index 0000000000000000000000000000000000000000..36853ed2d1f986e979fced5601c7f01c9c2eada3 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/hooks/hook_configpage.php @@ -0,0 +1,20 @@ +<?php + +/** + * Hook to add the statistics module to the config page. + * + * @param \SimpleSAML\XHTML\Template &$template The template that we should alter in this hook. + * @return void + */ +function statistics_hook_configpage(\SimpleSAML\XHTML\Template &$template) +{ + $template->data['links']['statistics'] = [ + 'href' => SimpleSAML\Module::getModuleURL('statistics/showstats.php'), + 'text' => \SimpleSAML\Locale\Translate::noop('Show statistics'), + ]; + $template->data['links']['statisticsmeta'] = [ + 'href' => SimpleSAML\Module::getModuleURL('statistics/statmeta.php'), + 'text' => \SimpleSAML\Locale\Translate::noop('Show statistics metadata'), + ]; + $template->getLocalization()->addModuleDomain('statistics'); +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/hooks/hook_cron.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/hooks/hook_cron.php new file mode 100644 index 0000000000000000000000000000000000000000..8a22028ee0ff6c41fde3bd86c735a70a3af365ae --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/hooks/hook_cron.php @@ -0,0 +1,42 @@ +<?php + +/** + * Hook to run a cron job. + * + * @param array &$croninfo Output + * @return void + */ +function statistics_hook_cron(&$croninfo) +{ + assert(is_array($croninfo)); + assert(array_key_exists('summary', $croninfo)); + assert(array_key_exists('tag', $croninfo)); + + $statconfig = \SimpleSAML\Configuration::getConfig('module_statistics.php'); + + if (is_null($statconfig->getValue('cron_tag', null))) { + return; + } + if ($statconfig->getValue('cron_tag', null) !== $croninfo['tag']) { + return; + } + + $maxtime = $statconfig->getInteger('time_limit', null); + if ($maxtime) { + set_time_limit($maxtime); + } + + try { + $aggregator = new \SimpleSAML\Module\statistics\Aggregator(); + $results = $aggregator->aggregate(); + if (empty($results)) { + \SimpleSAML\Logger::notice('Output from statistics aggregator was empty.'); + } else { + $aggregator->store($results); + } + } catch (\Exception $e) { + $message = 'Loganalyzer threw exception: ' . $e->getMessage(); + \SimpleSAML\Logger::warning($message); + $croninfo['summary'][] = $message; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/hooks/hook_frontpage.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/hooks/hook_frontpage.php new file mode 100644 index 0000000000000000000000000000000000000000..268f06746c1126f7af74982804fd81f2475b642d --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/hooks/hook_frontpage.php @@ -0,0 +1,23 @@ +<?php + +/** + * Hook to add the modinfo module to the frontpage. + * + * @param array &$links The links on the frontpage, split into sections. + * @return void + */ +function statistics_hook_frontpage(&$links) +{ + assert(is_array($links)); + assert(array_key_exists('links', $links)); + + $links['config']['statistics'] = [ + 'href' => SimpleSAML\Module::getModuleURL('statistics/showstats.php'), + 'text' => '{statistics:statistics:link_statistics}', + ]; + $links['config']['statisticsmeta'] = [ + 'href' => SimpleSAML\Module::getModuleURL('statistics/statmeta.php'), + 'text' => '{statistics:statistics:link_statistics_metadata}', + 'shorttext' => ['en' => 'Statistics metadata', 'no' => 'Statistikk metadata'], + ]; +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/hooks/hook_sanitycheck.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/hooks/hook_sanitycheck.php new file mode 100644 index 0000000000000000000000000000000000000000..8450ffa49a61f54ca89cbbfe7171ac3dfdbd43a4 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/hooks/hook_sanitycheck.php @@ -0,0 +1,41 @@ +<?php + +/** + * Hook to do sanity checks + * + * @param array &$hookinfo hookinfo + * @return void + */ +function statistics_hook_sanitycheck(&$hookinfo) +{ + assert(is_array($hookinfo)); + assert(array_key_exists('errors', $hookinfo)); + assert(array_key_exists('info', $hookinfo)); + + try { + $statconfig = \SimpleSAML\Configuration::getConfig('module_statistics.php'); + } catch (Exception $e) { + $hookinfo['errors'][] = '[statistics] Could not get configuration: ' . $e->getMessage(); + return; + } + + $statdir = $statconfig->getValue('statdir'); + $inputfile = $statconfig->getValue('inputfile'); + + if (file_exists($statdir)) { + $hookinfo['info'][] = '[statistics] Statistics dir [' . $statdir . '] exists'; + if (is_writable($statdir)) { + $hookinfo['info'][] = '[statistics] Statistics dir [' . $statdir . '] is writable'; + } else { + $hookinfo['errors'][] = '[statistics] Statistics dir [' . $statdir . '] is not writable'; + } + } else { + $hookinfo['errors'][] = '[statistics] Statistics dir [' . $statdir . '] does not exist'; + } + + if (file_exists($inputfile)) { + $hookinfo['info'][] = '[statistics] Input file [' . $inputfile . '] exists'; + } else { + $hookinfo['errors'][] = '[statistics] Input file [' . $inputfile . '] does not exist'; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/AccessCheck.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/AccessCheck.php new file mode 100644 index 0000000000000000000000000000000000000000..fb2fbe0cdc3024f0a82e8001a257a662a58202c6 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/AccessCheck.php @@ -0,0 +1,95 @@ +<?php + +namespace SimpleSAML\Module\statistics; + +use SimpleSAML\Configuration; +use SimpleSAML\Logger; +use SimpleSAML\Utils\Auth; + +/** + * Class implementing the access checker function for the statistics module. + * + * @package SimpleSAMLphp + */ +class AccessCheck +{ + /** + * Check that the user has access to the statistics. + * If the user doesn't have access, send the user to the login page. + * + * @param \SimpleSAML\Configuration $statconfig + * @return void + * @throws \Exception + * @throws \SimpleSAML\Error\Exception + */ + public static function checkAccess(Configuration $statconfig) + { + $protected = $statconfig->getBoolean('protected', false); + $authsource = $statconfig->getString('auth', null); + $allowedusers = $statconfig->getValue('allowedUsers', null); + $useridattr = $statconfig->getString('useridattr', 'eduPersonPrincipalName'); + + $acl = $statconfig->getValue('acl', null); + if ($acl !== null && !is_string($acl) && !is_array($acl)) { + throw new \SimpleSAML\Error\Exception('Invalid value for \'acl\'-option. Should be an array or a string.'); + } + + if (!$protected) { + return; + } + + if (Auth::isAdmin()) { + // User logged in as admin. OK. + Logger::debug('Statistics auth - logged in as admin, access granted'); + return; + } + + if (!isset($authsource)) { + // If authsource is not defined, init admin login. + Auth::requireAdmin(); + } + + // We are using an authsource for login. + + $as = new \SimpleSAML\Auth\Simple($authsource); + $as->requireAuth(); + + // User logged in with auth source. + Logger::debug('Statistics auth - valid login with auth source [' . $authsource . ']'); + + // Retrieving attributes + $attributes = $as->getAttributes(); + + if (!empty($allowedusers)) { + // Check if userid exists + if (!isset($attributes[$useridattr][0])) { + throw new \Exception('User ID is missing'); + } + + // Check if userid is allowed access.. + if (in_array($attributes[$useridattr][0], $allowedusers, true)) { + Logger::debug( + 'Statistics auth - User granted access by user ID [' . $attributes[$useridattr][0] . ']' + ); + return; + } + Logger::debug( + 'Statistics auth - User denied access by user ID [' . $attributes[$useridattr][0] . ']' + ); + } else { + Logger::debug('Statistics auth - no allowedUsers list.'); + } + + if (!is_null($acl)) { + $acl = new \SimpleSAML\Module\core\ACL($acl); + if ($acl->allows($attributes)) { + Logger::debug('Statistics auth - allowed access by ACL.'); + return; + } + Logger::debug('Statistics auth - denied access by ACL.'); + } else { + Logger::debug('Statistics auth - no ACL configured.'); + } + throw new \SimpleSAML\Error\Exception('Access denied to the current user.'); + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Aggregator.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Aggregator.php new file mode 100644 index 0000000000000000000000000000000000000000..c69090d0bb3e54d72d901edd12bb4740f73889c8 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Aggregator.php @@ -0,0 +1,377 @@ +<?php + +namespace SimpleSAML\Module\statistics; + +use SimpleSAML\Configuration; + +/** + * @author Andreas Åkre Solberg <andreas.solberg@uninett.no> + * @package SimpleSAMLphp + */ +class Aggregator +{ + /** @var \SimpleSAML\Configuration */ + private $statconfig; + + /** @var string */ + private $statdir; + + /** @var string */ + private $inputfile; + + /** @var array */ + private $statrules; + + /** @var int */ + private $offset; + + /** @var array|null */ + private $metadata = null; + + /** @var bool */ + private $fromcmdline; + + /** @var int */ + private $starttime; + + /** @var array */ + private $timeres; + + + /** + * Constructor + * + * @param bool $fromcmdline + */ + public function __construct($fromcmdline = false) + { + $this->fromcmdline = $fromcmdline; + $this->statconfig = Configuration::getConfig('module_statistics.php'); + + $this->statdir = $this->statconfig->getValue('statdir'); + $this->inputfile = $this->statconfig->getValue('inputfile'); + $this->statrules = $this->statconfig->getValue('statrules'); + $this->timeres = $this->statconfig->getValue('timeres'); + $this->offset = $this->statconfig->getValue('offset', 0); + + $this->starttime = time(); + } + + + /** + * @return void + */ + public function dumpConfig() + { + echo 'Statistics directory : ' . $this->statdir . "\n"; + echo 'Input file : ' . $this->inputfile . "\n"; + echo 'Offset : ' . $this->offset . "\n"; + } + + + /** + * @return void + */ + public function debugInfo() + { + // 1024*1024=1048576 + echo 'Memory usage : ' . number_format(memory_get_usage() / 1048576, 2) . " MB\n"; + } + + + /** + * @return void + */ + public function loadMetadata() + { + $filename = $this->statdir . '/.stat.metadata'; + $metadata = null; + if (file_exists($filename)) { + $metadata = unserialize(file_get_contents($filename)); + } + $this->metadata = $metadata; + } + + + /** + * @return array|null + */ + public function getMetadata() + { + return $this->metadata; + } + + + /** + * @return void + */ + public function saveMetadata() + { + $this->metadata['time'] = time() - $this->starttime; + $this->metadata['memory'] = memory_get_usage(); + $this->metadata['lastrun'] = time(); + + $filename = $this->statdir . '/.stat.metadata'; + file_put_contents($filename, serialize($this->metadata), LOCK_EX); + } + + + /** + * @param bool $debug + * @return array + * @throws \Exception + */ + public function aggregate($debug = false) + { + $this->loadMetadata(); + + if (!is_dir($this->statdir)) { + throw new \Exception('Statistics module: output dir do not exists [' . $this->statdir . ']'); + } + + if (!file_exists($this->inputfile)) { + throw new \Exception('Statistics module: input file do not exists [' . $this->inputfile . ']'); + } + + $file = fopen($this->inputfile, 'r'); + + if ($file === false) { + throw new \Exception('Statistics module: unable to open file [' . $this->inputfile . ']'); + } + + $logparser = new LogParser( + $this->statconfig->getValue('datestart', 0), + $this->statconfig->getValue('datelength', 15), + $this->statconfig->getValue('offsetspan', 44) + ); + $datehandler = [ + 'default' => new DateHandler($this->offset), + 'month' => new DateHandlerMonth($this->offset), + ]; + + $notBefore = 0; + $lastRead = 0; + $lastlinehash = '-'; + + if (isset($this->metadata)) { + $notBefore = $this->metadata['notBefore']; + $lastlinehash = $this->metadata['lastlinehash']; + } + + $lastlogline = 'sdfsdf'; + $lastlineflip = false; + $results = []; + + $i = 0; + // Parse through log file, line by line + while (!feof($file)) { + $logline = fgets($file, 4096); + + // Continue if STAT is not found on line + if (!preg_match('/STAT/', $logline)) { + continue; + } + + $i++; + $lastlogline = $logline; + + // Parse log, and extract epoch time and rest of content. + $epoch = $logparser->parseEpoch($logline); + $content = $logparser->parseContent($logline); + $action = trim($content[5]); + + if ($this->fromcmdline && ($i % 10000) == 0) { + echo "Read line " . $i . "\n"; + } + + if ($debug) { + echo "----------------------------------------\n"; + echo 'Log line: ' . $logline . "\n"; + echo 'Date parse [' . substr($logline, 0, $this->statconfig->getValue('datelength', 15)) . + '] to [' . date(DATE_RFC822, $epoch) . ']' . "\n"; + /** @var string $ret */ + $ret = print_r($content, true); + echo htmlentities($ret); + if ($i >= 13) { + exit; + } + } + + if ($epoch > $lastRead) { + $lastRead = $epoch; + } + + if ($epoch === $notBefore) { + if (!$lastlineflip) { + if (sha1($logline) === $lastlinehash) { + $lastlineflip = true; + } + continue; + } + } + + if ($epoch < $notBefore) { + continue; + } + + // Iterate all the statrules from config. + foreach ($this->statrules as $rulename => $rule) { + $type = 'aggregate'; + + if (array_key_exists('type', $rule)) { + $type = $rule['type']; + } + + if ($type !== 'aggregate') { + continue; + } + + foreach ($this->timeres as $tres => $tresconfig) { + $dh = 'default'; + if (isset($tresconfig['customDateHandler'])) { + $dh = $tresconfig['customDateHandler']; + } + + $timeslot = $datehandler['default']->toSlot($epoch, $tresconfig['slot']); + $fileslot = $datehandler[$dh]->toSlot($epoch, $tresconfig['fileslot']); + + if (isset($rule['action']) && ($action !== $rule['action'])) { + continue; + } + + $difcol = self::getDifCol($content, $rule['col']); + + if (!isset($results[$rulename][$tres][$fileslot][$timeslot]['_'])) { + $results[$rulename][$tres][$fileslot][$timeslot]['_'] = 0; + } + if (!isset($results[$rulename][$tres][$fileslot][$timeslot][$difcol])) { + $results[$rulename][$tres][$fileslot][$timeslot][$difcol] = 0; + } + + $results[$rulename][$tres][$fileslot][$timeslot]['_']++; + $results[$rulename][$tres][$fileslot][$timeslot][$difcol]++; + } + } + } + $this->metadata['notBefore'] = $lastRead; + $this->metadata['lastline'] = $lastlogline; + $this->metadata['lastlinehash'] = sha1($lastlogline); + return $results; + } + + + /** + * @param array $content + * @param mixed $colrule + * @return string + */ + private static function getDifCol($content, $colrule) + { + if (is_int($colrule)) { + return trim($content[$colrule]); + } elseif (is_array($colrule)) { + $difcols = []; + foreach ($colrule as $cr) { + $difcols[] = trim($content[$cr]); + } + return join('|', $difcols); + } else { + return 'NA'; + } + } + + + /** + * @param mixed $previous + * @param array $newdata + * @return array + */ + private function cummulateData($previous, $newdata) + { + $dataset = []; + foreach (func_get_args() as $item) { + foreach ($item as $slot => $dataarray) { + if (!array_key_exists($slot, $dataset)) { + $dataset[$slot] = []; + } + foreach ($dataarray as $key => $data) { + if (!array_key_exists($key, $dataset[$slot])) { + $dataset[$slot][$key] = 0; + } + $dataset[$slot][$key] += $data; + } + } + } + return $dataset; + } + + + /** + * @param array $results + * @return void + */ + public function store($results) + { + $datehandler = [ + 'default' => new DateHandler($this->offset), + 'month' => new DateHandlerMonth($this->offset), + ]; + + // Iterate the first level of results, which is per rule, as defined in the config. + foreach ($results as $rulename => $timeresdata) { + // Iterate over time resolutions + foreach ($timeresdata as $tres => $resres) { + $dh = 'default'; + if (isset($this->timeres[$tres]['customDateHandler'])) { + $dh = $this->timeres[$tres]['customDateHandler']; + } + + $filenos = array_keys($resres); + $lastfile = $filenos[count($filenos) - 1]; + + // Iterate the second level of results, which is the fileslot. + foreach ($resres as $fileno => $fileres) { + // Slots that have data. + $slotlist = array_keys($fileres); + + // The last slot. + $maxslot = $slotlist[count($slotlist) - 1]; + + // Get start and end slot number within the file, based on the fileslot. + $start = (int) $datehandler['default']->toSlot( + $datehandler[$dh]->fromSlot($fileno, $this->timeres[$tres]['fileslot']), + $this->timeres[$tres]['slot'] + ); + $end = (int) $datehandler['default']->toSlot( + $datehandler[$dh]->fromSlot($fileno + 1, $this->timeres[$tres]['fileslot']), + $this->timeres[$tres]['slot'] + ); + + // Fill in missing entries and sort file results + $filledresult = []; + for ($slot = $start; $slot < $end; $slot++) { + if (array_key_exists($slot, $fileres)) { + $filledresult[$slot] = $fileres[$slot]; + } else { + if ($lastfile == $fileno && $slot > $maxslot) { + $filledresult[$slot] = ['_' => null]; + } else { + $filledresult[$slot] = ['_' => 0]; + } + } + } + + $filename = $this->statdir . '/' . $rulename . '-' . $tres . '-' . $fileno . '.stat'; + if (file_exists($filename)) { + $previousData = unserialize(file_get_contents($filename)); + $filledresult = $this->cummulateData($previousData, $filledresult); + } + + // store file + file_put_contents($filename, serialize($filledresult), LOCK_EX); + } + } + } + $this->saveMetadata(); + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/DateHandler.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/DateHandler.php new file mode 100644 index 0000000000000000000000000000000000000000..032ff4ce7c51b6ed59f05d84c421fa2a81429704 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/DateHandler.php @@ -0,0 +1,101 @@ +<?php + +namespace SimpleSAML\Module\statistics; + +/** + * @author Andreas Åkre Solberg <andreas.solberg@uninett.no> + * @package SimpleSAMLphp + */ +class DateHandler +{ + /** @var int */ + protected $offset; + + + /** + * Constructor + * + * @param int $offset Date offset + */ + public function __construct($offset) + { + $this->offset = $offset; + } + + + /** + * @param int $timestamp + * @return int + */ + protected function getDST($timestamp) + { + if (idate('I', $timestamp)) { + return 3600; + } + return 0; + } + + + /** + * @param int $epoch + * @param int $slotsize + * @return float + */ + public function toSlot($epoch, $slotsize) + { + $dst = $this->getDST($epoch); + return floor(($epoch + $this->offset + $dst) / $slotsize); + } + + + /** + * @param int $slot + * @param int $slotsize + * @return int + */ + public function fromSlot($slot, $slotsize) + { + $temp = $slot * $slotsize - $this->offset; + $dst = $this->getDST($temp); + return $slot * $slotsize - $this->offset - $dst; + } + + + /** + * @param int $epoch + * @param string $dateformat + * @return string + */ + public function prettyDateEpoch($epoch, $dateformat) + { + return date($dateformat, $epoch); + } + + + /** + * @param int $slot + * @param int $slotsize + * @param string $dateformat + * @return string + */ + public function prettyDateSlot($slot, $slotsize, $dateformat) + { + return $this->prettyDateEpoch($this->fromSlot($slot, $slotsize), $dateformat); + } + + + /** + * @param int $from + * @param int $to + * @param int $slotsize + * @param string $dateformat + * @return string + */ + public function prettyHeader($from, $to, $slotsize, $dateformat) + { + $text = $this->prettyDateSlot($from, $slotsize, $dateformat); + $text .= ' to '; + $text .= $this->prettyDateSlot($to, $slotsize, $dateformat); + return $text; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/DateHandlerMonth.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/DateHandlerMonth.php new file mode 100644 index 0000000000000000000000000000000000000000..f0168cc43a1ddbbe7c24ca273b75368e2754d9b4 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/DateHandlerMonth.php @@ -0,0 +1,62 @@ +<?php + +namespace SimpleSAML\Module\statistics; + +/** + * @author Andreas Åkre Solberg <andreas.solberg@uninett.no> + * @package SimpleSAMLphp + */ +class DateHandlerMonth extends DateHandler +{ + /** + * Constructor + * + * @param integer $offset Date offset + */ + public function __construct($offset) + { + $this->offset = $offset; + } + + + /** + * @param int $epoch + * @param int $slotsize + * @return int + */ + public function toSlot($epoch, $slotsize) + { + $dsttime = $this->getDST($epoch) + $epoch; + $parsed = getdate($dsttime); + $slot = (($parsed['year'] - 2000) * 12) + $parsed['mon'] - 1; + return $slot; + } + + + /** + * @param int $slot + * @param int $slotsize + * @return int + */ + public function fromSlot($slot, $slotsize) + { + $month = ($slot % 12); + $year = 2000 + intval(floor($slot / 12)); + return mktime(0, 0, 0, $month + 1, 1, $year); + } + + + /** + * @param int $from + * @param int $to + * @param int $slotsize + * @param string $dateformat + * @return string + */ + public function prettyHeader($from, $to, $slotsize, $dateformat) + { + $month = ($from % 12) + 1; + $year = 2000 + intval(floor($from / 12)); + return $year . '-' . $month; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Graph/GoogleCharts.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Graph/GoogleCharts.php new file mode 100644 index 0000000000000000000000000000000000000000..15d5223f915f81da7e6a3c047fc11ff79f274006 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Graph/GoogleCharts.php @@ -0,0 +1,196 @@ +<?php + +namespace SimpleSAML\Module\statistics\Graph; + +/** + * \SimpleSAML\Module\statistics\Graph\GoogleCharts will help you to create a Google Chart + * using the Google Charts API. + * + * @author Andreas Åkre Solberg <andreas.solberg@uninett.no> + * @package SimpleSAMLphp + */ +class GoogleCharts +{ + /** @var integer */ + private $x; + + /** @var integer */ + private $y; + + + /** + * Constructor. + * + * Takes dimension of graph as parameters. X and Y. + * + * @param integer $x X dimension. Default 800. + * @param integer $y Y dimension. Default 350. + */ + public function __construct($x = 800, $y = 350) + { + $this->x = $x; + $this->y = $y; + } + + + /** + * @param array $axis + * @return string + */ + private function encodeaxis(array $axis) + { + return join('|', $axis); + } + + /** + * t:10.0,58.0,95.0 + * @param array $datasets + * @return string + */ + private function encodedata(array $datasets) + { + $setstr = []; + foreach ($datasets as $dataset) { + $setstr[] = self::extEncode($dataset); + } + return 'e:' . join(',', $setstr); + } + + + /** + * @param array $values + * @return string + */ + public static function extEncode(array $values) // $max = 4095, $min = 0 + { + $extended_table = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-.'; + $chardata = ''; + $delta = 4095; + $size = strlen($extended_table); + + foreach ($values as $k => $v) { + if ($v >= 0 && $v <= 100) { + $first = substr($extended_table, intval(($delta * $v / 100) / $size), 1); + $second = substr($extended_table, intval(($delta * $v / 100) % $size), 1); + $chardata .= "$first$second"; + } else { + $chardata .= '__'; // Value out of max range; + } + } + return $chardata; + } + + + /** + * Generate a Google Charts URL which points to a generated image. + * More documentation on Google Charts here: + * http://code.google.com/apis/chart/ + * + * @param array $axis Axis + * @param array $axispos Axis positions + * @param array $datasets Datasets values + * @param array $maxes Max value. Will be the topmost value on the Y-axis. + * @return string + */ + public function show(array $axis, array $axispos, array $datasets, array $maxes) + { + $labeld = '&chxt=x,y' . '&chxr=0,0,1|1,0,' . $maxes[0]; + if (count($datasets) > 1) { + if (count($datasets) !== count($maxes)) { + throw new \Exception('Incorrect number of max calculations for graph plotting.'); + } + $labeld = '&chxt=x,y,r' . '&chxr=0,0,1|1,0,' . $maxes[0] . '|2,0,' . $maxes[1]; + } + + $url = 'https://chart.apis.google.com/chart?' . + // Dimension of graph. Default is 800x350 + 'chs=' . $this->x . 'x' . $this->y . + + // Dateset values + '&chd=' . $this->encodedata($datasets) . + + // Fill area... + '&chco=ff5c00,cca600' . + '&chls=1,1,0|1,6,3' . + + // chart type is linechart + '&cht=lc' . + $labeld . + '&chxl=0:|' . $this->encodeaxis($axis) . #.$'|1:||top' . + '&chxp=0,' . join(',', $axispos) . + '&chg=' . (2400 / (count($datasets[0]) - 1)) . ',-1,3,3'; // lines + + return $url; + } + + + /** + * @param array $axis + * @param array $datasets + * @return string + */ + public function showPie(array $axis, array $datasets) + { + $url = 'https://chart.apis.google.com/chart?' . + + // Dimension of graph. Default is 800x350 + 'chs=' . $this->x . 'x' . $this->y . + + // Dateset values. + '&chd=' . $this->encodedata([$datasets]) . + + // chart type is linechart + '&cht=p' . + + '&chl=' . $this->encodeaxis($axis); + + return $url; + } + + + /** + * Takes a input value, and generates a value that suits better as a max + * value on the Y-axis. In example 37.6 will not make a good max value, instead + * it will return 40. It will always return an equal or larger number than it gets + * as input. + * + * Here is some test code: + * <code> + * $foo = array( + * 0, 2, 2.3, 2.6, 6, 10, 15, 98, 198, 256, 487, 563, 763, 801, 899, 999, 987, 198234.485, 283746 + * ); + * foreach ($foo as $f) { + * echo '<p>'.$f.' => '.\SimpleSAML\Module\statistics\Graph\GoogleCharts::roof($f); + * } + * </code> + * + * @param int $max Input value. + * @return int + */ + public static function roof($max) + { + $mul = 1; + + if ($max < 1) { + return 1; + } + + $t = intval(ceil($max)); + while ($t > 100) { + $t /= 10; + $mul *= 10; + } + + $maxGridLines = 10; + $candidates = [1, 2, 5, 10, 20, 25, 50, 100]; + + foreach ($candidates as $c) { + if ($t / $c < $maxGridLines) { + $tick_y = $c * $mul; + $target_top = intval(ceil($max / $tick_y) * $tick_y); + return $target_top; + } + } + return 1; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/LogCleaner.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/LogCleaner.php new file mode 100644 index 0000000000000000000000000000000000000000..04ce2da4074aac7b02b531ce0457dcc6f9a4e76e --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/LogCleaner.php @@ -0,0 +1,205 @@ +<?php + +namespace SimpleSAML\Module\statistics; + +use SimpleSAML\Configuration; + +/** + * @author Andreas Åkre Solberg <andreas.solberg@uninett.no> + * @package SimpleSAMLphp + */ +class LogCleaner +{ + /** @var \SimpleSAML\Configuration */ + private $statconfig; + + /** @var string */ + private $statdir; + + /** @var string */ + private $inputfile; + + /** @var array */ + private $statrules; + + /** @var int */ + private $offset; + + + /** + * Constructor + * + * @param string|null $inputfile + */ + public function __construct($inputfile = null) + { + $this->statconfig = Configuration::getConfig('module_statistics.php'); + + $this->statdir = $this->statconfig->getValue('statdir'); + $this->inputfile = $this->statconfig->getValue('inputfile'); + $this->statrules = $this->statconfig->getValue('statrules'); + $this->offset = $this->statconfig->getValue('offset', 0); + + if (isset($inputfile)) { + $this->inputfile = $inputfile; + } + } + + + /** + * @return void + */ + public function dumpConfig() + { + echo 'Statistics directory : ' . $this->statdir . "\n"; + echo 'Input file : ' . $this->inputfile . "\n"; + echo 'Offset : ' . $this->offset . "\n"; + } + + + /** + * @param bool $debug + * @return array + * @throws \Exception + */ + public function clean($debug = false) + { + if (!is_dir($this->statdir)) { + throw new \Exception('Statistics module: output dir do not exists [' . $this->statdir . ']'); + } + + if (!file_exists($this->inputfile)) { + throw new \Exception('Statistics module: input file do not exists [' . $this->inputfile . ']'); + } + + $file = fopen($this->inputfile, 'r'); + + $logparser = new LogParser( + $this->statconfig->getValue('datestart', 0), + $this->statconfig->getValue('datelength', 15), + $this->statconfig->getValue('offsetspan', 44) + ); + + $sessioncounter = []; + + $i = 0; + // Parse through log file, line by line + while (!feof($file)) { + $logline = fgets($file, 4096); + + // Continue if STAT is not found on line + if (!preg_match('/STAT/', $logline)) { + continue; + } + $i++; + + // Parse log, and extract epoch time and rest of content. + $epoch = $logparser->parseEpoch($logline); + $content = $logparser->parseContent($logline); + + if (($i % 10000) == 0) { + echo "Read line " . $i . "\n"; + } + + $trackid = $content[4]; + + if (!isset($sessioncounter[$trackid])) { + $sessioncounter[$trackid] = 0; + } + $sessioncounter[$trackid]++; + + if ($debug) { + echo "----------------------------------------\n"; + echo 'Log line: ' . $logline . "\n"; + echo 'Date parse [' . substr($logline, 0, $this->statconfig->getValue('datelength', 15)) . + '] to [' . date(DATE_RFC822, $epoch) . ']' . "\n"; + /** @var string $ret */ + $ret = print_r($content, true); + echo htmlentities($ret); + if ($i >= 13) { + exit; + } + } + } + + $histogram = []; + foreach ($sessioncounter as $trackid => $sc) { + if (!isset($histogram[$sc])) { + $histogram[$sc] = 0; + } + $histogram[$sc]++; + } + ksort($histogram); + + $todelete = []; + foreach ($sessioncounter as $trackid => $sc) { + if ($sc > 200) { + $todelete[] = $trackid; + } + } + + return $todelete; + } + + + /** + * @param array $todelete + * @param string $outputfile + * @return void + * @throws \Exceeption + */ + public function store(array $todelete, $outputfile) + { + echo "Preparing to delete [" . count($todelete) . "] trackids\n"; + + if (!is_dir($this->statdir)) { + throw new \Exception('Statistics module: output dir do not exists [' . $this->statdir . ']'); + } + + if (!file_exists($this->inputfile)) { + throw new \Exception('Statistics module: input file do not exists [' . $this->inputfile . ']'); + } + + $file = fopen($this->inputfile, 'r'); + + // Open the output file in a way that guarantees that we will not overwrite a random file. + if (file_exists($outputfile)) { + // Delete existing output file. + unlink($outputfile); + } + $outfile = fopen($outputfile, 'x'); // Create the output file + + $logparser = new LogParser( + $this->statconfig->getValue('datestart', 0), + $this->statconfig->getValue('datelength', 15), + $this->statconfig->getValue('offsetspan', 44) + ); + + $i = 0; + // Parse through log file, line by line + while (!feof($file)) { + $logline = fgets($file, 4096); + + // Continue if STAT is not found on line. + if (!preg_match('/STAT/', $logline)) { + continue; + } + $i++; + + $content = $logparser->parseContent($logline); + + if (($i % 10000) == 0) { + echo "Read line " . $i . "\n"; + } + + $trackid = $content[4]; + if (in_array($trackid, $todelete, true)) { + continue; + } + + fputs($outfile, $logline); + } + fclose($file); + fclose($outfile); + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/LogParser.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/LogParser.php new file mode 100644 index 0000000000000000000000000000000000000000..aeb4fa646c83ce6605e5720315d52993f2759820 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/LogParser.php @@ -0,0 +1,73 @@ +<?php + +namespace SimpleSAML\Module\statistics; + +/** + * @author Andreas Åkre Solberg <andreas.solberg@uninett.no> + * @package SimpleSAMLphp + */ +class LogParser +{ + /** @var integer */ + private $datestart; + + /** @var integer */ + private $datelength; + + /** @var integer */ + private $offset; + + + /** + * Constructor + * + * @param integer $datestart At which char is the date starting + * @param integer $datelength How many characters is the date (on the b + * @param integer $offset At which char is the rest of the entries starting + */ + public function __construct($datestart, $datelength, $offset) + { + $this->datestart = $datestart; + $this->datelength = $datelength; + $this->offset = $offset; + } + + + /** + * @param string $line + * + * @return integer + */ + public function parseEpoch($line) + { + $epoch = strtotime(substr($line, 0, $this->datelength)); + if ($epoch > time() + 2678400) { // 60 * 60 * 24 * 31 = 2678400 + /** + * More than a month in the future - probably caused by + * the log files missing the year. + * We will therefore subtrackt one year. + */ + $hour = intval(gmdate('H', $epoch)); + $minute = intval(gmdate('i', $epoch)); + $second = intval(gmdate('s', $epoch)); + $month = intval(gmdate('n', $epoch)); + $day = intval(gmdate('j', $epoch)); + $year = intval(gmdate('Y', $epoch)) - 1; + $epoch = gmmktime($hour, $minute, $second, $month, $day, $year); + } + return $epoch; + } + + + /** + * @param string $line + * + * @return array + */ + public function parseContent($line) + { + $contentstr = substr($line, $this->offset); + $content = explode(' ', $contentstr); + return $content; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/RatioDataset.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/RatioDataset.php new file mode 100644 index 0000000000000000000000000000000000000000..810dfcd53676d4b0d840dc9bb1edccfb1f7d5955 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/RatioDataset.php @@ -0,0 +1,122 @@ +<?php + +namespace SimpleSAML\Module\statistics; + +use SimpleSAML\Configuration; + +/** + * @author Andreas Åkre Solberg <andreas.solberg@uninett.no> + * @package SimpleSAMLphp + */ +class RatioDataset extends StatDataset +{ + /** + * Constructor + * + * @param \SimpleSAML\Configuration $statconfig + * @param \SimpleSAML\Configuration $ruleconfig + * @param string $ruleid + * @param string $timeres + * @param int $fileslot + */ + public function __construct(Configuration $statconfig, Configuration $ruleconfig, $ruleid, $timeres, $fileslot) + { + parent::__construct($statconfig, $ruleconfig, $ruleid, $timeres, $fileslot); + } + + + /** + * @return void + */ + public function aggregateSummary() + { + /** + * Aggregate summary table from dataset. To be used in the table view. + */ + $this->summary = []; + $noofvalues = []; + foreach ($this->results as $slot => $res) { + foreach ($res as $key => $value) { + if (array_key_exists($key, $this->summary)) { + $this->summary[$key] += $value; + if ($value > 0) { + $noofvalues[$key]++; + } + } else { + $this->summary[$key] = $value; + if ($value > 0) { + $noofvalues[$key] = 1; + } else { + $noofvalues[$key] = 0; + } + } + } + } + + foreach ($this->summary as $key => $val) { + $this->summary[$key] = $this->divide($this->summary[$key], $noofvalues[$key]); + } + + asort($this->summary); + $this->summary = array_reverse($this->summary, true); + } + + + /** + * @param string $k + * @param array $a + * @return int + */ + private function ag($k, array $a) + { + if (array_key_exists($k, $a)) { + return $a[$k]; + } + return 0; + } + + + /** + * @param int $v1 + * @param int $v2 + * @return int|float + */ + private function divide($v1, $v2) + { + if ($v2 == 0) { + return 0; + } + return ($v1 / $v2); + } + + + /** + * @param array $result1 + * @param array $result2 + * @return array + */ + public function combine(array $result1, array $result2) + { + $combined = []; + + foreach ($result2 as $tick => $val) { + $combined[$tick] = []; + foreach ($val as $index => $num) { + $combined[$tick][$index] = $this->divide( + $this->ag($index, $result1[$tick]), + $this->ag($index, $result2[$tick]) + ); + } + } + return $combined; + } + + + /** + * @return array + */ + public function getPieData() + { + return []; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Ruleset.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Ruleset.php new file mode 100644 index 0000000000000000000000000000000000000000..d392fdacf262b3b4e5e76d3517faa818ae3b379d --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Ruleset.php @@ -0,0 +1,137 @@ +<?php + +namespace SimpleSAML\Module\statistics; + +use SimpleSAML\Configuration; + +/** + * @author Andreas Åkre Solberg <andreas.solberg@uninett.no> + * @package SimpleSAMLphp + */ +class Ruleset +{ + /** \SimpleSAML\Configuration */ + private $statconfig; + + /** @var array */ + private $availrulenames; + + /** @var array */ + private $availrules; + + /** @var array */ + private $available; + + + /** + * Constructor + * + * @param \SimpleSAML\Configuration $statconfig + */ + public function __construct(Configuration $statconfig) + { + $this->statconfig = $statconfig; + $this->init(); + } + + + /** + * @return void + */ + private function init() + { + $statdir = $this->statconfig->getValue('statdir'); + $statrules = $this->statconfig->getValue('statrules'); + $timeres = $this->statconfig->getValue('timeres'); + + /* + * Walk through file lists, and get available [rule][fileslot]... + */ + if (!is_dir($statdir)) { + throw new \Exception('Statisics output directory [' . $statdir . '] does not exist.'); + } + $filelist = scandir($statdir); + $this->available = []; + foreach ($filelist as $file) { + if (preg_match('/([a-z0-9_]+)-([a-z0-9_]+)-([0-9]+)\.stat/', $file, $matches)) { + if (array_key_exists($matches[1], $statrules)) { + if (array_key_exists($matches[2], $timeres)) { + $this->available[$matches[1]][$matches[2]][] = $matches[3]; + } + } + } + } + if (empty($this->available)) { + throw new \Exception('No aggregated statistics files found in [' . $statdir . ']'); + } + + /** + * Create array with information about available rules.. + */ + $this->availrules = array_keys($statrules); + $available_rules = []; + foreach ($this->availrules as $key) { + $available_rules[$key] = ['name' => $statrules[$key]['name'], 'descr' => $statrules[$key]['descr']]; + } + $this->availrulenames = $available_rules; + } + + + /** + * @return array + */ + public function availableRules() + { + return $this->availrules; + } + + + /** + * @return array + */ + public function availableRulesNames() + { + return $this->availrulenames; + } + + + /** + * Resolve which rule is selected. Taking user preference and checks if it exists. + * + * @param string|null $preferRule + * @return string|null + */ + private function resolveSelectedRule($preferRule = null) + { + $rule = $this->statconfig->getString('default', $this->availrules[0]); + if (!empty($preferRule)) { + if (in_array($preferRule, $this->availrules, true)) { + $rule = $preferRule; + } + } + return $rule; + } + + + /** + * @param string|null $preferRule + * @return \SimpleSAML\Module\statistics\Statistics\Rulesets\BaseRule + */ + public function getRule($preferRule = null) + { + $rule = $this->resolveSelectedRule($preferRule); + $statrulesConfig = $this->statconfig->getConfigItem('statrules'); + $statruleConfig = $statrulesConfig->getConfigItem($rule); + + $presenterClass = \SimpleSAML\Module::resolveClass( + $statruleConfig->getValue('presenter', 'statistics:BaseRule'), + 'Statistics\Rulesets' + ); + + /** @psalm-suppress InvalidStringClass */ + $statrule = new $presenterClass($this->statconfig, $statruleConfig, $rule, $this->available); + + /** @var \SimpleSAML\Module\statistics\Statistics\Rulesets\BaseRule $statrule */ + return $statrule; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/StatDataset.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/StatDataset.php new file mode 100644 index 0000000000000000000000000000000000000000..1351aa3a3bac395c9d6fd47f1231ae78655d396f --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/StatDataset.php @@ -0,0 +1,422 @@ +<?php + +namespace SimpleSAML\Module\statistics; + +use SimpleSAML\Configuration; +use SimpleSAML\Module; +use SimpleSAML\Utils\Arrays; +use SimpleSAML\XHTML\Template; + +/** + * @author Andreas Åkre Solberg <andreas.solberg@uninett.no> + * @package SimpleSAMLphp + */ +class StatDataset +{ + /** @var \SimpleSAML\Configuration */ + protected $statconfig; + + /** @var \SimpleSAML\Configuration */ + protected $ruleconfig; + + /** @var \SimpleSAML\Configuration */ + protected $timeresconfig; + + /** @var string */ + protected $ruleid; + + /** @var int */ + protected $fileslot; + + /** @var string */ + protected $timeres; + + /** @var string */ + protected $delimiter; + + /** @var array */ + protected $results; + + /** @var array */ + protected $summary; + + /** @var int */ + protected $max; + + /** @var \SimpleSAML\Module\statistics\DateHandler */ + protected $datehandlerFile; + + /** @var \SimpleSAML\Module\statistics\DateHandler */ + protected $datehandlerTick; + + + /** + * Constructor + * + * @param \SimpleSAML\Configuration $statconfig + * @param \SimpleSAML\Configuration $ruleconfig + * @param string $ruleid + * @param string $timeres + * @param int $fileslot + */ + public function __construct(Configuration $statconfig, Configuration $ruleconfig, $ruleid, $timeres, $fileslot) + { + $this->statconfig = $statconfig; + $this->ruleconfig = $ruleconfig; + + $timeresconfigs = $statconfig->getConfigItem('timeres'); + $this->timeresconfig = $timeresconfigs->getConfigItem($timeres); + + $this->ruleid = $ruleid; + $this->fileslot = $fileslot; + $this->timeres = $timeres; + + $this->delimiter = '_'; + $this->max = 0; + $this->results = []; + $this->summary = []; + + $this->datehandlerTick = new DateHandler($this->statconfig->getValue('offset', 0)); + if ($this->timeresconfig->getValue('customDateHandler', 'default') === 'month') { + $this->datehandlerFile = new DateHandlerMonth(0); + } else { + $this->datehandlerFile = $this->datehandlerTick; + } + + $this->loadData(); + } + + + /** + * @return int + */ + public function getFileSlot() + { + return $this->fileslot; + } + + + /** + * @return string + */ + public function getTimeRes() + { + return $this->timeres; + } + + + /** + * @param string $delimiter + * @return void + */ + public function setDelimiter($delimiter = '_') + { + if (empty($delimiter)) { + $delimiter = '_'; + } + $this->delimiter = $delimiter; + } + + + /** + * @return string|null + */ + public function getDelimiter() + { + if ($this->delimiter === '_') { + return null; + } + return $this->delimiter; + } + + + /** + * @return void + */ + public function calculateMax() + { + $maxvalue = 0; + foreach ($this->results as $slot => &$res) { + if (!array_key_exists($this->delimiter, $res)) { + $res[$this->delimiter] = 0; + } + $maxvalue = max($res[$this->delimiter], $maxvalue); + } + $this->max = Graph\GoogleCharts::roof($maxvalue); + } + + + /** + * @return array + */ + public function getDebugData() + { + $debugdata = []; + + $slotsize = $this->timeresconfig->getValue('slot'); + $dateformat_intra = $this->timeresconfig->getValue('dateformat-intra'); + + foreach ($this->results as $slot => &$res) { + $debugdata[$slot] = [ + $this->datehandlerTick->prettyDateSlot($slot, $slotsize, $dateformat_intra), + $res[$this->delimiter] + ]; + } + return $debugdata; + } + + + /** + * @return void + */ + public function aggregateSummary() + { + // aggregate summary table from dataset. To be used in the table view + $this->summary = []; + foreach ($this->results as $slot => $res) { + foreach ($res as $key => $value) { + if (array_key_exists($key, $this->summary)) { + $this->summary[$key] += $value; + } else { + $this->summary[$key] = $value; + } + } + } + asort($this->summary); + $this->summary = array_reverse($this->summary, true); + } + + + /** + * @return array + */ + public function getTopDelimiters() + { + // create a list of delimiter keys that has the highest total summary in this period + $topdelimiters = []; + $maxdelimiters = 4; + $i = 0; + foreach ($this->summary as $key => $value) { + if ($key !== '_') { + $topdelimiters[] = $key; + } + if ($i++ >= $maxdelimiters) { + break; + } + } + return $topdelimiters; + } + + + /** + * @return array + */ + public function availDelimiters() + { + $availDelimiters = []; + foreach ($this->summary as $key => $value) { + $availDelimiters[$key] = 1; + } + return array_keys($availDelimiters); + } + + + /** + * @return array + */ + public function getPieData() + { + $piedata = []; + $sum = 0; + $topdelimiters = $this->getTopDelimiters(); + + foreach ($topdelimiters as $td) { + $sum += $this->summary[$td]; + $piedata[] = number_format(100 * $this->summary[$td] / $this->summary['_'], 2); + } + $piedata[] = number_format(100 - 100 * ($sum / $this->summary['_']), 2); + return $piedata; + } + + + /** + * @return int + */ + public function getMax() + { + return $this->max; + } + + + /** + * @return array + */ + public function getSummary() + { + return $this->summary; + } + + + /** + * @return array + */ + public function getResults() + { + return $this->results; + } + + + /** + * @return array + */ + public function getAxis() + { + $slotsize = $this->timeresconfig->getValue('slot'); + $dateformat_intra = $this->timeresconfig->getValue('dateformat-intra'); + $axislabelint = $this->timeresconfig->getValue('axislabelint'); + + $axis = []; + $axispos = []; + $xentries = count($this->results); + $lastslot = 0; + $i = 0; + + foreach ($this->results as $slot => $res) { + $slot = intval($slot); + + // check if there should be an axis here... + if ($slot % $axislabelint == 0) { + $axis[] = $this->datehandlerTick->prettyDateSlot($slot, $slotsize, $dateformat_intra); + $axispos[] = (($i) / ($xentries - 1)); + } + + $lastslot = $slot; + $i++; + } + + $axis[] = $this->datehandlerTick->prettyDateSlot($lastslot + 1, $slotsize, $dateformat_intra); + + return ['axis' => $axis, 'axispos' => $axispos]; + } + + + /** + * Walk through dataset to get percent values from max into dataset[]. + * @return array + */ + public function getPercentValues() + { + $i = 0; + $dataset = []; + foreach ($this->results as $slot => $res) { + if (array_key_exists($this->delimiter, $res)) { + if ($res[$this->delimiter] === null) { + $dataset[] = -1; + } else { + $dataset[] = number_format(100 * $res[$this->delimiter] / $this->max, 2); + } + } else { + $dataset[] = '0'; + } + $i++; + } + + return $dataset; + } + + + /** + * @return array + * @throws \Exception + */ + public function getDelimiterPresentation() + { + $config = Configuration::getInstance(); + $t = new Template($config, 'statistics:statistics.tpl.php'); + + $availdelimiters = $this->availDelimiters(); + + // create a delimiter presentation filter for this rule... + if ($this->ruleconfig->hasValue('fieldPresentation')) { + $fieldpresConfig = $this->ruleconfig->getConfigItem('fieldPresentation'); + $classname = Module::resolveClass( + $fieldpresConfig->getValue('class'), + 'Statistics\FieldPresentation' + ); + if (!class_exists($classname)) { + throw new \Exception('Could not find field presentation plugin [' . $classname . ']: No class found'); + } + $presentationHandler = new $classname($availdelimiters, $fieldpresConfig->getValue('config'), $t); + + return $presentationHandler->getPresentation(); + } + + return []; + } + + + /** + * @return array + */ + public function getDelimiterPresentationPie() + { + $topdelimiters = $this->getTopDelimiters(); + $delimiterPresentation = $this->getDelimiterPresentation(); + + $pieaxis = []; + foreach ($topdelimiters as $key) { + $keyName = $key; + if (array_key_exists($key, $delimiterPresentation)) { + $keyName = $delimiterPresentation[$key]; + } + $pieaxis[] = $keyName; + } + $pieaxis[] = 'Others'; + return $pieaxis; + } + + + /** + * @return void + */ + public function loadData() + { + $statdir = $this->statconfig->getValue('statdir'); + $resarray = []; + $rules = Arrays::arrayize($this->ruleid); + foreach ($rules as $rule) { + // Get file and extract results. + $resultFileName = $statdir . '/' . $rule . '-' . $this->timeres . '-' . $this->fileslot . '.stat'; + if (!file_exists($resultFileName)) { + throw new \Exception('Aggregated statitics file [' . $resultFileName . '] not found.'); + } + if (!is_readable($resultFileName)) { + throw new \Exception('Could not read statitics file [' . $resultFileName . ']. Bad file permissions?'); + } + $resultfile = file_get_contents($resultFileName); + $newres = unserialize($resultfile); + if (empty($newres)) { + throw new \Exception('Aggregated statistics in file [' . $resultFileName . '] was empty.'); + } + $resarray[] = $newres; + } + + $combined = $resarray[0]; + $count = count($resarray); + if ($count > 1) { + for ($i = 1; $i < $count; $i++) { + $combined = $this->combine($combined, $resarray[$i]); + } + } + $this->results = $combined; + } + + + /** + * @return array + */ + public function combine(array $combined, array $resarray) + { + return array_merge($combined, $resarray); + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/FieldPresentation/Base.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/FieldPresentation/Base.php new file mode 100644 index 0000000000000000000000000000000000000000..cb102787d205a2e7e0ddb3293ae6d57c5769d5c8 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/FieldPresentation/Base.php @@ -0,0 +1,41 @@ +<?php + +namespace SimpleSAML\Module\statistics\Statistics\FieldPresentation; + +class Base +{ + /** @var array */ + protected $fields; + + /** @var \SimpleSAML\XHTML\Template */ + protected $template; + + /** @var \SimpleSAML\Locale\Translate */ + protected $translator; + + /** @var string */ + protected $config; + + + /** + * @param array $fields + * @param string $config + * @param \SimpleSAML\XHTML\Template $template + */ + public function __construct(array $fields, $config, $template) + { + $this->config = $config; + $this->fields = $fields; + $this->template = $template; + $this->translator = $template->getTranslator(); + } + + + /** + * @return array + */ + public function getPresentation() + { + return ['_' => 'Total']; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/FieldPresentation/Entity.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/FieldPresentation/Entity.php new file mode 100644 index 0000000000000000000000000000000000000000..e8841c6eef8d15128ae5ffd1d3f69135b73fd0f9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/FieldPresentation/Entity.php @@ -0,0 +1,27 @@ +<?php + +namespace SimpleSAML\Module\statistics\Statistics\FieldPresentation; + +use SimpleSAML\Metadata\MetaDataStorageHandler; + +class Entity extends Base +{ + /** + * @return array + */ + public function getPresentation() + { + $mh = MetaDataStorageHandler::getMetadataHandler(); + $metadata = $mh->getList($this->config); + + $translation = ['_' => 'All services']; + foreach ($this->fields as $field) { + if (array_key_exists($field, $metadata)) { + if (array_key_exists('name', $metadata[$field])) { + $translation[$field] = $this->translator->t($metadata[$field]['name']); + } + } + } + return $translation; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/Rulesets/BaseRule.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/Rulesets/BaseRule.php new file mode 100644 index 0000000000000000000000000000000000000000..e6eeb77983dd137ead2d075b74a5ed8e96e0f53e --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/Rulesets/BaseRule.php @@ -0,0 +1,184 @@ +<?php + +namespace SimpleSAML\Module\statistics\Statistics\Rulesets; + +use SimpleSAML\Configuration; +use SimpleSAML\Module\statistics\DateHandler; +use SimpleSAML\Module\statistics\DateHandlerMonth; +use SimpleSAML\Module\statistics\StatDataset; + +/** + * @author Andreas Åkre Solberg <andreas.solberg@uninett.no> + * @package SimpleSAMLphp + */ +class BaseRule +{ + /** @var \SimpleSAML\Configuration */ + protected $statconfig; + + /** @var \SimpleSAML\Configuration */ + protected $ruleconfig; + + /** @var string */ + protected $ruleid = ''; + + /** @var array */ + protected $available = []; + + + /** + * Constructor + * + * @param \SimpleSAML\Configuration $statconfig + * @param \SimpleSAML\Configuration $ruleconfig + * @param string $ruleid + * @param array $available + */ + public function __construct(Configuration $statconfig, Configuration $ruleconfig, $ruleid, array $available) + { + $this->statconfig = $statconfig; + $this->ruleconfig = $ruleconfig; + $this->ruleid = $ruleid; + + if (array_key_exists($ruleid, $available)) { + $this->available = $available[$ruleid]; + } + } + + + /** + * @return string + */ + public function getRuleID() + { + return $this->ruleid; + } + + + /** + * @return array + */ + public function availableTimeRes() + { + $timeresConfigs = $this->statconfig->getValue('timeres'); + $available_times = []; + foreach ($timeresConfigs as $tres => $tresconfig) { + if (array_key_exists($tres, $this->available)) { + $available_times[$tres] = $tresconfig['name']; + } + } + return $available_times; + } + + + /** + * @param string $timeres + * @return array + */ + public function availableFileSlots($timeres) + { + $timeresConfigs = $this->statconfig->getValue('timeres'); + $timeresConfig = $timeresConfigs[$timeres]; + + if (isset($timeresConfig['customDateHandler']) && $timeresConfig['customDateHandler'] == 'month') { + $datehandler = new DateHandlerMonth(0); + } else { + $datehandler = new DateHandler($this->statconfig->getValue('offset', 0)); + } + + /* + * Get list of avaiable times in current file (rule) + */ + $available_times = []; + foreach ($this->available[$timeres] as $slot) { + $available_times[$slot] = $datehandler->prettyHeader( + $slot, + $slot + 1, + $timeresConfig['fileslot'], + $timeresConfig['dateformat-period'] + ); + } + return $available_times; + } + + + /** + * @param string $preferTimeRes + * @return string + */ + protected function resolveTimeRes($preferTimeRes) + { + $timeresavailable = array_keys($this->available); + $timeres = $timeresavailable[0]; + + // Then check if the user have provided one that is valid + if (in_array($preferTimeRes, $timeresavailable, true)) { + $timeres = $preferTimeRes; + } + return $timeres; + } + + + /** + * @param string $timeres + * @param string $preferTime + * @return int + */ + protected function resolveFileSlot($timeres, $preferTime) + { + // Get which time (fileslot) to use.. First get a default, which is the most recent one. + $fileslot = $this->available[$timeres][count($this->available[$timeres]) - 1]; + // Then check if the user have provided one. + if (in_array($preferTime, $this->available[$timeres], true)) { + $fileslot = $preferTime; + } + return $fileslot; + } + + + /** + * @param string $timeres + * @param string $preferTime + * @return array + */ + public function getTimeNavigation($timeres, $preferTime) + { + $fileslot = $this->resolveFileSlot($timeres, $preferTime); + + // Extract previous and next time slots... + $available_times_prev = null; + $available_times_next = null; + + $timeslots = array_values($this->available[$timeres]); + sort($timeslots, SORT_NUMERIC); + $timeslotindex = array_flip($timeslots); + + if ($timeslotindex[$fileslot] > 0) { + $available_times_prev = $timeslots[$timeslotindex[$fileslot] - 1]; + } + if ($timeslotindex[$fileslot] < (count($timeslotindex) - 1)) { + $available_times_next = $timeslots[$timeslotindex[$fileslot] + 1]; + } + return ['prev' => $available_times_prev, 'next' => $available_times_next]; + } + + + /** + * @param string $preferTimeRes + * @param string $preferTime + * @return \SimpleSAML\Module\statistics\StatDataset + */ + public function getDataSet($preferTimeRes, $preferTime) + { + $timeres = $this->resolveTimeRes($preferTimeRes); + $fileslot = $this->resolveFileSlot($timeres, $preferTime); + $dataset = new StatDataset( + $this->statconfig, + $this->ruleconfig, + $this->ruleid, + $timeres, + $fileslot + ); + return $dataset; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/Rulesets/Ratio.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/Rulesets/Ratio.php new file mode 100644 index 0000000000000000000000000000000000000000..492064331f1be01972dcb8f5bfa83b6f53ec3974 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/Statistics/Rulesets/Ratio.php @@ -0,0 +1,117 @@ +<?php + +namespace SimpleSAML\Module\statistics\Statistics\Rulesets; + +use SimpleSAML\Configuration; +use SimpleSAML\Module\statistics\RatioDataset; + +/** + * @author Andreas Åkre Solberg <andreas.solberg@uninett.no> + * @package SimpleSAMLphp + */ +class Ratio extends BaseRule +{ + /** @var \SimpleSAML\Module\statistics\Statistics\Rulesets\BaseRule $refrule1 */ + protected $refrule1; + + /** @var \SimpleSAML\Module\statistics\Statistics\Rulesets\BaseRule $refrule2 */ + protected $refrule2; + + + /** + * Constructor + * + * @param \SimpleSAML\Configuration $statconfig + * @param \SimpleSAML\Configuration $ruleconfig + * @param string $ruleid + * @param array $available + */ + public function __construct(Configuration $statconfig, Configuration $ruleconfig, $ruleid, array $available) + { + parent::__construct($statconfig, $ruleconfig, $ruleid, $available); + + $refNames = $this->ruleconfig->getArray('ref'); + + $statrulesConfig = $this->statconfig->getConfigItem('statrules'); + + $statruleConfig1 = $statrulesConfig->getConfigItem($refNames[0]); + $statruleConfig2 = $statrulesConfig->getConfigItem($refNames[1]); + + $this->refrule1 = new BaseRule($this->statconfig, $statruleConfig1, $refNames[0], $available); + $this->refrule2 = new BaseRule($this->statconfig, $statruleConfig2, $refNames[1], $available); + } + + + /** + * @return array + */ + public function availableTimeRes() + { + return $this->refrule1->availableTimeRes(); + } + + + /** + * @param string $timeres + * @return array + */ + public function availableFileSlots($timeres) + { + return $this->refrule1->availableFileSlots($timeres); + } + + + /** + * @param string $preferTimeRes + * @return string + */ + protected function resolveTimeRes($preferTimeRes) + { + return $this->refrule1->resolveTimeRes($preferTimeRes); + } + + + /** + * @param string $timeres + * @param string $preferTime + * @return int + */ + protected function resolveFileSlot($timeres, $preferTime) + { + return $this->refrule1->resolveFileSlot($timeres, $preferTime); + } + + + /** + * @param string $timeres + * @param string $preferTime + * @return array + */ + public function getTimeNavigation($timeres, $preferTime) + { + return $this->refrule1->getTimeNavigation($timeres, $preferTime); + } + + + /** + * @param string $preferTimeRes + * @param string $preferTime + * @return \SimpleSAML\Module\statistics\RatioDataset + */ + public function getDataSet($preferTimeRes, $preferTime) + { + $timeres = $this->resolveTimeRes($preferTimeRes); + $fileslot = $this->resolveFileSlot($timeres, $preferTime); + + $refNames = $this->ruleconfig->getArray('ref'); + + $dataset = new RatioDataset( + $this->statconfig, + $this->ruleconfig, + $refNames, + $timeres, + $fileslot + ); + return $dataset; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/StatisticsController.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/StatisticsController.php new file mode 100644 index 0000000000000000000000000000000000000000..3de1fd0e18cee3f7cdcd5a00c230c89aebafc85a --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/lib/StatisticsController.php @@ -0,0 +1,244 @@ +<?php + +namespace SimpleSAML\Module\statistics; + +use SimpleSAML\Configuration; +use SimpleSAML\HTTP\RunnableResponse; +use SimpleSAML\Locale\Translate; +use SimpleSAML\Module; +use SimpleSAML\Session; +use SimpleSAML\Utils\HTTP; +use SimpleSAML\XHTML\Template; +use Symfony\Component\HttpFoundation\Request; + +/** + * Controller class for the statistics module. + * + * This class serves the statistics views available in the module. + * + * @package SimpleSAML\Module\admin + */ +class StatisticsController +{ + /** @var \SimpleSAML\Configuration */ + protected $config; + + /** @var \SimpleSAML\Configuration */ + protected $moduleConfig; + + /** @var \SimpleSAML\Session */ + protected $session; + + + /** + * StatisticsController constructor. + * + * @param \SimpleSAML\Configuration $config The configuration to use. + * @param \SimpleSAML\Session $session The current user session. + */ + public function __construct(Configuration $config, Session $session) + { + $this->config = $config; + $this->moduleConfig = Configuration::getConfig('module_statistics.php'); + $this->session = $session; + } + + + /** + * Display statistics metadata. + * + * @param Request $request The current request. + * + * @return \SimpleSAML\XHTML\Template + */ + public function metadata(Request $request) + { + AccessCheck::checkAccess($this->moduleConfig); + + $aggr = new Aggregator(); + $aggr->loadMetadata(); + $metadata = $aggr->getMetadata(); + + if ($metadata !== null) { + if (in_array('lastrun', $metadata, true)) { + $metadata['lastrun'] = date('l jS \of F Y H:i:s', $metadata['lastrun']); + } + if (in_array('notBefore', $metadata, true)) { + $metadata['notBefore'] = date('l jS \of F Y H:i:s', $metadata['notBefore']); + } + if (in_array('memory', $metadata, true)) { + $metadata['memory'] = number_format($metadata['memory'] / (1024 * 1024), 2); + } + } + + $t = new Template($this->config, 'statistics:statmeta.tpl.php'); + $t->data = [ + 'metadata' => $metadata, + ]; + + return $t; + } + + + /** + * Display the main admin page. + * + * @return \SimpleSAML\XHTML\Template + */ + public function main(Request $request) + { + AccessCheck::checkAccess($this->moduleConfig); + + /** + * Check input parameters + */ + $preferRule = $request->query->get('rule'); + $preferRule2 = $request->query->get('rule2'); + if ($preferRule2 === '_') { + $preferRule2 = null; + } + + $preferTime = $request->query->get('time'); + $preferTimeRes = $request->query->get('res'); + $delimiter = $request->query->get('delimiler'); + + /** + * Create statistics data. + */ + $ruleset = new Ruleset($this->moduleConfig); + $statrule = $ruleset->getRule($preferRule); + $rule = $statrule->getRuleID(); + + /** + * Prepare template. + */ + $t = new Template($this->config, 'statistics:statistics.tpl.php'); + $t->data = [ + 'delimiter' => $delimiter, + 'pageid' => 'statistics', + 'header' => 'stat', + 'available_rules' => $ruleset->availableRulesNames(), + 'selected_rule' => $rule, + 'selected_rule2' => $preferRule2, + ]; + + try { + $dataset = $statrule->getDataset($preferTimeRes, $preferTime); + $dataset->setDelimiter($delimiter); + $dataset->aggregateSummary(); + $dataset->calculateMax(); + } catch (\Exception $e) { + $t->data['error'] = "No data available"; + return $t; + } + + $delimiter = $dataset->getDelimiter(); + $timeres = $dataset->getTimeRes(); + $fileslot = $dataset->getFileslot(); + $timeNavigation = $statrule->getTimeNavigation($timeres, $preferTime); + $piedata = $dataset->getPieData(); + $datasets = [$dataset->getPercentValues()]; + $axis = $dataset->getAxis(); + $maxes = [$dataset->getMax()]; + + $t->data['selected_rule'] = $rule; + $t->data['selected_time'] = $fileslot; + $t->data['selected_timeres'] = $timeres; + $t->data['post_d'] = $this->getBaseURL($t, 'post', 'd'); + if (isset($preferRule2)) { + $statrule = $ruleset->getRule($preferRule2); + try { + $dataset2 = $statrule->getDataset($preferTimeRes, $preferTime); + $dataset2->aggregateSummary(); + $dataset2->calculateMax(); + $datasets[] = $dataset2->getPercentValues(); + $maxes[] = $dataset2->getMax(); + + if ($request->query->get('format') === 'csv') { + header('Content-type: text/csv'); + header('Content-Disposition: attachment; filename="simplesamlphp-data.csv"'); + $data = $dataset->getDebugData(); + foreach ($data as $de) { + if (isset($de[1])) { + echo '"' . $de[0] . '",' . $de[1] . "\n"; + } + } + exit; + } else { + $t->data['error'] = 'Export format not supported'; + return $t; + } + } catch (\Exception $e) { + $t->data['error'] = "No data available to compare"; + return $t; + } + } + + $dimx = $this->moduleConfig->getValue('dimension.x', 800); + $dimy = $this->moduleConfig->getValue('dimension.y', 350); + $grapher = new Graph\GoogleCharts($dimx, $dimy); + $t->data['imgurl'] = $grapher->show($axis['axis'], $axis['axispos'], $datasets, $maxes); + + if (!empty($piedata)) { + $t->data['pieimgurl'] = $grapher->showPie($dataset->getDelimiterPresentationPie(), $piedata); + } + + $t->data['available_rules'] = $ruleset->availableRulesNames(); + $t->data['available_times'] = $statrule->availableFileSlots($timeres); + $t->data['available_timeres'] = $statrule->availableTimeRes(); + $t->data['available_times_prev'] = $timeNavigation['prev']; + $t->data['available_times_next'] = $timeNavigation['next']; + $t->data['current_rule'] = $t->data['available_rules'][$rule]; + $t->data['selected_rule2'] = $preferRule2; + $t->data['selected_delimiter'] = $delimiter; + $t->data['debugdata'] = $dataset->getDebugData(); + $t->data['results'] = $dataset->getResults(); + $t->data['summaryDataset'] = $dataset->getSummary(); + $t->data['topdelimiters'] = $dataset->getTopDelimiters(); + $t->data['post_rule'] = $this->getBaseURL($t, 'post', 'rule'); + $t->data['post_rule2'] = $this->getBaseURL($t, 'post', 'rule2'); + $t->data['post_res'] = $this->getBaseURL($t, 'post', 'res'); + $t->data['post_time'] = $this->getBaseURL($t, 'post', 'time'); + $t->data['get_times_prev'] = $this->getBaseURL($t, 'get', 'time', $t->data['available_times_prev']); + $t->data['get_times_next'] = $this->getBaseURL($t, 'get', 'time', $t->data['available_times_next']); + $t->data['availdelimiters'] = $dataset->availDelimiters(); + $t->data['delimiterPresentation'] = $dataset->getDelimiterPresentation(); + + return $t; + } + + + /** + * @param \SimpleSAML\XHTML\Template $t + * @param string $type + * @param string|null $key + * @param string|null $value + * @return string|array + */ + private function getBaseURL(Template $t, $type = 'get', $key = null, $value = null) + { + $vars = [ + 'rule' => $t->data['selected_rule'], + 'time' => $t->data['selected_time'], + 'res' => $t->data['selected_timeres'], + ]; + if (isset($t->data['selected_delimiter'])) { + $vars['d'] = $t->data['selected_delimiter']; + } + if (!empty($t->data['selected_rule2']) && $t->data['selected_rule2'] !== '_') { + $vars['rule2'] = $t->data['selected_rule2']; + } + if (isset($key)) { + if (isset($vars[$key])) { + unset($vars[$key]); + } + if (isset($value)) { + $vars[$key] = $value; + } + } + if ($type === 'get') { + return Module::getModuleURL("statistics/showstats.php") . '?' . http_build_query($vars, '', '&'); + } + return $vars; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/locales/en/LC_MESSAGES/statistics.po b/vendor/simplesamlphp/simplesamlphp/modules/statistics/locales/en/LC_MESSAGES/statistics.po new file mode 100644 index 0000000000000000000000000000000000000000..8dee6fd55264775750189843f14e237e88acbaad --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/locales/en/LC_MESSAGES/statistics.po @@ -0,0 +1,11 @@ +msgid "{statistics:statistics:link_statistics" +msgstr "Show statistics" + +msgid "{statistics:statistics:link_statistics_metadata" +msgstr "Show statistics metadata" + +msgid "Show statistics" +msgstr "Show statistics" + +msgid "Show statistics metadata" +msgstr "Show statistics metadata" \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/locales/es/LC_MESSAGES/statistics.po b/vendor/simplesamlphp/simplesamlphp/modules/statistics/locales/es/LC_MESSAGES/statistics.po new file mode 100644 index 0000000000000000000000000000000000000000..871d8251855b584a8b9cd1ca95dbefa1d609d383 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/locales/es/LC_MESSAGES/statistics.po @@ -0,0 +1,11 @@ +msgid "{statistics:statistics:link_statistics" +msgstr "Mostrar estadísticas" + +msgid "{statistics:statistics:link_statistics_metadata" +msgstr "Mostrar metadatos de las estadísticas" + +msgid "Show statistics" +msgstr "Mostrar estadísticas" + +msgid "Show statistics metadata" +msgstr "Mostrar metadatos de las estadísticas" \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/locales/nb/LC_MESSAGES/statistics.po b/vendor/simplesamlphp/simplesamlphp/modules/statistics/locales/nb/LC_MESSAGES/statistics.po new file mode 100644 index 0000000000000000000000000000000000000000..f6704778553d62d21ebc32a90d3c96a3593b49e4 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/locales/nb/LC_MESSAGES/statistics.po @@ -0,0 +1,11 @@ +msgid "{statistics:statistics:link_statistics" +msgstr "Vis statistikker" + +msgid "{statistics:statistics:link_statistics_metadata" +msgstr "Vis metadata om statistikker" + +msgid "Show statistics" +msgstr "Vis statistikker" + +msgid "Show statistics metadata" +msgstr "Vis metadata om statistikker" diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/locales/nn/LC_MESSAGES/statistics.po b/vendor/simplesamlphp/simplesamlphp/modules/statistics/locales/nn/LC_MESSAGES/statistics.po new file mode 100644 index 0000000000000000000000000000000000000000..6fb2e3bf4f2e2957a2d28865fd8edc67d895de9e --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/locales/nn/LC_MESSAGES/statistics.po @@ -0,0 +1,11 @@ +msgid "{statistics:statistics:link_statistics" +msgstr "Vis statistikkar" + +msgid "{statistics:statistics:link_statistics_metadata" +msgstr "Vis metadata om statistikkar" + +msgid "Show statistics" +msgstr "Vis statistikkar" + +msgid "Show statistics metadata" +msgstr "Vis metadata om statistikkar" diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/phpunit.xml b/vendor/simplesamlphp/simplesamlphp/modules/statistics/phpunit.xml new file mode 100644 index 0000000000000000000000000000000000000000..0540658da5d229b7588de0714b999d0aebffe445 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/phpunit.xml @@ -0,0 +1,20 @@ +<?xml version="1.0" encoding="utf-8" ?> +<phpunit bootstrap="tests/bootstrap.php"> + <testsuites> + <testsuite name="The project's test suite"> + <directory>./vendor/simplesamlphp/simplesamlphp-test-framework/tests/</directory> + <directory>tests/</directory> + </testsuite> + </testsuites> + <filter> + <whitelist processUncoveredFilesFromWhitelist="true"> + <directory suffix=".php">./lib</directory> + </whitelist> + </filter> + <logging> + <log type="coverage-text" target="php://stdout" showUncoveredFiles="true" /> + <log type="coverage-html" target="build/coverage" title="PHP Coveralls" charset="UTF-8" yui="true" highlight="true" lowUpperBound="35" highLowerBound="70" /> + <log type="coverage-clover" target="build/logs/clover.xml" /> + </logging> +</phpunit> + diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/psalm.xml b/vendor/simplesamlphp/simplesamlphp/modules/statistics/psalm.xml new file mode 100644 index 0000000000000000000000000000000000000000..1dba560190e7d1034eb9d1c3f4a06eeaf96f9c15 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/psalm.xml @@ -0,0 +1,31 @@ +<?xml version="1.0"?> +<psalm + name="The SimpleSAMLphp statistics module" + useDocblockTypes="true" + totallyTyped="false" +> + <projectFiles> + <directory name="lib" /> + <directory name="www" /> + </projectFiles> + + <issueHandlers> + <LessSpecificReturnType errorLevel="info" /> + + <!-- level 3 issues - slightly lazy code writing, but probably low false-negatives --> + <DeprecatedMethod 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" /> + <UnusedClass errorLevel="info" /> + <PossiblyUnusedMethod errorLevel="info" /> + </issueHandlers> +</psalm> diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/routes.yaml b/vendor/simplesamlphp/simplesamlphp/modules/statistics/routes.yaml new file mode 100644 index 0000000000000000000000000000000000000000..e0fa51ae9eb9da5b20f34cd9c79824bad3d14bf1 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/routes.yaml @@ -0,0 +1,6 @@ +statistics-main: + path: / + defaults: { _controller: 'SimpleSAML\Module\statistics\StatisticsController::main' } +statistics-metadata: + path: /metadata + defaults: { _controller: 'SimpleSAML\Module\statistics\StatisticsController::metadata' } diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/templates/statistics.tpl.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/templates/statistics.tpl.php new file mode 100644 index 0000000000000000000000000000000000000000..3a3e6cdd50f789b7f378211a5fd3d9bb2e3cf99c --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/templates/statistics.tpl.php @@ -0,0 +1,238 @@ +<?php +$this->data['header'] = 'SimpleSAMLphp Statistics'; + +$this->data['head'] = '<link rel="stylesheet" type="text/css" href="'. + SimpleSAML\Module::getModuleURL("statistics/assets/css/statistics.css").'" />'."\n"; +$this->data['head'] .= '<link rel="stylesheet" media="screen" href="'. + SimpleSAML\Module::getModuleURL("statistics/assets/css/uitheme1.12.1/jquery-ui.min.css").'" />'."\n"; + +$this->includeAtTemplateBase('includes/header.php'); + +$this->data['htmlinject']['htmlContentPost'][] = '<script src="'. + SimpleSAML\Module::getModuleURL("statistics/assets/js/jquery-1.12.4.min.js").'"></script>'."\n"; +$this->data['htmlinject']['htmlContentPost'][] = '<script src="'. + SimpleSAML\Module::getModuleURL("statistics/assets/js/jquery-ui-1.12.1.min.js").'"></script>'."\n"; +$this->data['htmlinject']['htmlContentPost'][] = '<script type="text/javascript" src="'. + SimpleSAML\Module::getModuleURL("statistics/assets/js/statistics.js").'"></script>'."\n"; + +echo '<h1>'.$this->data['available_rules'][$this->data['selected_rule']]['name'].'</h1>'; +echo '<p>'.$this->data['available_rules'][$this->data['selected_rule']]['descr'].'</p>'; + +// Report settings +echo '<table class="selecttime">'; +echo '<tr><td class="selecttime_icon"><img src="'.SimpleSAML\Utils\HTTP::getBaseURL(). + 'resources/icons/crystal_project/kchart.32x32.png" alt="Report settings" /></td>'; + +// Select report +echo '<td>'; +echo '<form action="#">'; + +foreach ($this->data['post_rule'] as $k => $v) { + echo '<input type="hidden" name="'.$k.'" value="'.htmlspecialchars($v).'" />'."\n"; +} + +if (!empty($this->data['available_rules'])) { + echo '<select name="rule">'; + foreach ($this->data['available_rules'] as $key => $rule) { + if ($key === $this->data['selected_rule']) { + echo '<option selected="selected" value="'.$key.'">'.$rule['name'].'</option>'; + } else { + echo '<option value="'.$key.'">'.$rule['name'].'</option>'; + } + } + echo '</select>'; +} +echo '</form></td>'; + +// Select delimiter +echo '<td class="td_right">'; +echo '<form action="#">'; + +foreach ($this->data['post_d'] as $k => $v) { + echo '<input type="hidden" name="'.$k.'" value="'.htmlspecialchars($v).'" />'."\n"; +} + +if (!empty($this->data['availdelimiters'])) { + echo '<select name="d">'; + foreach ($this->data['availdelimiters'] as $key => $delim) { + $delimName = $delim; + if (array_key_exists($delim, $this->data['delimiterPresentation'])) { + $delimName = $this->data['delimiterPresentation'][$delim]; + } + + if ($key == '_') { + echo '<option value="_">Total</option>'; + } elseif (isset($_REQUEST['d']) && $delim == $_REQUEST['d']) { + echo '<option selected="selected" value="'.htmlspecialchars($delim).'">'. + htmlspecialchars($delimName).'</option>'; + } else { + echo '<option value="'.htmlspecialchars($delim).'">'.htmlspecialchars($delimName).'</option>'; + } + } + echo '</select>'; +} +echo '</form></td></tr>'; + +echo '</table>'; + +// End report settings + + +// Select time and date +echo '<table class="selecttime">'; +echo '<tr><td class="selecttime_icon"><img src="'.SimpleSAML\Utils\HTTP::getBaseURL(). + 'resources/icons/crystal_project/date.32x32.png" alt="Select date and time" /></td>'; + +if (isset($this->data['available_times_prev'])) { + echo '<td><a href="'.$this->data['get_times_prev'].'">« Previous</a></td>'; +} else { + echo '<td class="selecttime_link_grey">« Previous</td>'; +} + +echo '<td class="td_right">'; +echo '<form action="#">'; + +foreach ($this->data['post_res'] as $k => $v) { + echo '<input type="hidden" name="'.$k.'" value="'.htmlspecialchars($v).'" />'."\n"; +} + +if (!empty($this->data['available_timeres'])) { + echo '<select name="res">'; + foreach ($this->data['available_timeres'] as $key => $timeresname) { + if ($key == $this->data['selected_timeres']) { + echo '<option selected="selected" value="'.$key.'">'.$timeresname.'</option>'; + } else { + echo '<option value="'.$key.'">'.$timeresname.'</option>'; + } + } + echo '</select>'; +} +echo '</form></td>'; + +echo '<td class="td_left">'; +echo '<form action="#">'; + +foreach ($this->data['post_time'] as $k => $v) { + echo '<input type="hidden" name="'.$k.'" value="'.htmlspecialchars($v).'" />'."\n"; +} + +if (!empty($this->data['available_times'])) { + echo '<select name="time">'; + foreach ($this->data['available_times'] as $key => $timedescr) { + if ($key == $this->data['selected_time']) { + echo '<option selected="selected" value="'.$key.'">'.$timedescr.'</option>'; + } else { + echo '<option value="'.$key.'">'.$timedescr.'</option>'; + } + } + echo '</select>'; +} +echo '</form></td>'; + +if (isset($this->data['available_times_next'])) { + echo '<td class="td_right td_next_right"><a href="'.$this->data['get_times_next'].'">Next »</a></td>'; +} else { + echo '<td class="td_right selecttime_link_grey td_next_right">Next »</td>'; +} + +echo '</tr></table>'; +echo '<div id="tabdiv">'; +if (!empty($this->data['results'])) { + echo '<ul class="tabset_tabs"> + <li><a href="#graph">Graph</a></li> + <li><a href="#table">Summary table</a></li> + <li><a href="#debug">Time serie</a></li> + </ul>'; + echo ' + + <div id="graph" class="tabset_content">'; + + echo '<img src="'.htmlspecialchars($this->data['imgurl']).'" alt="Graph" />'; + + echo '<form action="#">'; + echo '<p class="p_right">Compare with total from this dataset '; + + foreach ($this->data['post_rule2'] as $k => $v) { + echo '<input type="hidden" name="'.$k.'" value="'.htmlspecialchars($v).'" />'."\n"; + } + + echo '<select name="rule2">'; + echo ' <option value="_">None</option>'; + foreach ($this->data['available_rules'] as $key => $rule) { + if ($key === $this->data['selected_rule2']) { + echo '<option selected="selected" value="'.$key.'">'.$rule['name'].'</option>'; + } else { + echo '<option value="'.$key.'">'.$rule['name'].'</option>'; + } + } + echo '</select></p></form>'; + + echo '</div>'; // end graph content. + + /** + * Handle table view - - - - - - + */ + $classint = ['odd', 'even']; + $i = 0; + echo '<div id="table" class="tabset_content">'; + + if (isset($this->data['pieimgurl'])) { + echo '<img src="'.$this->data['pieimgurl'].'" alt="Pie chart" />'; + } + echo '<table class="tableview"><tr><th class="value">Value</th><th class="category">Data range</th></tr>'; + + foreach ($this->data['summaryDataset'] as $key => $value) { + $clint = $classint[$i++ % 2]; + + $keyName = $key; + if (array_key_exists($key, $this->data['delimiterPresentation'])) { + $keyName = $this->data['delimiterPresentation'][$key]; + } + + if ($key === '_') { + echo '<tr class="total '.$clint.'"><td class="value">'. + $value.'</td><td class="category">'.$keyName.'</td></tr>'; + } else { + echo '<tr class="'.$clint.'"><td class="value">'.$value. + '</td><td class="category">'.$keyName.'</td></tr>'; + } + } + + echo '</table></div>'; + // - - - - - - - End table view - - - - - - - + + echo '<div id="debug" >'; + echo '<table class="timeseries">'; + echo '<tr><th>Time</th><th>Total</th>'; + foreach ($this->data['topdelimiters'] as $key) { + $keyName = $key; + if (array_key_exists($key, $this->data['delimiterPresentation'])) { + $keyName = $this->data['delimiterPresentation'][$key]; + } + echo'<th>'.$keyName.'</th>'; + } + echo '</tr>'; + + $i = 0; + foreach ($this->data['debugdata'] as $slot => $dd) { + echo '<tr class="'.((++$i % 2) == 0 ? 'odd' : 'even').'">'; + echo '<td>'.$dd[0].'</td>'; + echo '<td class="datacontent">'.$dd[1].'</td>'; + + foreach ($this->data['topdelimiters'] as $key) { + echo '<td class="datacontent">'.(array_key_exists($key, $this->data['results'][$slot]) ? + $this->data['results'][$slot][$key] : ' ').'</td>'; + } + echo '</tr>'; + } + echo '</table>'; + + + echo '</div>'; // End debug tab content +} else { + echo '<h4 align="center">'.$this->data['error'].'</h4>'; + echo '<p align="center"><a href="showstats.php">Clear selection</a></p>'; +} +echo '</div>'; // End tab div + +$this->includeAtTemplateBase('includes/footer.php'); diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/templates/statistics.twig b/vendor/simplesamlphp/simplesamlphp/modules/statistics/templates/statistics.twig new file mode 100644 index 0000000000000000000000000000000000000000..975d0f96165c79e298700813178bb88320e8c956 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/templates/statistics.twig @@ -0,0 +1,225 @@ +{% set pagetitle = 'SimpleSAMLphp Statistics'|trans %} +{% extends "base.twig" %} + +{% block preload %} + <link href="/{{ baseurlpath }}module.php/statistics/assets/css/statistics.css" rel="stylesheet"> + <link rel="stylesheet" media="screen" href="/{{ baseurlpath }}module.php/statistics/assets/css/uitheme1.12.1/jquery-ui.min.css"> +{% endblock %} + +{% block postload %} +<script src="/{{ baseurlpath }}module.php/statistics/assets/js/jquery-ui-1.12.1.min.js"></script> +<script src="/{{ baseurlpath }}module.php/statistics/assets/js/statistics.js"></script> +{% endblock %} + +{% block content %} + <h1>{{ current_rule.name }}</h1> + <p>{{ current_rule.descr }}</p> + + <table class="selecttime"> + <tr> + <td class="selecttime_icon"> + <i class="fa fa-pie-chart"></i> + </td> + <td> + <form action="#"> + {% for key, value in post_rule %} + <input type="hidden" name="{{ key|escape('html') }}" value="{{ value|escape('html') }}"> + {% endfor %} + <select name="rule"> + {% for key, rule in available_rules %} + {% if key == selected_rule %} + <option selected="selected" value="{{ key }}">{{ rule.name }}</option> + {% else %} + <option value="{{ key }}">{{ rule.name }}</option> + {% endif %} + {% endfor %} + </select> + </form> + </td> + <td class="td_right"> + <form action="#"> + {% for key, value in post_d %} + <input type="hidden" name="{{ key|escape('html') }}" value="{{ value|escape('html') }}"> + {% endfor %} + {% if availdelimiters %} + <select name="d"> + {% for key, delim in availdelimiters %} + {% set delimName = delim %} + + {% if delimiterPresentation[delim] is defined %} + {% set delimName = delimiterPresentation[delim] %} + {% endif %} + + {% if key == "_" %} + <option value="_">Total</option> + {% elseif request_d is defined and delim == request_d %} + <option selected="selected" value="{{ delim|escape('html') }}">{{ delimName|escape('html') }}</option> + {% else %} + <option value="{{ delim|escape('html') }}">{{ delimName|escape('html') }}</option> + {% endif %} + {% endfor %} + </select> + {% endif %} + </form> + </td> + </tr> + </table> + + <table class="selecttime"> + <tr> + <td class="selecttime_icon"> + <i class="fa fa-calendar"></i> + </td> + {% if available_times_prev %} + <td><a href="{{ get_times_prev }}">« Previous</a></td> + {% else %} + <td class="selecttime_link_grey">« Previous</td> + {% endif %} + <td class="td_right"> + <form action="#"> + {% for key, value in post_res %} + <input type="hidden" name="{{ key|escape('html') }}" value="{{ value|escape('html') }}"> + {% endfor %} + {% if available_timeres %} + <select name="res"> + {% for key, timeresname in available_timeres %} + {% if key == selected_timeres %} + <option selected="selected" value="{{ key }}">{{ timeresname }}</option> + {% else %} + <option value="{{ key }}">{{ timeresname }}</option> + {% endif %} + {% endfor %} + </select> + {% endif %} + </form> + </td> + <td class="td_left"> + <form action="#"> + {% for key, value in post_time %} + <input type="hidden" name="{{ key|escape('html') }}" value="{{ value|escape('html') }}"> + {% endfor %} + {% if available_times %} + <select name="time"> + {% for key, timedescr in available_times %} + {% if key == selected_time %} + <option selected="selected" value="{{ key }}">{{ timedescr }}</option> + {% else %} + <option value="{{ key }}">{{ timedescr }}</option> + {% endif%} + {% endfor %} + </select> + {% endif %} + </form> + </td> + {% if available_times_next %} + <td class="td_right td_next_right"><a href="{{ get_times_next }}">Next »</a></td> + {% else %} + <td class="td_right selecttime_link_grey">Next »</td> + {% endif %} + </tr> + </table> + + <div id="tabdiv"> + {% if results %} + <ul class="tabset_tabs"> + <li class="tab-link current" data-tab="graph"><a href="#graph">Graph</a></li> + <li class="tab-link" data-tab="table"><a href="#table">Summary table</a></li> + <li class="tab-link" data-tab="debug"><a href="#debug">Time serie</a></li> + </ul> + + <div id="graph" class="tabset_content current"> + <img src="{{ imgurl }}" alt="Graph" /> + <form action="#"> + <p class="p_right">Compare with total from this dataset + <select name="rule2"> + <option value="_">None</option> + {% for key, rule in available_rules %} + {% if key == selected_rule2 %} + <option selected="selected" value="{{ key }}">{{ rule.name }}</option> + {% else %} + <option value="{{ key }}">{{ rule.name }}</option> + {% endif %} + {% endfor %} + </select> + </p> + </form> + </div> + + <div id="table" class="tabset_content"> + {% if pieimgurl is defined %} + <img src="{{ pieimgurl }}" alt="Pie chart" /> + {% endif %} + + <table class="tableview"> + <tr> + <th class="value">Value</th> + <th class="category">Data range</th> + </tr> + {% for key, value in summaryDataset %} + {% if loop.index0 is even %} + {% set class = 'even' %} + {% else %} + {% set class = 'odd' %} + {% endif %} + + {% set keyName = key %} + {% if delimiterPresentation[key] is defined %} + {% set keyName = delimiterPresentation[key] %} + {% endif %} + + {% if key == "_" %} + <tr class="total {{ class }}"> + <td class="value">{{ value }}</td> + <td class="category">{{ keyName }}</td> + </tr> + {% else %} + <tr class="{{ class }}"> + <td class="value">{{ value }}</td> + <td class="category">{{ keyName }}</td> + </tr> + {% endif %} + {% endfor %} + </table> + </div> + + <div id="debug" class="tabset_content"> + <table class="timeseries"> + <tr> + <th>Time</th> + <th>Total</th> + {% for key, value in topdelimiters %} + {% set keyName = value %} + {% if delimiterPresentation[value] is defined %} + {% set keyName = delimiterPresentation[value] %} + {% endif %} + <th>{{ keyName }}</th> + {% endfor %} + </tr> + {% for slot, dd in debugdata %} + + {% if loop.index0 is even %} + {% set class = 'even' %} + {% else %} + {% set class = 'odd' %} + {% endif %} + + <tr class="{{ class }}"> + <td>{{ dd[0] }}</td> + <td class="datacontent">{{ dd[1] }}</td> + {% for key, value in topdelimiters %} + {% if results[slot] is defined and value == '_' %} + <td class="datacontent">{{ results[slot][value] }}</td> + {% else %} + <td class="datacontent"> </td> + {% endif %} + {% endfor %} + </tr> + {% endfor %} + </table> + </div> + {% else %} + <h4 align="center">{{ error }}</h4> + <p align="center"><a href="showstats.php">Clear selection</a></p> + {% endif %} + </div> +{% endblock %} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/templates/statmeta.tpl.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/templates/statmeta.tpl.php new file mode 100644 index 0000000000000000000000000000000000000000..324b4e0c5c2ad26a0abf5e3b3c2ee82d98ec3a0b --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/templates/statmeta.tpl.php @@ -0,0 +1,42 @@ +<?php +$this->data['header'] = 'SimpleSAMLphp Statistics Metadata'; +$this->data['head'] = '<link rel="stylesheet" type="text/css" href="'. + SimpleSAML\Module::getModuleURL("statistics/assets/css/statistics.css").'" />'; +$this->includeAtTemplateBase('includes/header.php'); + +echo '<table id="statmeta">' ; + +if (isset($this->data['metadata'])) { + $metadata = $this->data['metadata']; + + if (isset($metadata['lastrun'])) { + echo '<tr><td>Aggregator last run at</td><td>'.$metadata['lastrun'].'</td></tr>'; + } + + if (isset($metadata['notBefore'])) { + echo '<tr><td>Aggregated data until</td><td>'.$metadata['notBefore'].'</td></tr>'; + } + + if (isset($metadata['memory'])) { + echo '<tr><td>Memory usage</td><td>'.$metadata['memory'].' MB'.'</td></tr>'; + } + + if (isset($metadata['time'])) { + echo '<tr><td>Execution time</td><td>'.$metadata['time'].' seconds'.'</td></tr>'; + } + + if (isset($metadata['lastlinehash'])) { + echo '<tr><td>SHA1 of last processed logline</td><td>'.$metadata['lastlinehash'].'</td></tr>'; + } + + if (isset($metadata['lastline'])) { + echo '<tr><td>Last processed logline</td><td>'.$metadata['lastline'].'</td></tr>'; + } +} else { + echo '<tr><td>No metadata found</td></tr>'; +} + +echo '</table>'; +echo '<p>[ <a href="'.SimpleSAML\Module::getModuleURL("statistics/showstats.php").'">Show statistics</a> ] </p>'; + +$this->includeAtTemplateBase('includes/footer.php'); diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/templates/statmeta.twig b/vendor/simplesamlphp/simplesamlphp/modules/statistics/templates/statmeta.twig new file mode 100644 index 0000000000000000000000000000000000000000..100a8c886c134e64200ac56ce1382b1f0674821b --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/templates/statmeta.twig @@ -0,0 +1,40 @@ +{% set pagetitle = 'SimpleSAMLphp Statistics Metadata'|trans %} +{% extends "base.twig" %} + +{% block preload %} + <link href="/{{ baseurlpath }}modules.php/statistics/assets/css/statistics.css" rel="stylesheet"> +{% endblock %} + +{% block content %} + <h2>{{ pagetitle }}</h2> + <table id="statmeta"> + {% if metadata is defined %} + {% if metadata.lastrun is defined %} + <tr><td>Aggregator last run at</td><td>{{ metadata.lastrun|date }}</td></tr> + {% endif %} + + {% if metadata.notBefore is defined %} + <tr><td>Aggregated data until</td><td>{{ metadata.notBefore|date }}</td></tr> + {% endif %} + + {% if metadata.memory is defined %} + <tr><td>Memory usage</td><td>{{ metadata.memory }} MB</td></tr> + {% endif %} + + {% if metadata.memory is defined %} + <tr><td>Execution time</td><td>{{ metadata.time }} seconds</td></tr> + {% endif %} + + {% if metadata.memory is defined %} + <tr><td>SHA1 of last processed logline</td><td>{{ metadata.lastlinehash }}</td></tr> + {% endif %} + + {% if metadata.memory is defined %} + <tr><td>Last processed logline</td><td>{{ metadata.lastline }}</td></tr> + {% endif %} + {% else %} + <tr><td>No metadata found</td></tr> + {% endif %} + </table> + <p>[ <a href="/{{ baseurlpath }}module.php/statistics/showstats.php">Show statistics</a> ]</p> +{% endblock %} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/tests/bootstrap.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/tests/bootstrap.php new file mode 100644 index 0000000000000000000000000000000000000000..60565036ecc1672468c3b82a0de01c015e83d9af --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/tests/bootstrap.php @@ -0,0 +1,11 @@ +<?php + +$projectRoot = dirname(__DIR__); +require_once($projectRoot . '/vendor/autoload.php'); + +// Symlink module into ssp vendor lib so that templates and urls can resolve correctly +$linkPath = $projectRoot . '/vendor/simplesamlphp/simplesamlphp/modules/statistics'; +if (file_exists($linkPath) === false) { + echo "Linking '$linkPath' to '$projectRoot'\n"; + symlink($projectRoot, $linkPath); +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/statistics.css b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/statistics.css new file mode 100644 index 0000000000000000000000000000000000000000..4d0d163d600681ffe26fa34cee7cd7cbd9505bc4 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/statistics.css @@ -0,0 +1,127 @@ +@media all { + div#content { + margin: .4em ! important; + } + + .tableview { + border-collapse: collapse; + border: 1px solid #ccc; + margin: 1em; + width: 80%; + } + + .tableview th, .tableview td { + border: 1px solid #ccc; + padding: 0px 5px; + } + + .tableview th { + background: #e5e5e5; + } + + .tableview tr.total td { + color: #500; font-weight: bold; + } + + .tableview tr.even td { + background: #f5f5f5; + border-top: 1px solid #e0e0e0; + border-bottom: 1px solid #e0e0e0; + } + + .tableview th.value, .tableview td.value { + text-align: right; + } + + table.timeseries tr.odd td { + background-color: #f4f4f4; + } + + table.timeseries td { + padding-right: 2em; border: 1px solid #ccc + } + + td.datacontent { + text-align: right; + } + + table.selecttime { + width: 100%; + border: 1px solid #ccc; + background: #eee; + margin: 1px 0px; padding: 0px; + } + + td.selecttime_icon { + width: 50px; + padding: 0px; + } + + td.selecttime_icon img { + margin: 0px; + } + + td.selecttime_link_grey { + color: #ccc; + } + + td.td_right { + text-align: right; + } + td.td_next_right { + padding-right: 4px; + } + td.td_left { + text-align: left; + } + + p.p_right { + text-align: right; + } + + form { + display: inline; + } + + table#statmeta { + width: 100%; + } + + ul.tabset_tabs { + margin: 0px; + padding: 0px; + list-style: none; + } + + ul.tabset_tabs li { + background: none; + color: #222; + display: inline-block; + padding: 10px 15px; + cursor: pointer; + } + + ul.tabset_tabs li.current { + background: #ededed; + color: #222; + } + + .tabset_content { + display: none; + background: #ededed; + padding: 15px; + } + + .tabset_content.current { + display: inherit; + } + + #graph img { + max-width: 77%; + height: auto; + } + #table img { + max-width: 77%; + height: auto; + } +} diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_glass_55_fbf9ee_1x400.png b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..1f851db2c9babc701aa0df1cc4e675943ab7812b --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_glass_55_fbf9ee_1x400.png @@ -0,0 +1,5 @@ +�PNG + +��� IHDR�����������A����bKGD������ X����� pHYs���H���H�F�k>����IDATH���! +A���bl����A1{�V�Y0i��x��x�v����D�K_��O��9��a�Ք��}��^�JaȌ�0b�vBA�$,�Q���"_44���=�Sqc�yE��I�W +<kA����i�0��<a$S��y.���%tEXtdate:create�2019-05-26T16:42:24+00:00R������%tEXtdate:modify�2019-05-26T16:42:24+00:00#�oP����IEND�B`� \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_glass_65_ffffff_1x400.png b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..a82e07c128d7a152c2ddd7d5eed531ac7f1b5ec7 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_glass_65_ffffff_1x400.png @@ -0,0 +1,3 @@ +�PNG + +��� IHDR����������G#7v���bKGD�݊���� pHYs���H���H�F�k>���IDAT(�ch`��p���h��4�i���%tEXtdate:create�2019-05-26T16:42:24+00:00R������%tEXtdate:modify�2019-05-26T16:42:24+00:00#�oP����IEND�B`� \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_glass_75_dadada_1x400.png b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..f323d2943e827649ecb51caf4e1a53c4d4435ab9 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_glass_75_dadada_1x400.png @@ -0,0 +1,3 @@ +�PNG + +��� IHDR������������D���bKGD���1���� pHYs���H���H�F�k>���HIDAT8�cx��a�"��[�n{1�qc��po"��?3}`xR���1�s?��^^bxu��u)�뉣h���W�%R�|���%tEXtdate:create�2019-05-26T16:42:24+00:00R������%tEXtdate:modify�2019-05-26T16:42:24+00:00#�oP����IEND�B`� \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_glass_75_e6e6e6_1x400.png b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..8adf417e90dd6fad53bc76564f9d497c58184a6e --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_glass_75_e6e6e6_1x400.png @@ -0,0 +1,3 @@ +�PNG + +��� IHDR������������D���bKGD���1���� pHYs���H���H�F�k>���HIDAT8�cx��0�F�ѳgύ��ax1��e&ë8��!obަ2��fx�����#3�ǵ��>��QD��@�$�.5o���%tEXtdate:create�2019-05-26T16:42:24+00:00R������%tEXtdate:modify�2019-05-26T16:42:24+00:00#�oP����IEND�B`� \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_glass_95_fef1ec_1x400.png b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000000000000000000000000000000000000..3f88c6b520cd6d07bbeb3a7f7aa748ebcbe3aabf --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_glass_95_fef1ec_1x400.png @@ -0,0 +1,3 @@ +�PNG + +��� IHDR�����������A����bKGD������ X����� pHYs���H���H�F�k>����IDATH��ϱ a�����\!V��J#X����ЋD}� .f�>���>��P�կx���x����q��жuɚq���f+��6���[��\�����כW�T4r���6:]V:�, (�Ŵ�8�yG-(d�� H���%tEXtdate:create�2019-05-26T16:42:24+00:00R������%tEXtdate:modify�2019-05-26T16:42:24+00:00#�oP����IEND�B`� \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000000000000000000000000000000000000..d022fb79b5b59df131762103ed3cfdf66eadfc8f --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-bg_highlight-soft_75_cccccc_1x100.png @@ -0,0 +1,3 @@ +�PNG + +��� IHDR������d����2������bKGD���1���� pHYs���H���H�F�k>���ZIDAT�cx|��Nhã����2<hc�_�p/��n,� �[_n�g���p=��Õ��w2\je�X�pa��&�s��b8��p���"�����Y{���%tEXtdate:create�2019-05-26T16:42:24+00:00R������%tEXtdate:modify�2019-05-26T16:42:24+00:00#�oP����IEND�B`� \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-icons_222222_256x240.png b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..e723e17cb5428094de75a0d3c6f4f3c07dbd3bbe --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-icons_222222_256x240.png @@ -0,0 +1,32 @@ +�PNG + +��� IHDR����������E�r@���bKGD�"�b���� pHYs���H���H�F�k>��'IDATx��{he�}�?g����{��1)�����]K&qq�U�4kbiK�R(H��B��P(I�vJ�_��ӮIV�@nB�5i�N��iG�jq�& ~A#Q����rX'����9�:�ܫ{�3�E{�=�y�o~3g~��Mp�&����1Xxh8<�#dlЅ�Mx1�&��$�5~��V�� ��c�$��ױ���,���� ��ƹ�i���N:�Z ��ߊY���>�"�B���H!�������-C�u�8t�}����8�!�B�� *�OF�.[�aͲ��l��B&���1h�>��M]hN���4MAb���̐!(�hE�1�5jձcO�<6�e7��,e���S(��f�o�16+3�y +JR|{�^3�^����{�88������~'����pxh8<4��� �g����������2��n6e̘�����{�����Q�����pӀ��P�A��iۺߖ�f�S����(�D��'�L�6=����T:s���f�q��羀l��.c�I +���ǧ�=�i���M�>��ڠLN{U��&������&��{u��o�����.�.��4~#����pxh8<4��� �g��Û��p���^i����/�0���TW�c����Q��� �@)��y��u}`L��Uc���%T��������ȥ +�A��R��@�?��P�-`����BKl� b����Z}�������Ш��͢uJ��%U�]�K2��e ts�Y���@,e�e���豅r��jcܭs��M�n�0 A���mP��y �D�K(5�,�lN�&b�D�m�rwYDV����t�e$��謷� �L���[��C��0O�� P��&��0����+��;� �g���3@������pxh8<4����Y��`��O����F�Z<��h�\J!c��`����j �;TK�Vr�0��ʹqc�cGz�䟾c�[ ̕P5�t�h�)���ti���З߭ty�������&��M/Е����S���u����@��݅���n���b�9��`y�9��Ya�SX�0e���q�J`nB���g����b�����3���4P�- k�**�@HC�z(}��U����cj2��=��Ob�����3� ����R��05���1U�\8SMi�U��}����l�Hl�N� ���J��q+%e��7s���"�<։�ּ�z����M�L�T��ƾP��1f�1i��Ѹ��Vp������pxh8<4�z�A��+ o`�I_�R�����~�~��f��սh`�Ic�K�h����Q�p��xx`=�j�`]|S�B�(������(��v���F3�4v�6��T��4 ���5����:���*��-D#�n6��a��J<U���~�y(�1��(,�|t�z�}��d��j��0u]PT��-D}@����� +�n�+[�Ύ� A�B�T���(V� K������BT<[F{�m��=��-�ڤ����$��.��JR�U j��:X��e�n�e���bՅ��"C ��e2�@�Ј�݂� �Ѱ���xxh8<4��� ��1@kX6I��<��M*�Љ�Ѣ�+�b���04(�.�M3Z�<]&i�UuY�a��^2�w�ͻ�ɨn�U�@�n����E�4 ���O�Us�.J���}��dw�Ed�p��� ��me^f���mF gg������T��G4�Ѱ����m��������N��է��N�c�����������5�L�xi���D��9�|��%ܔ�h�P=�áb����o�p�VBG�X ,�#E��+�\�^��o�ʼdM��ɳ]�d����.�@ 䮚���D���e��FU6'g6��)��52p|��f��X�_a�"z��x���� �w�.c�t� +�� �g���3@ñ�`"�i��K�9���s D07� +ӕS��E�oC�Y�Z�l'N��~_Sƞ��y���a��xK�������z�-&|(�ϜC�K������Xg�d����5Ig��8k8YTL=�,/ +]s��w-~��t�����e�� ^�~�&6vh�}�Զ�:g���?m�bG!����1�:O8����]�%��2�����v +�E�@�5"�6 Y�rXcRb��ݎ���E%���`�#�D��r¤��Z�:�ϛ!�x�R���h�!��}v�۴��ϳ����x�y}FrA1#�*�u�T�?>��!�x#�~��G���k���@3K@�:>P�R�����M�A|��e]K�g�F.B�����t�l��OY d��!(v�V�X��%m�#���I[RR�`2�T�� ��H��w�Y�u=���b�YPEc�U%�&@��Ĺ�]��}�q���o7*�G�L� ��e�QX�5�U����-����³��8| ���_�ݟ��5\�5�p�VH^��\ �Fآ��a��a��5�l1�4[��#�b�o�P�1�E��is��wMJ'5�T���06�B|I�,b�����`�ՈP���X�k��B�$�[��-E�OHt�|�3�D�(i��d9�N6@x/ؠm�(�#�wj�P�t��/Z���ob�q%[:���3^�~a��5���5�����|E닃�^�E��$�L�-���_s, +߫��㕔Ņ�&�� +�_�,�������#F�}����&���.��<4��� �g���O��rdh9�����M7L(5꓂.���?M(�����stզ��-?�:��[ڧC�r�]�'��YB�2�l�C| l�eXS��pG��0KcI��~�u�L0/��y�Lt�r�I�?�R�%�����-�w�Ƿ�h���$L��J��V���Ϳ�Ӣ,�����g� x�_7��l��4�*��u�M+�@�x�<}��ã��q>��<�#��`�i� +:=��*��ۿ�{��)��_��8hs���������p�CWғ�K�`B]H��"}���_P�N���t�Q�l��1Y�Q�h+����&?��x�5:� ֘aY�ҭ���=\��En��������.�Yʸ��J���E%uTj5�����F�'������b;[��v�ט4�u��6]�lkw�3�÷���,: ��%&�� �[|��|��|Yi�q`:�����qXc�2+u|~/�wrz�[j-�I>#���,�9�Q:�#,2�����5@�@%��S@@6ÅJ�{��6��{��)h���W�~q]����t��<�+|�'�0O�a����6���3�U��HW������l;�����'�Z9�Z\�o��O�嵁���e�e�Ƣ[o��da�����rEm&�ʧ�������3m���6��=�g�^S��x +Hj���mi�(v��ۈ�{.�h�_���%�8��nF�7y{�����O���FS5�:�����/��ա���W�P�H+b�����Gx��/9��I�Yy�.����M�t��T�eە,�ѿ�-�R����e�d�� +��;�Ә:�9k��T�5��m����������E�G��|\Wu����ǣ��@^L���E��� ��4��� �g���y��; +J'U��䐎N�<�p2m���ӫ��.Z������Z5<� V +,��p�3��w�=~�3j��ǿě�#����ʭ�|�S��f�yk��=C�n1]�C�'I_O��*,�J՞�D\\I���}�E�\�$�M�(�E��\�߮�?ƫw +�����NJ��E�b�6��t�z�:<��u��d��k��vs!��PfM��7dT����3 ��*S,�AZl+N����l�R�&{�I��T�G�O�*�M~�;������XFS��j����^�Q���N�n3�Z���0Ne�R�]�3�8��<�$@�˜c.�t�=�.{e��'�TI�s��u����>-?B��p���?���X�J $�x�QJ�}�!#��Ո2�Ht!VɽV�\'���Y�3�6����6Yu��JOAa�[5e���]p9=7����t���_�y��?�OS���<V��q.��Ի���;�8�~��YE����KSȀ��Xjq@M�� ���/�p�X��۴�[�S��c7�'S6 �E� ������_Ձ'�_��)^3�b�h���+Z ��"rLz�ZA��#��[��'�?�Z7{mZl�Ӭ�Q�De+^��o�*D��g��r؈;/�."��HF�Ƴ5��)F ���2�c.�W�~�`����VEl����6�R����8ظ�ky�k�.����`��Fp7pps"�"��KR{(us�[�%6 u�s�ͻ���,BD�����/�ȷ�_Pt?�Y�Vy�.s���Y�3����3������\�V*#��y�f2j��g����A��Ѣ� +�g�-�5����Fh�-1�9�v��<�s �����m�� =/�_f�WX�M�&�לi�RvٗQt��_���"������Q<�(�1[��_~��b"T z3��sxh8��������p�`Z�/�NΧ���F��{�"p�i`�� +�gsO��s�.�G}��t<��9�ug����g�R`���&��X�t�岇�}� ������7����2J�X�e\�� 08j=�XJ�Ql�l����x�6z(\5Q��I��=�l +8�7Ɏ���E�a4�O�;�-��M�1Iy�vV�y^�b�EN��sQ���Cw[ �2 ��V�Ǽ� o�yw�7J����K'�Tu�l�>_�i���T��<͛<�iM +�p������7�YMW���=�ӡl(����u�+���^j��>3��2N�묳}��j�H��Q RT�Ȣ�� ���n�fݮ�~�+��c�iQ��< ����Ma=��|�*���� +�$@'��Ԍ��ǕqUO;�5~@��eI�2��9�w��"��O�~��s��s��k{��$�m��>����v�z��^2���v�ow�`a������4c��M C�����b�>����q:��o�=�-�p`_2�ng:6K��XV,����2�Ǿ��6��� �g���3@�� ��ś�s�a����R��WWB +g-N�;F[��Ւa�A��V�L�F�<-m +VbMC����7���K)�X����P�y� �s�~��=�����<�ܒ�{�x!�=����Ãq�R��l�]���/���� 0�l)'�}�#�^tX��孋�t�8FC�Y�$)�PUBE�(~��Ҟ��V�2^��*SL�H�l��S��'IA[�������Z���x-V�"ȥ�J�+���\�|�5u�W��nLJ�k��ܟ���(0�0����JyꞄ���a���f��g����6��� �g���3@Ñg���[�}��Z����Q�k?ҳ=��z�I$Т�:�9FW��m�x��:\(�W���+��e���F�9��,��*�!Gh�D��L��8�[v��o�����)�A�a�K�5�S/�)^c����(��W�H�N�W8T�r=op��p]MC�O?���*�� +DO��b/�hs�0�ڜb�9�1C�9-����o�ۿ���ԗ��u���Q��Fc���|W�%@�HB�2�9�������/Dx�D`�U:�Ƈ�gi����"`�%��ᄽ +������t �E`t���6�2k�)P�E�ѿO,��?�k��_�yh(/����=@��u �g���3@������v@]��<����]���~��WD�`��.��f���~�o��ʈ�N�VA��߈�ե�M����� �^��y��M�Q|��ߛ^-{o�~��>��w���Ѓ +��(��g��X���ץ�i��&�X +u��D�U���͕l� ��ғޥ�ߞ���k�������PH�H�C��J�~��S�@O�� ��ѓy7��� �k {��25���of����ϫ�o���{���'!�'���Z%��q�*)�g���C\���#��\���'��0���P_���WL��7��&AlJ���\��� Z��p��,���Y�x��j�c�����O�(6z��I�V�� u�:ג���T��D��O��9�ׄ�Q<��*y =���2��~����/?J,����WJ�Q�W�>����W��u�?��#G��/����4�"�K���{㧏�',I��ҟ综E;���|R�ݠ��~��W�7i8�6����pxh8<4��� ��r�<}8� kG�o;��u�C��P��v�)��A�<$��ց;��{l��� ����� ��#`��F���C�!f� Ӆ/`7��(��0R!9�9�z���@%!/m�]���Ad��hv�G�����3@������pxh8<4{����P/ 3@�}�� B&�^�16�{. �����ߠa�Q�o ���2l���mt���!\%@�X���?5��ճa��~ ��ʠM65wk��a�)T���F��_� +2�$�x�5�_9!�VxRd�1!}����'�`�$����Uԇ��r�?� �Q +�`7`�.���k����_V����zԄ��p�]]�GO���LXCk�3����%tEXtdate:create�2016-07-13T10:21:59+00:00�����%tEXtdate:modify�2016-07-13T09:26:54+00:00�͠���tEXtSoftware�Adobe ImageReadyq�e<����IEND�B`� \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-icons_2e83ff_256x240.png b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..1f5f49756ca64bd20a1048bd7a3a584457d4bf00 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-icons_2e83ff_256x240.png @@ -0,0 +1,18 @@ +�PNG + +��� IHDR�����������IJ���PLTE.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.��.����o���YtRNS�3P���/"Uq@f`2� !<BHK Z#'1S,�4���j���8E���|��������)��Q$� +��b�J��mߜGc?o�h�@^����bKGD��H��� pHYs���H���H�F�k>��dIDATx��]c۶�H�阒]�K���d��%٫뺮��lm���w]����|�p��X�m�-��}<�w�(1$�� ;�F�@��%��?����B,Lh{�t���#���T@�/?j�9 m��N� #���+`��`����I� +��_�-s�ʹU0�M��[�� +s�4`x���#�� �D<�~�K��.4�]`��PDDDDDDĈq������Ek@����A�~�*��� !Y���X�`hv3\LX��Ot�J2b���ؓl�QI<��� �6�-X�lֈ�6�H��|=j�`E�iq����Cv:�q���C?�?���x�,��r*t�ݻ}|;�kP�4���d�Y����f����K��~[ >�X:+�i����ĆQV9\����e�'���A�tOS�:7��2����YsxM�ہ��B���&���z�>n�C��@��r@��*�a�ӝ���%��MFDDDDDD�T�ߖ���H,���E����RU��n ب<��V- @�/Nm�թ���������Hw����*�+��#��$o�e�{�% �7\X��ǀ���2��~0��&n��sbA,�D�� �A�V�I��|� �Og���鴋� �7�y 7Jf�����:_�w^��H v{/O�9���<����Y�`+�� HRٰ����[��?�� +������=���c""""""F�˽�sG�<*k9c��E�8薽�������zfm��r�1�N�������nq�w��&=O�\}K` +#���2��~��L�|?�m>�\�f���:}�4ᦋ���{�)�n[�� +�̰E +KY��D�ۇ-�� �+�Kl=�Ӄ��L`љ�|�%��n� a� ���N�#��5� (4���?�����EDDDD\o�W�Ffq;��\E��_������,���W!%�zE!F�¶.�(USHQ0d�w)T���8#p,�x�B��K���� �*�x��X��E�e������ +K솎%mK��X~s�FE���~������tdc��a��I���1��Af4��dH��c�G�S�B`��0�wev`����"�{�� �.�GDDDD�,d�O�6�k"qk��Me�fS_����U��KŌ&g~>n� �H�})��L���F%8(�)r���!�[4统qQk�0�m[Le���_�7���0�@>1 X0A��Z����Vc�E�V ���Lt�k�3�EJ��44�Zﮊ�N`rt�>`�˥� � � A��HBLH�@��c���Uq=�j������cM����2�s����J���CL�iR �NQ���������0=���Yi�-�|4�V��]��]��B^�ޞ���_H������$�<�$� +a����=��d@� (Z�Ap_�}�~s���:�N�{DC>����m�^������S�&�, ;�N����&�B} ��<_A��B]H�u���N(B�0��{h���1�IK����Ds��j����'��M���8�.�ӫ1�h3�df}mq��� ��n�U{��L�o��z\=?@ ((���e�|=ơ麄�C�i����1r<|�OO�;� `��H��p�Qy�zԈu�����Z���V���Ʋ�!�)��5m�C���2��Ly�g�;���֑�R���jW�a@��@V�L�&W���ru=Z +�̥��=U���5}���������7�;b(�����nP&�s��k�4�����8�ͥ��0���1�U�W�v�k�18dq���T��ՌE]qH8�������G�F�����K�����'��r����Or���r�̧��6"fp��T�^3c��"�����n��Mم-�/��W=�tJ,��X�)���{�P Rm|K����>mX�8v�5h��<������_{ꘀ�Y�F�|&_G;&�>^�����W⁃�&�K���(��81�EB@F&��;"L���'wfw��E-6��o&/̫'X�e,>~�ee��|���A����=) d��Q�`}P[���K��N��˂����/�~)����O[d�O=�3E�l5'Y�$?��7�m���Tzզ.�\��.��` WE�����"""""v�)��V���<���K�ZX.Ex�~Ч)���ߚ�����W_}�5|��s��/!?����'poդ���tC3����@�Q�)��t��`���b!,dY9�6A2����������/튮���n�t�TK>����#]�L;zq�J���r���²[��\-t�ҽ�5 @�ͷϟ��n�T@��+;��c���Qh�C*���T�ڙ��A<Sku�µb�E� /��$�Z���.e�j������_ʤrWaB6d���(��S�s[�|���竕 +/5R���(�4X������76����`3|���P��p�'�H~<R?M�2�)� ��g��Vp��B�n�=�|W�ͬ\��V0_�81Oׄ�Kz||lP_��ω���lxX;ǀ�Ju�<��Ng[��]=�(�#]������p�P�a���i�������s�f�� +V�z��]ౚ������z>�Vr�?�f��?������ �Q�1�T`��} H�k���,{�VZˋT��ϛ�?I̯u�QK�LM�e͆��~��q������y�m0�9�S�;���j�����5 ���i��Q��]7k0�U�ޭ���G�kX����3#���lY��_Цx����j9��`�# +M [z��KuO_z˿Dܭ��*��kOJ�(7��n��\�e� I�T�ƨ�l�/�U������߶uw�.�~���;#�r���.�����8 �o# 5L��h>1�i�����p��V�M�?�/u7��0� X@��L��+M�+�����{��Fkt�{�ŧ89�0`���. ĀC�R+\��/��t�R����; �TӲ���]�aL���|�efđ�� �>�ۣ��G�|�P`P��8C1K՛�A�̍<�2��ۂ��K�r�l@L +L��������8�@�E>`n�����PNԍ,��p�����E��Ɔ����Z�FlÎ;�����F���7��Ȯ;�� +��s�wSz)g7�{r�s��S��gȋ��(߄~�AWytX��$�NV����R�_��<6�p.�O�8�O[�OdDk>_��O�O�}����JS���d��mV�?�W(_��m� ��j���~=H IԁF>T/��{*]IGJ@i����qam�NF|Q�5���0+���E�S8�:�v�`p~v���j:B�����p96�o��ys%�������� �|@H�����]��+�@��t]W�k}}�����7��Fʮr����A�����B���\m�-�_�2PY8�������x�ՎN�.h�~���@+7��z5������t�_/������/�?���0�S>��)���z�i0n�/�B����`{D��W���#`����B��o���[,�g��FVЁ�pP߾���C]Bz�� ��,X�����X�fԃ����A�:H��� k�7��d�Z9��oc}o�]�0�vd�:R]�0�ve���]刈����j����у����| �?�+(��OǍ�+ �#��ys���ߍ�n�p���Fru<��.HȺotM��3h���}��߆P}�������˗��v�����P�}mǀ���?���W��Z@���������}���������@��@���FD�������l����%tEXtdate:create�2016-07-13T10:21:59+00:00�����%tEXtdate:modify�2016-07-13T09:26:54+00:00�͠���tEXtSoftware�Adobe ImageReadyq�e<����IEND�B`� \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-icons_454545_256x240.png b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..618f5b0ca756789f81bc276426805df6f61b91d7 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-icons_454545_256x240.png @@ -0,0 +1,30 @@ +�PNG + +��� IHDR����������E�r@���bKGD�E�;�-��� pHYs���H���H�F�k>��mIDATx��{leG}�?g�K��$����U�!�>T��؈�J��i6A"�V��R%;��"���*UP)� +�/���z�RJ�F��QP��z��BQH�VU������5sμ�9��^�3ߕ��{~����7s�7��<���.��`���� c���Ab/�@�[�V�D��0��3AX9�0�N��_�B���&���>~�>� c�;ab�D�ߎE����Q�z��'k���M�ayԉ��6�!�:u:�:@RŤ�B�yDD���'�L��-�f�]S��q!��f� +S�Q�&�S��7MC��r==3dJ��{��f�Z���S0�Ms��:0K٦g�ʿ��&H�U�=�mc�4�i?UĔG��U4�hc��Qb�]�!��hL���W/� ����@������pxh8�~�|�A��Qf?�ێ��1f¸����=u����Q�GJH��p����PϠI�w״m췥���ԧ>2���"�WÓP&{��n����T:s���f�q���H@���.c�I������~�S�s+�^|B�n�29�dH�������]��v�-ˌ-m�e�h�>�����q&ت��g�9x�#c�n��~!����pxh8��4^�/� ����o�#�Z@��S���^��4� KZKP�d�9���C@F[�����,��a+�����]8��v��K�qHl�w9ק�84�KB��ץ|��&��#��[�\C�����`��R��!�����:�F +z��C���6��)A���T1wU.I�җ!4��ig�3w��������E:��q7����n�0uA���mP��y �T�K(5ͬ�lNæb�T���rw�DV�]��t�e4���7� �L���[��C��0��P��&��0����+��+� ����@������pxh8��4����Y��`��O����E�Z<��h�\J!��䞋��j �;TK�Vr�0��ͬq�cˇ��u���a����p����E{B�w"�K��5���n-��c"w�v�T�6 T�hzီ|6�ŝ���Ι��N{ t��]��K��^m1(�6��m�3��'�R�f���`Ô�� �_�>��j�,�*�-E)�e��{�U�,�� \u���oV��: `o��m�Ke�t��_W��O��dW3���Z Քrv|�~^�g��`j�yc���p�*���f���b�]�M5��9��.��L��N��q+%����ۯ�0�vc�c�J��E�M5���kk�#I�<���x_�� �I#0D�w��4xh8��4^�/� ��^c��� +����d�r��DM{w�Q�t�e�{��^�`��b�r./��M:0գ��*����z���`]|S�B�(�e)�h͎/V����ܮ�"aO!�o� ,�u�^���Љ�^�=�z��t`�WeCC�MQϱo���0q��%���U�o?�<��@6��HG/����������uAQ-_�u||����ִ*2l��ٍ�uG�@� j !�B���r����� q�L!*)�h������.�V�{3����-��!�w�$dP�*�����/P[�t1���l3�hl�y�p������0b��g�L�} �3���$�%\/��.)TwQ�"uK7d�+�2�!��@������pxh8��4�'��aY$m��f�6�lB'�.D�� ��Р��x7S�x��tI��eW�e}���d0�R�W��^ݢ��0](U�T�x����|��T�|����@v�^DfLb��(�2��H��0n8;���_�Q�O��}D���&3{��Y��W�w��5*��e˗?�̖�G� +�:H iZӖ)/MP���(:�!�/�|B��[i����:�Gf �L�`�~��:z$aa���^����ʭ|P�- kbݞ<ەL&�xJ�AABȼ�Hvᑢ�[�yS��ə�w�NJuy��%pw�0�_a"z��x���� �3i�1|���=����@����%�JW����A���m�\���� ��l��X�m9+�(��)������S��� or��ro*E`�Z��1��&=�ޗ�g�!�Rt<<�A.-V���+�l�|����suK��,&�ȇ��%����y�q�s��(A�K�*�q^�~����anb�1`�6��G�P�a�&.� �)b���muL��I���fnE! k̠Ò��c��m���c�ȱD�-B֥֙�D`:G��e�tQ ��7�0���0��������YQ�Ӕ،?�mb�/�eL{8�<� q�{��X4��$s���D@����s�9�����e8��\c(���Y���"�r���7��q6�u- |��B����R���i�x!��9^P�HD�����g�t7K���|��2��"�.�t���V����w�E�u>�b�������f����a?q�h'y'r�y����#\��&�� +o+��Ԫ������|�Y��%��_Hp���"����k��1��*ɫ���U[��&x�9�xA��s�mf�e��<�_����7�;y�6m���i � +:�[��)�EB���7�̰����8f��CH��`⾿�h�)�����}�(�%m���'��&��� ;��(�ݚ!�{:^����R��@���N���Kү"�*�<�V�敡�=��o�h~q���+`6I��i�I<#�����Z=^IE\`�0]1����%�D��A��^�a0f��,���c %[�Gxh8��4^�/������rdh9�����M7L)-�ӂ-���?K(����stբ�h-?�:��[ڧC�r�]�G�(�YB�3�|�C| l�eXW��_�x�V8Ɗ�b����bQ����7�����V�4J�]������l!��=� D?��'a`^����a�q��8���:-��O��YP��x�ۀ���֝��X�5Q�"�Gִ����W}��� +���I>ȓ<�c��b�YV +6=��*��ۿ�-\��įi|��BH���J_F�Wx�CWғ�_��K�`B]J��"}�`�_R��β��&nDsp����t%G-�^���V�����yIc�b�9.hM�u����K��ĭ��6T���6��5Ko(� +%Hz߲�:.��n�z�ōO�>���c��lpVZM_gڰ�C�v��eG{�����<_d�����0e���N�%N�y�ƍ����Ȅp��~�Ú�/���k�������n��������|��(G������#.�s��9�J�ۇ��l���[��6�ɻ�&�.X���{�����SDf��<����y?O�~��ƅDP���*~b���gco��s{;�����'�Z9�Z��.��O�孁���e��U�~?�Ӆ1N�3��ڶD�(��1Gx�x�k�S�H�I~ی?O��������k���,��i�(���ׁۈ�{.�h�_���5�؋�nF�7��0Q���O����S5�:�'����/��ա���J�r���� �.���KN�wu�e��r>n��-�U�$U`I�v%�����.A�U����e�d�� +��;�Ә:�+�a&�XĎ �y������������������G�с��� ��"��4��pxh8��4^��� @d6�((�Ԕ{�C::[�>�H, +�ɴNVN����hr.�~N������Z��`�3����K��Q�|$�%�t��!�Vn%�=�*�7����f��g(�m!fy���"�k�I6Y�/�eZ�ٳ���+���z�g�6W8ɦbQ%�y�{9����Ï�*ŕ�#��7��b-t��X�͕8y��nO�{]�!ټ�*���\� �(��p�2.�H�ٙ�d�.�^Z�(N���&�l�2�&k� �U&ף���#~�.���7������6���58A7����}P:��BlkU�[�8�)�j�w0�$��W� ��!s\�������QF�n(qRK��:'�X���@����=$��x����|�5:��@��]���2�S�i�.�&�� +��$` +8�t�����S =�&[#�߫��U3���Wҳq��^H{���➇�Z���4������"��A��H��#����U��0�+̱�1�Ɏ�;����O9���"�D�E �C+n�U:�|a��ɔ�M|�?H������W1�$~=�k��U�џ���V������V�����l{���7� �����^�;<�,�t[������T"��3SU9l��˾�H���x^�&�a�@���)�E��&�<<B4�(b����p������Ƶ\˫\�u��f�����7r����������^��Ci�[��.��h���_�^��mD�"DD�_3��e�������e��X� �,�B@�fU���/�?���g���B�R���C�&��2���P�8��@3ZtS��<����v7�^#�另�;c'�Nȹ����6�g[�J!Az^ ?�<̯�oɛ�_s[Kg{(e�}�E�~J��,�m<<�����U���g +"&B%��7�~�{��/� G�l��4^�����j�����Ԓt���cA��0\(�����ܓ�Ԡ�Q�8��YN�Bݝ�?[���R��$�k���\�{�u���~�Q���q�)�8���z:G�G��UK�:� 07��6�-�� +WMY<����� ��2�Ѱ��$5�&v�}%��8�)#9&)/��K^2�+��B̳�i���\Ҥ����V�}�LD���1/i��n�]2č��>��I?U�7x���G�4�c�*�i�� +�5)�ñ>�wH�����f5[q���O�.���d&J_�~W\`G{� |-���e/���Чk��d� E�����(���N�i�v=����C`�̲�Z���+���%m +)s�!ī�6Fei�N��%���O*㪞v,s��@��%����4���tS/<E�%��0wr��k{ʉ2b�6ɻ��*���;�����zs�]�,�B��!,ų�uM�zȐ"��={����O���E����۴��w80���ۙ��%�\PL���� +��H�[/� ����@������G����9��A�Pi�G +ѫ+!��'��^��u'þ��:�Z�@�LxZ�:�Ɩ����oQA_�RR�`��E��,���~�]M�y_��xD�$��&J�B�k�Q�@����3����=�A_��هA`��RN�#�"��tX��孋�0Z죡�Ԭa�t����R��Mi�C-�k��r�a�fH4@�C��ܓ���-��`$�~����Ul�$^�Ufr)�0�*-C�n9W-��@M�1��a���@7�g!�7 +?̣|�l�R��/ᭁytX5��L݇��p�����@������pxh8�`:{�1����J��5��#;���ǾD"�-��s�ct�Ln3�<D��B���d1w]���=4H�α�'�!���r�+t��d����eG���{h @�.���k�q���v�e�5V�h.0�©|U������ +��C��u����k��G���O��C��Y� �"@�E�"mNzP�S,��1����rzk�M}������y�.�{+j{���xL��wE^DPk�$�3�cA�Y�~Y��� +�/�C�H�F�����<m�47Ṟ�Q�3��Wa�o�~o�)�C�d݇��E�ƀl7�(̢b��s��ڸ���<<�Fx�~?@��m ����@������v@]��<����=���~��WD�`��.��f���~�o��ʈ�n�VA{_��ե�M����� �^��y��M�Q|��ߟ^-{�~��>������Ѓ +��(��g��X���7��i��&�X +5WJ"�*V���J6s{��I��w�oO_��5~���YX�w(�R��!��m���)^�'��D������ɸ�����5�=�@��+���~���j��yQ`O�`�$�D��<B�F0C<�^%�@��?t�k3�}�@����{�^��y��U��|���pS�nĦ�t���e��=���$�v��>`����H_�B���T#%].Xx��D�ѫ�OR��2�E���\K"��R\T|��:m�O��� +�x��*y =���2��~����/?J,����+%q� �W�ޛ���3������?ܕ�?������� �^���e������ +R����oҎ�5س�~�o����Bo l8��4^�/� ����@�!��/ON�G�����ۮ2t]��С8�cݮ5�z=7���������ˮ���g���@�/�aE[��y#�3�#z��7L�.|�� +��(cR�c�S��m�Q�$�6�ץ{D���a�{T�_j8��4^�/� ����@ñ`�/����_g�"d���`�ɾ����0� ���{����� �����C�j����_9��jD�Ջa�~?� dc�[�����0�*a���������,�& 0��&�+���O�B4!��1��~��Ix����>�8�c��&�G)�j���I������=@�5@�v�&J?��Q��l�Ç@��Q�����?��^�������%tEXtdate:create�2016-07-13T10:21:59+00:00�����%tEXtdate:modify�2016-07-13T09:26:54+00:00�͠���tEXtSoftware�Adobe ImageReadyq�e<����IEND�B`� \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-icons_888888_256x240.png b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-icons_888888_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..ee5e33f27235d1b5cf0259f63f3894a6be33c679 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-icons_888888_256x240.png @@ -0,0 +1,35 @@ +�PNG + +��� IHDR����������E�r@���bKGD��I�( ��� pHYs���H���H�F�k>��tIDATx��{le�}�?g� k�u��J�>D�C�^�Q���M��H��*MU�� h�(*$H���R�*j� �D�]����)Ż(M6��F�6!6�- �xI���i�-�� HN�8��s�uι���g������f����7��3����ƣ��7�x^�/�2&�v&v^�DL� l6I�-��o?��cn��D Iy�e�#d0+�0�3��~������0�g'L�V���[��R�C:B�~(��)$q�vXu�B@��E@`H�NG���`TA�%=]�qAw��J)��u)�9�:e9d`V��0�A{�=��BS*�ڦ�S��gFA��-(D���R˷@�"����g'�U�,eSwʿ���j���*�)l[����.HLyϰ��9�����j�a�I6��MR~��~�nG�ٕ�3� ����@������pxh8��4~=@>���(��mE��3a\`~��=u����Q�����[�f3W��A���i��oK}3wէ�gV�����,j���n2��*ߕ���m��M��] y=��xn"�co�.�L"��7]��EC�:dHz�E@W�.�f+^�eƦ6vռE4��O���`��̴�.�)l�:��7����){�_Я��~"����pxh8��4^�/� ����/�#�\@��S��^�T�0sZs1�J�1�Pr��h�w�V��E�g���S��T��Q5�[ \B���O +`+�˾>}����\�6��/0��k�g���1[ �Kh��l�Xʿ��_�Z�^IA���^�N�4v���OW=%i^�<��9��t�f �2����С��B�Hg�6����!u�\ҭZ�&蒶� +�2����s ���U�]��i�T����� ��]�Uaq;]�A �:�rG-3�<F�n��*�ݴ�T�ݯ 4<;���������@������pxh8��4^�ysh�,ux��$\j��"Z-�mo��SJ��9���{� +���e˹[ �\�fָ�ұ��y�2LT��0�K@�9Լ��Ţ=���?Х��B���=c"��v�T�6 Tokza���9T����s&�6��ո���v�� }3�':��[�5�)�,�xU!��҃@}�����U� �kc�� +ꈡ����Y,]��`&߬('�u*�^�v ��O�wu�?}2�&�C����Ȗr�}ݾ^g�[`��y�c*�9s�"���f_��b�� +uuT?�M���f� + +e���ۏ�0e�vb�c�J��E�M%�6���Po��l�M`n�~Esչd�j|���z��)miOq/{�ک��Jq���A�G������pxh8��4^���a��+ ����ʥ�5�݃F�����+��Y�&{�˾����I� �z��\e�X�����oJ}Hȯ�iW��)~�n��m߮ɞh�����l*7TP3k���XJ7R"�����"NX�U�}ٔއA���/(qW�\���v6�$2� ��-���˶Ezd��j��0u]PT{�[�:>>�L�DkZ�Y���ֺ�14�ZC�WU���b�d�12zB���Y�$i".�~A�i=�������۪>���E��AI�b�\Ϋ������� +c6��O�SB\��ɅJ#"�RE�Ȱ_'��I.��aluI�������� ��YX^�/� ����@����=h��$i3��7[��d:Qu!Ztw�Ul�~F��Ż�b�k�K"$-c��.�3���@��,�y�;i�-�JӉR�H���!���ɷjN��;��L�dw�Ed�p��� fO�,�j�T�q��������+ +�h[@Vef��6KV����x��\�b���|���l}_��$U+�W!��?o[�����y�B(�p3 ��r_�5P�2ݚ�la�˱*�x��GXG$�`�W~9?�r+���y�-k��d����.�@ <]�����#<R�y0/��99����T�����^w� ����.�?0�ꠁ{�]0j"<�v�g��Qxh8��4^���$�S�L��@�����oԆ�5 �l\q+�VN�!��߆���j��L�b-����=UK<��׳�6��R���?S�j����b�s�'�\ +>U��\Z,��W�����4Ig��9��L�1�sa��R���O�^�.�P����(�>�K��\�c�6m^�um ��Ql��g�"�y[ө�D�/����[V�*3谨��X�m�@[�q�X#r,a��5� kLK"0���(����q��A�O�VP��U j�(�iJ��l�Wq����l�i�����x�S�� T!s��XD@����s�9�k����y8��\a���Y���"�r������v֗u- ��v!���H�� ��� �4�<��@��(B$"Pd�V�Z��5Ɯ�� �ߦ�����s0k��B�5h$��=�dpϪ�_�@0+�������4@"h�O�t���c�ky5�v��z�K����\��1@ޒZ��]��B�_.܋ؿ�!���I��Xd��WpW0�Z%y9�s9�jaK���0��h�sN��,�lU�����X!����h�f!�2.)��0����� 6�B|Iq/�Ӽ��0�jD��F[,�5� !m`�-�������$�J~1w�WQ�J�D#"YO�� �6hV�Q��5C��t��/���7 �8�-*�"����_E�U�y0�x�+Cxg�h|����+`6H��i�A|]�����Z=^JE\`20 +�~]���f 5X��`?S�0��Q^��?J�1�%[�Gxh8��4^�/�{��S�"��rؘ���ɛn�RZԧ[v�-�P����O��I'�Z~t�t����O�N�z����q����g����آ�4��X�����ԃ,s�e���q�9 ,2�)�^���Ķ/�����(��rS?�=<��B|W{|�&~�OO������� +�t�q���uZt�E��A��)n��7 �;O&-��+��D쏬iEcG����F� ?�c|�Ǹ��54�:�,lz��O�l �7s��'~C���%B�f�2:`��ě�T��T��bjn� +F�E���,�,p�n��F4'өkLWr�"�P[oa��o��s��k�qNkҭ����\��n��������.�Y�xS�V(A�����q��t+/ԫ-�u�p0w�-z��4��ƴaY�=zt���n��g~��2�7Y,,耄��L d�=|�|�|Y�p�z��?2�\���f�˼���\~'f�{�[j,� >#���(�9�a:��,��وK� �x�R��. ��B%�f6����n�ϻV����/Σ������� %O��+|���!��I��6���3�e��HW����O�� vXIK�O�rZ�8���g�g8=C��2�9Ǫ[�P��B'���rAmK"zʻ�!���� +���m���6�뱾�3����y5����ܓ��"�[�< �J��sϏ��U9Z^��8_�fD!Zq��_\���- ��-`<uQS,�y�����b�]z@h`�*�*GZ������>���)����D�g��鲔��i�qIb.JXT���bj�k�$��M��1^�K6�<��˿�9��C_��fr��E���M~���8]�T�xX��u5�_<���t_0PA����@������p4O�"�qGA餦������v�GbQ���p�rz���E��3��3�U �6����+��$�q?�W +1���X�K<�8� ���[����sC!��}E~5C~=C�n1[x�LO +��g�U�X���=�����̪�y�hs��l(&U�'/qg��v�|�^�8Sx(��o(�B�x�e�\�ӑ�����ľ�U��s���:�҅ͅ2k +W�!�B�Ԝ�i� V���EO�f�X6�g�A5�kOد2���jS���6ۼ�[J���S��j����Q��:(����Z���0Ne +�Z�]L2�$����4@��8�B,���,�Nj(�t'�8.��JC�L�K�U���i��5�#�Xx�#|�U:��@��m��??d,^q5�L!��]�Mr��I4�pZ��;��>�g@��M�F�K�)(�}�f��U�.�{���]��~5��5������>�"����$c�����+�ן�?��Q���c�# +�mK-6�)࿁���_�Y�n��G+��:�|a������"�~ϯ��ٯb�q�~=�+���,j�?�M��y +9"�y��D���ʍn��g����6-z<�,+tK�����xW"�����'l��˾�H��[yJ�&�a�@�~/�9�"�a�%�$iѣ���6.S����8ظ�+y�+�*�o�jo�mp-���k��1 �u����%�=�����-�"� +���4wq�-��Ր�E���K +�|�Uf�G�� +-���Ua]X�r���x.�\���˅h�:"����LF�dF���5p���f�覊�)n�Yͣ�n��Fh� 1{�'��\���<ϫlik)$H�䇙�5��%y��kni�b ��/���O����E���OjZ�<�,�b�������P ���p�+�@��<[��/� ���#/��Z�wp6�$�5�D��E����� +���|6w�^>7��{ԇ�Nĭ��Pw���f�>��k�7�/��c͗=��cM��ﴯ߁A�E`�q��:N*��N��Q����b�UG�`��ʟ�Ƴ���Cᨉ"��5�w5�.��&�v;����.ܱ��7e$�$��y�K�YE<[�y�8����M +n�m%�U�4@��[��&����EC�(�.�/���b���C��>Z�1�_P�O�^�;�Ф������!�N��wc��l�^���]`C1�L�����8GO{� <��fpY�8���:�X�! ��W�Z���Vc��ʺ��b���+����_ݖ�fp9U�4��u +*��QD�I�3cv�1e\�ݎe�(ֲ$��ؿ��.�]��z�)�/�>�>.|mO9Q��HN �P��{����;�=�YJ���7'�[��ɂ-����b< +Xӌ���2��@}�Pw�������aŨ�M� lqG{R�\p��Dx�s��T3�X�ؓ�����@������pxh8���ѱx��e l TZ�B��H�a�e�c��t*ZHF��b52�iiS�[:�DH�S +�))%��_rp�S���eUӮ@��*I�3�*�C� +3��=���&�&5�CB���`����Ê�,o]���~����]3�t�������ح�jXe�x����0CTA3y �5�{�t����!k@Q�V+Vr�� +3�e!�̰Bː�ۓ��O�A���� # ���U4V��D�ч�D����*Oݕ���<:�Xl��Bxh8�L`������pxh8��4y0������J��k5��#;��ǮD"�-�鞺#t�Ln3ã|��Áysɩ�q�v��A2t�>�}�<���Jw�Z,ӱ:�-�*���%��A$�-�lp�I�d���5�S/���BGs�iN�z,v�~�79P�r5�q��p]MM�O?�m���~"g�ǀ�����9VhAmn`��0G�)�����ԧ_ԇ��U������W�1}�3�y A�����p��;d��U���>X����J��x��<mV5'Ṟ�a�0�Wa��s��w��A2�����<w�F}b@�`fQ���=�{Ɂ�h�����s<���5P�ŏ�.�_�px[@������pxh82��P�~���G�Mt��M���-�v@]���ܠ�.߰� �����~��K�9�4}��6��. ��/n�:��&"O�'�"�'G�SH��;U�k�A��'��U峕_������4]|]̅�+%�w~�tUFD�w_���/}�����e��7��%~�B*E�����K�����e�U�پ^̀����Y��`]�����2���Y���O�ޯF��g��E���OB�O���Z5��v�*)���*�C��63ه ��(��/�w0��zP_���WL�� +7��AlJ���(�� ��p�� ,���Y����j�c�����w�(6z��I�V�?+�_�Ԓ�༔���D��O+��9�7��Q���*y =���2��|���/?J,����+%q�{�^�?�@�r_O�ץ������^��c�A�o����.�J��㻏�,K��ҟ��E;��7|B`�N�]�a�+�/i8�5����pxh8��4^�/� �hr?<}4� [��o���u�#�bP�u���\���������l�{l��V��{h��102p�1#=�СG�y�����/��(�b0V!9�9�z��&@%!m�]���A��ju�G�����@������pxh8��4�W�&��P? @�y��)B��� 6��S�Y�&�ϰak�����ͽ�Y�6��pakݞ�}���(|�!,���W/� ���/��A�lj�֮�x�)T��I#}ˏ�Y�L`2eM�)��� +w�B4!��1����FIx���>�8�c��&�G)�j���I������}@�5��V�&J?�� Y�����!�\=jb��<�����h�jo���%tEXtdate:create�2016-07-13T10:21:59+00:00�����%tEXtdate:modify�2016-07-13T09:26:54+00:00�͠���tEXtSoftware�Adobe ImageReadyq�e<����IEND�B`� \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-icons_cd0a0a_256x240.png b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000000000000000000000000000000000000..7e8ebc180a2d2a74739059799407b8b7b57a9092 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/images/ui-icons_cd0a0a_256x240.png @@ -0,0 +1,198 @@ +�PNG + +��� IHDR�����������IJ���PLTE� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +� + +4�v����YtRNS�3P���/"Uq@f`2� !<BHK Z#'1S,�4���j���8E���|��������)��Q$� +��b�J��mߜGc?o�h�@^����bKGD��H��� pHYs���H���H�F�k>��dIDATx��]c۶�H�阒]�K���d��%٫뺮��lm���w]����|�p��X�m�-��}<�w�(1$�� ;�F�@��%��?����B,Lh{�t���#���T@�/?j�9 m��N� #���+`��`����I� +��_�-s�ʹU0�M��[�� +s�4`x���#�� �D<�~�K��.4�]`��PDDDDDDĈq������Ek@����A�~�*��� !Y���X�`hv3\LX��Ot�J2b���ؓl�QI<��� �6�-X�lֈ�6�H��|=j�`E�iq����Cv:�q���C?�?���x�,��r*t�ݻ}|;�kP�4���d�Y����f����K��~[ >�X:+�i����ĆQV9\����e�'���A�tOS�:7��2����YsxM�ہ��B���&���z�>n�C��@��r@��*�a�ӝ���%��MFDDDDDD�T�ߖ���H,���E����RU��n ب<��V- @�/Nm�թ���������Hw����*�+��#��$o�e�{�% �7\X��ǀ���2��~0��&n��sbA,�D�� �A�V�I��|� �Og���鴋� �7�y 7Jf�����:_�w^��H v{/O�9���<����Y�`+�� HRٰ����[��?�� +������=���c""""""F�˽�sG�<*k9c��E�8薽�������zfm��r�1�N�������nq�w��&=O�\}K` +#���2��~��L�|?�m>�\�f���:}�4ᦋ���{�)�n[�� +�̰E +KY��D�ۇ-�� �+�Kl=�Ӄ��L`љ�|�%��n� a� ���N�#��5� (4���?�����EDDDD\o�W�Ffq;��\E��_������,���W!%�zE!F�¶.�(USHQ0d�w)T���8#p,�x�B��K���� �*�x��X��E�e������ +K솎%mK��X~s�FE���~������tdc��a��I���1��Af4��dH��c�G�S�B`��0�wev`����"�{�� �.�GDDDD�,d�O�6�k"qk��Me�fS_����U��KŌ&g~>n� �H�})��L���F%8(�)r���!�[4统qQk�0�m[Le���_�7���0�@>1 X0A��Z����Vc�E�V ���Lt�k�3�EJ��44�Zﮊ�N`rt�>`�˥� � � A��HBLH�@��c���Uq=�j������cM����2�s����J���CL�iR �NQ���������0=���Yi�-�|4�V��]��]��B^�ޞ���_H������$�<�$� +a����=��d@� (Z�Ap_�}�~s���:�N�{DC>����m�^������S�&�, ;�N����&�B} ��<_A��B]H�u���N(B�0��{h���1�IK����Ds��j����'��M���8�.�ӫ1�h3�df}mq��� ��n�U{��L�o��z\=?@ ((���e�|=ơ麄�C�i����1r<|�OO�;� `��H��p�Qy�zԈu�����Z���V���Ʋ�!�)��5m�C���2��Ly�g�;���֑�R���jW�a@��@V�L�&W���ru=Z +�̥��=U���5}���������7�;b(�����nP&�s��k�4�����8�ͥ��0���1�U�W�v�k�18dq���T��ՌE]qH8�������G�F�����K�����'��r����Or���r�̧��6"fp��T�^3c��"�����n��Mم-�/��W=�tJ,��X�)���{�P Rm|K����>mX�8v�5h��<������_{ꘀ�Y�F�|&_G;&�>^�����W⁃�&�K���(��81�EB@F&��;"L���'wfw��E-6��o&/̫'X�e,>~�ee��|���A����=) d��Q�`}P[���K��N��˂����/�~)����O[d�O=�3E�l5'Y�$?��7�m���Tzզ.�\��.��` WE�����"""""v�)��V���<���K�ZX.Ex�~Ч)���ߚ�����W_}�5|��s��/!?����'poդ���tC3����@�Q�)��t��`���b!,dY9�6A2����������/튮���n�t�TK>����#]�L;zq�J���r���²[��\-t�ҽ�5 @�ͷϟ��n�T@��+;��c���Qh�C*���T�ڙ��A<Sku�µb�E� /��$�Z���.e�j������_ʤrWaB6d���(��S�s[�|���竕 +/5R���(�4X������76����`3|���P��p�'�H~<R?M�2�)� ��g��Vp��B�n�=�|W�ͬ\��V0_�81Oׄ�Kz||lP_��ω���lxX;ǀ�Ju�<��Ng[��]=�(�#]������p�P�a���i�������s�f�� +V�z��]ౚ������z>�Vr�?�f��?������ �Q�1�T`��} H�k���,{�VZˋT��ϛ�?I̯u�QK�LM�e͆��~��q������y�m0�9�S�;���j�����5 ���i��Q��]7k0�U�ޭ���G�kX����3#���lY��_Цx����j9��`�# +M [z��KuO_z˿Dܭ��*��kOJ�(7��n��\�e� I�T�ƨ�l�/�U������߶uw�.�~���;#�r���.�����8 �o# 5L��h>1�i�����p��V�M�?�/u7��0� X@��L��+M�+�����{��Fkt�{�ŧ89�0`���. ĀC�R+\��/��t�R����; �TӲ���]�aL���|�efđ�� �>�ۣ��G�|�P`P��8C1K՛�A�̍<�2��ۂ��K�r�l@L +L��������8�@�E>`n�����PNԍ,��p�����E��Ɔ����Z�FlÎ;�����F���7��Ȯ;�� +��s�wSz)g7�{r�s��S��gȋ��(߄~�AWytX��$�NV����R�_��<6�p.�O�8�O[�OdDk>_��O�O�}����JS���d��mV�?�W(_��m� ��j���~=H IԁF>T/��{*]IGJ@i����qam�NF|Q�5���0+���E�S8�:�v�`p~v���j:B�����p96�o��ys%�������� �|@H�����]��+�@��t]W�k}}�����7��Fʮr����A�����B���\m�-�_�2PY8�������x�ՎN�.h�~���@+7��z5������t�_/������/�?���0�S>��)���z�i0n�/�B����`{D��W���#`����B��o���[,�g��FVЁ�pP߾���C]Bz�� ��,X�����X�fԃ����A�:H��� k�7��d�Z9��oc}o�]�0�vd�:R]�0�ve���]刈����j����у����| �?�+(��OǍ�+ �#��ys���ߍ�n�p���Fru<��.HȺotM��3h���}��߆P}�������˗��v�����P�}mǀ���?���W��Z@���������}���������@��@���FD�������l����%tEXtdate:create�2016-07-13T10:21:59+00:00�����%tEXtdate:modify�2016-07-13T09:26:54+00:00�͠���tEXtSoftware�Adobe ImageReadyq�e<����IEND�B`� \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/jquery-ui.min.css b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/jquery-ui.min.css new file mode 100644 index 0000000000000000000000000000000000000000..b3fe46344d7b1b0e8452e071be22972c2dd7e18b --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/css/uitheme1.12.1/jquery-ui.min.css @@ -0,0 +1,7 @@ +/*! jQuery UI - v1.12.1 - 2019-05-26 +* http://jqueryui.com +* Includes: core.css, tabs.css, theme.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?scope=&folderName=smoothness&cornerRadiusShadow=8px&offsetLeftShadow=-8px&offsetTopShadow=-8px&thicknessShadow=8px&opacityShadow=30&bgImgOpacityShadow=0&bgTextureShadow=flat&bgColorShadow=aaaaaa&opacityOverlay=30&bgImgOpacityOverlay=0&bgTextureOverlay=flat&bgColorOverlay=aaaaaa&iconColorError=cd0a0a&fcError=cd0a0a&borderColorError=cd0a0a&bgImgOpacityError=95&bgTextureError=glass&bgColorError=fef1ec&iconColorHighlight=2e83ff&fcHighlight=363636&borderColorHighlight=fcefa1&bgImgOpacityHighlight=55&bgTextureHighlight=glass&bgColorHighlight=fbf9ee&iconColorActive=454545&fcActive=212121&borderColorActive=aaaaaa&bgImgOpacityActive=65&bgTextureActive=glass&bgColorActive=ffffff&iconColorHover=454545&fcHover=212121&borderColorHover=999999&bgImgOpacityHover=75&bgTextureHover=glass&bgColorHover=dadada&iconColorDefault=888888&fcDefault=555555&borderColorDefault=d3d3d3&bgImgOpacityDefault=75&bgTextureDefault=glass&bgColorDefault=e6e6e6&iconColorContent=222222&fcContent=222222&borderColorContent=aaaaaa&bgImgOpacityContent=75&bgTextureContent=flat&bgColorContent=ffffff&iconColorHeader=222222&fcHeader=222222&borderColorHeader=aaaaaa&bgImgOpacityHeader=75&bgTextureHeader=highlight_soft&bgColorHeader=cccccc&cornerRadius=4px&fsDefault=1.1em&fwDefault=normal&ffDefault=Verdana%2CArial%2Csans-serif +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #d3d3d3}.ui-widget-content{border:1px solid #aaa;background:#fff;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url("images/ui-bg_highlight-soft_75_cccccc_1x100.png") 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #d3d3d3;background:#e6e6e6 url("images/ui-bg_glass_75_e6e6e6_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #999;background:#dadada url("images/ui-bg_glass_75_dadada_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#212121;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #aaa;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-icon-background,.ui-state-active .ui-icon-background{border:#aaa;background-color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url("images/ui-bg_glass_55_fbf9ee_1x400.png") 50% 50% repeat-x;color:#363636}.ui-state-checked{border:1px solid #fcefa1;background:#fbf9ee}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url("images/ui-bg_glass_95_fef1ec_1x400.png") 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_454545_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_2e83ff_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cd0a0a_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_888888_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{-webkit-box-shadow:-8px -8px 8px #aaa;box-shadow:-8px -8px 8px #aaa} \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/js/jquery-1.12.4.min.js b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/js/jquery-1.12.4.min.js new file mode 100644 index 0000000000000000000000000000000000000000..e836475870da67f3c72f64777c6e0f37d9f4c87b --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/js/jquery-1.12.4.min.js @@ -0,0 +1,5 @@ +/*! jQuery v1.12.4 | (c) jQuery Foundation | jquery.org/license */ +!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.4",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){c&&!(e=R.exec(h))||(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(c&&!c(f,d,e)||(g.push(f),j&&b.push(h)));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0; +}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),"object"!=typeof b&&"function"!=typeof b||(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}}),function(){var a;l.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,e;return c=d.getElementsByTagName("body")[0],c&&c.style?(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(d.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(e),a):void 0}}();var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),V=["Top","Right","Bottom","Left"],W=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function X(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&U.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var Y=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)Y(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/<tbody/i;function ia(a){Z.test(a.type)&&(a.defaultChecked=a.checked)}function ja(a,b,c,d,e){for(var f,g,h,i,j,k,m,o=a.length,p=ca(b),q=[],r=0;o>r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"<table>"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())a.rnamespace&&!a.rnamespace.test(g.namespace)||(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ma.test(f)?this.mouseHooks:la.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=g.srcElement||d),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,h.filter?h.filter(a,g):a},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button,h=b.fromElement;return null==a.pageX&&null!=b.clientX&&(e=a.target.ownerDocument||d,f=e.documentElement,c=e.body,a.pageX=b.clientX+(f&&f.scrollLeft||c&&c.scrollLeft||0)-(f&&f.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(f&&f.scrollTop||c&&c.scrollTop||0)-(f&&f.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?b.toElement:h),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ra()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ra()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=d.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)}:function(a,b,c){var d="on"+b;a.detachEvent&&("undefined"==typeof a[d]&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?pa:qa):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:qa,isPropagationStopped:qa,isImmediatePropagationStopped:qa,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=pa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=pa,a&&!this.isSimulated&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=pa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return e&&(e===d||n.contains(d,e))||(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submit||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?n.prop(b,"form"):void 0;c&&!n._data(c,"submit")&&(n.event.add(c,"submit._submit",function(a){a._submitBubble=!0}),n._data(c,"submit",!0))})},postDispatch:function(a){a._submitBubble&&(delete a._submitBubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.change||(n.event.special.change={setup:function(){return ka.test(this.nodeName)?("checkbox"!==this.type&&"radio"!==this.type||(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._justChanged=!0)}),n.event.add(this,"click._change",function(a){this._justChanged&&!a.isTrigger&&(this._justChanged=!1),n.event.simulate("change",this,a)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;ka.test(b.nodeName)&&!n._data(b,"change")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a)}),n._data(b,"change",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!ka.test(this.nodeName)}}),l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d){return sa(this,a,b,c,d)},one:function(a,b,c,d){return sa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return b!==!1&&"function"!=typeof b||(c=b,b=void 0),c===!1&&(c=qa),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ta=/ jQuery\d+="(?:null|\d+)"/g,ua=new RegExp("<(?:"+ba+")[\\s/>]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/<script|<style|<link/i,xa=/checked\s*(?:[^=]|=\s*.checked.)/i,ya=/^true\/(.*)/,za=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:"input"!==c&&"textarea"!==c||(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ja[0].contentWindow||Ja[0].contentDocument).document,b.write(),b.close(),c=La(a,b),Ja.detach()),Ka[a]=c),c}var Na=/^margin/,Oa=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Pa=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Qa=d.documentElement;!function(){var b,c,e,f,g,h,i=d.createElement("div"),j=d.createElement("div");if(j.style){j.style.cssText="float:left;opacity:.5",l.opacity="0.5"===j.style.opacity,l.cssFloat=!!j.style.cssFloat,j.style.backgroundClip="content-box",j.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===j.style.backgroundClip,i=d.createElement("div"),i.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",j.innerHTML="",i.appendChild(j),l.boxSizing=""===j.style.boxSizing||""===j.style.MozBoxSizing||""===j.style.WebkitBoxSizing,n.extend(l,{reliableHiddenOffsets:function(){return null==b&&k(),f},boxSizingReliable:function(){return null==b&&k(),e},pixelMarginRight:function(){return null==b&&k(),c},pixelPosition:function(){return null==b&&k(),b},reliableMarginRight:function(){return null==b&&k(),g},reliableMarginLeft:function(){return null==b&&k(),h}});function k(){var k,l,m=d.documentElement;m.appendChild(i),j.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",b=e=h=!1,c=g=!0,a.getComputedStyle&&(l=a.getComputedStyle(j),b="1%"!==(l||{}).top,h="2px"===(l||{}).marginLeft,e="4px"===(l||{width:"4px"}).width,j.style.marginRight="50%",c="4px"===(l||{marginRight:"4px"}).marginRight,k=j.appendChild(d.createElement("div")),k.style.cssText=j.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",k.style.marginRight=k.style.width="0",j.style.width="1px",g=!parseFloat((a.getComputedStyle(k)||{}).marginRight),j.removeChild(k)),j.style.display="none",f=0===j.getClientRects().length,f&&(j.style.display="",j.innerHTML="<table><tr><td></td><td>t</td></tr></table>",j.childNodes[0].style.borderCollapse="separate",k=j.getElementsByTagName("td"),k[0].style.cssText="margin:0;border:0;padding:0;display:none",f=0===k[0].offsetHeight,f&&(k[0].style.display="",k[1].style.display="none",f=0===k[0].offsetHeight)),m.removeChild(i)}}}();var Ra,Sa,Ta=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ra=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Oa.test(g)&&Na.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0===g?g:g+""}):Qa.currentStyle&&(Ra=function(a){return a.currentStyle},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Oa.test(g)&&!Ta.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Ua(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Va=/alpha\([^)]*\)/i,Wa=/opacity\s*=\s*([^)]*)/i,Xa=/^(none|table(?!-c[ea]).+)/,Ya=new RegExp("^("+T+")(.*)$","i"),Za={position:"absolute",visibility:"hidden",display:"block"},$a={letterSpacing:"0",fontWeight:"400"},_a=["Webkit","O","Moz","ms"],ab=d.createElement("div").style;function bb(a){if(a in ab)return a;var b=a.charAt(0).toUpperCase()+a.slice(1),c=_a.length;while(c--)if(a=_a[c]+b,a in ab)return a}function cb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&W(d)&&(f[g]=n._data(d,"olddisplay",Ma(d.nodeName)))):(e=W(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function db(a,b,c){var d=Ya.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function eb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+V[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+V[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+V[f]+"Width",!0,e))):(g+=n.css(a,"padding"+V[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+V[f]+"Width",!0,e)));return g}function fb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ra(a),g=l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Sa(a,b,f),(0>e||null==e)&&(e=a.style[b]),Oa.test(e))return e;d=g&&(l.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+eb(a,b,c||(g?"border":"content"),d,f)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Sa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=U.exec(c))&&e[1]&&(c=X(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Sa(a,b,d)),"normal"===f&&b in $a&&(f=$a[b]),""===c||c?(e=parseFloat(f),c===!0||isFinite(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Xa.test(n.css(a,"display"))&&0===a.offsetWidth?Pa(a,Za,function(){return fb(a,b,d)}):fb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return db(a,c,d?eb(a,b,d,l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Wa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Va,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Va.test(f)?f.replace(Va,e):f+" "+e)}}),n.cssHooks.marginRight=Ua(l.reliableMarginRight,function(a,b){return b?Pa(a,{display:"inline-block"},Sa,[a,"marginRight"]):void 0}),n.cssHooks.marginLeft=Ua(l.reliableMarginLeft,function(a,b){return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{ +marginLeft:0},function(){return a.getBoundingClientRect().left}):0))+"px":void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+V[d]+b]=f[d]||f[d-2]||f[0];return e}},Na.test(a)||(n.cssHooks[a+b].set=db)}),n.fn.extend({css:function(a,b){return Y(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return cb(this,!0)},hide:function(){return cb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){W(this)?n(this).show():n(this).hide()})}});function gb(a,b,c,d,e){return new gb.prototype.init(a,b,c,d,e)}n.Tween=gb,gb.prototype={constructor:gb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=gb.propHooks[this.prop];return a&&a.get?a.get(this):gb.propHooks._default.get(this)},run:function(a){var b,c=gb.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):gb.propHooks._default.set(this),this}},gb.prototype.init.prototype=gb.prototype,gb.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},gb.propHooks.scrollTop=gb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=gb.prototype.init,n.fx.step={};var hb,ib,jb=/^(?:toggle|show|hide)$/,kb=/queueHooks$/;function lb(){return a.setTimeout(function(){hb=void 0}),hb=n.now()}function mb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=V[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function nb(a,b,c){for(var d,e=(qb.tweeners[b]||[]).concat(qb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ob(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&W(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k="none"===j?n._data(a,"olddisplay")||Ma(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==Ma(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],jb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(o))"inline"===("none"===j?Ma(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=nb(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function pb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function qb(a,b,c){var d,e,f=0,g=qb.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=hb||lb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:hb||lb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(pb(k,j.opts.specialEasing);g>f;f++)if(d=qb.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,nb,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(qb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return X(c.elem,a,U.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],qb.tweeners[c]=qb.tweeners[c]||[],qb.tweeners[c].unshift(b)},prefilters:[ob],prefilter:function(a,b){b?qb.prefilters.unshift(a):qb.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,null!=d.queue&&d.queue!==!0||(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(W).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=qb(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&kb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));!b&&c||n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(mb(b,!0),a,d,e)}}),n.each({slideDown:mb("show"),slideUp:mb("hide"),slideToggle:mb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(hb=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),hb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ib||(ib=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(ib),ib=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a,b=d.createElement("input"),c=d.createElement("div"),e=d.createElement("select"),f=e.appendChild(d.createElement("option"));c=d.createElement("div"),c.setAttribute("className","t"),c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],b.setAttribute("type","checkbox"),c.appendChild(b),a=c.getElementsByTagName("a")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==c.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=f.selected,l.enctype=!!d.createElement("form").enctype,e.disabled=!0,l.optDisabled=!f.disabled,b=d.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value}();var rb=/\r/g,sb=/[\x20\t\r\n\f]+/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a)).replace(sb," ")}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>-1)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var tb,ub,vb=n.expr.attrHandle,wb=/^(?:checked|selected)$/i,xb=l.getSetAttribute,yb=l.input;n.fn.extend({attr:function(a,b){return Y(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?ub:tb)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?yb&&xb||!wb.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(xb?c:d)}}),ub={set:function(a,b,c){return b===!1?n.removeAttr(a,c):yb&&xb||!wb.test(c)?a.setAttribute(!xb&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=vb[b]||n.find.attr;yb&&xb||!wb.test(b)?vb[b]=function(a,b,d){var e,f;return d||(f=vb[b],vb[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,vb[b]=f),e}:vb[b]=function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),yb&&xb||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):tb&&tb.set(a,b,c)}}),xb||(tb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},vb.id=vb.name=vb.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:tb.set},n.attrHooks.contenteditable={set:function(a,b,c){tb.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var zb=/^(?:input|select|textarea|button|object)$/i,Ab=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return Y(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):zb.test(a.nodeName)||Ab.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null},set:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex)}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var Bb=/[\t\r\n\f]/g;function Cb(a){return n.attr(a,"class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,Cb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,Cb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Cb(c),d=1===c.nodeType&&(" "+e+" ").replace(Bb," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,Cb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else void 0!==a&&"boolean"!==c||(b=Cb(this),b&&n._data(this,"__className__",b),n.attr(this,"class",b||a===!1?"":n._data(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+Cb(c)+" ").replace(Bb," ").indexOf(b)>-1)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Db=a.location,Eb=n.now(),Fb=/\?/,Gb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(Gb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new a.DOMParser,c=d.parseFromString(b,"text/xml")):(c=new a.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var Hb=/#.*$/,Ib=/([?&])_=[^&]*/,Jb=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Kb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Lb=/^(?:GET|HEAD)$/,Mb=/^\/\//,Nb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Ob={},Pb={},Qb="*/".concat("*"),Rb=Db.href,Sb=Nb.exec(Rb.toLowerCase())||[];function Tb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Ub(a,b,c,d){var e={},f=a===Pb;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Vb(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Wb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Xb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Rb,type:"GET",isLocal:Kb.test(Sb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Qb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Vb(Vb(a,n.ajaxSettings),b):Vb(n.ajaxSettings,a)},ajaxPrefilter:Tb(Ob),ajaxTransport:Tb(Pb),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var d,e,f,g,h,i,j,k,l=n.ajaxSetup({},c),m=l.context||l,o=l.context&&(m.nodeType||m.jquery)?n(m):n.event,p=n.Deferred(),q=n.Callbacks("once memory"),r=l.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!k){k={};while(b=Jb.exec(g))k[b[1].toLowerCase()]=b[2]}b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return j&&j.abort(b),y(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,l.url=((b||l.url||Rb)+"").replace(Hb,"").replace(Mb,Sb[1]+"//"),l.type=c.method||c.type||l.method||l.type,l.dataTypes=n.trim(l.dataType||"*").toLowerCase().match(G)||[""],null==l.crossDomain&&(d=Nb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Sb[1]&&d[2]===Sb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Sb[3]||("http:"===Sb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=n.param(l.data,l.traditional)),Ub(Ob,l,c,w),2===u)return w;i=n.event&&l.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Lb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Fb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Ib.test(f)?f.replace(Ib,"$1_="+Eb++):f+(Fb.test(f)?"&":"?")+"_="+Eb++)),l.ifModified&&(n.lastModified[f]&&w.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&w.setRequestHeader("If-None-Match",n.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Qb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)w.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,w,l)===!1||2===u))return w.abort();v="abort";for(e in{success:1,error:1,complete:1})w[e](l[e]);if(j=Ub(Pb,l,c,w)){if(w.readyState=1,i&&o.trigger("ajaxSend",[w,l]),2===u)return w;l.async&&l.timeout>0&&(h=a.setTimeout(function(){w.abort("timeout")},l.timeout));try{u=1,j.send(s,y)}catch(x){if(!(2>u))throw x;y(-1,x)}}else y(-1,"No Transport");function y(b,c,d,e){var k,s,t,v,x,y=c;2!==u&&(u=2,h&&a.clearTimeout(h),j=void 0,g=e||"",w.readyState=b>0?4:0,k=b>=200&&300>b||304===b,d&&(v=Wb(l,w,d)),v=Xb(l,v,w,k),k?(l.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(n.lastModified[f]=x),x=w.getResponseHeader("etag"),x&&(n.etag[f]=x)),204===b||"HEAD"===l.type?y="nocontent":304===b?y="notmodified":(y=v.state,s=v.data,t=v.error,k=!t)):(t=y,!b&&y||(y="error",0>b&&(b=0))),w.status=b,w.statusText=(c||y)+"",k?p.resolveWith(m,[s,y,w]):p.rejectWith(m,[w,y,t]),w.statusCode(r),r=void 0,i&&o.trigger(k?"ajaxSuccess":"ajaxError",[w,l,k?s:t]),q.fireWith(m,[w,y]),i&&(o.trigger("ajaxComplete",[w,l]),--n.active||n.event.trigger("ajaxStop")))}return w},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}});function Yb(a){return a.style&&a.style.display||n.css(a,"display")}function Zb(a){if(!n.contains(a.ownerDocument||d,a))return!0;while(a&&1===a.nodeType){if("none"===Yb(a)||"hidden"===a.type)return!0;a=a.parentNode}return!1}n.expr.filters.hidden=function(a){return l.reliableHiddenOffsets()?a.offsetWidth<=0&&a.offsetHeight<=0&&!a.getClientRects().length:Zb(a)},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var $b=/%20/g,_b=/\[\]$/,ac=/\r?\n/g,bc=/^(?:submit|button|image|reset|file)$/i,cc=/^(?:input|select|textarea|keygen)/i;function dc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||_b.test(a)?d(a,e):dc(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)dc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)dc(c,a[c],b,e);return d.join("&").replace($b,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&cc.test(this.nodeName)&&!bc.test(a)&&(this.checked||!Z.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(ac,"\r\n")}}):{name:b.name,value:c.replace(ac,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return this.isLocal?ic():d.documentMode>8?hc():/^(get|post|head|put|delete|options)$/i.test(this.type)&&hc()||ic()}:hc;var ec=0,fc={},gc=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in fc)fc[a](void 0,!0)}),l.cors=!!gc&&"withCredentials"in gc,gc=l.ajax=!!gc,gc&&n.ajaxTransport(function(b){if(!b.crossDomain||l.cors){var c;return{send:function(d,e){var f,g=b.xhr(),h=++ec;if(g.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(f in b.xhrFields)g[f]=b.xhrFields[f];b.mimeType&&g.overrideMimeType&&g.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");for(f in d)void 0!==d[f]&&g.setRequestHeader(f,d[f]+"");g.send(b.hasContent&&b.data||null),c=function(a,d){var f,i,j;if(c&&(d||4===g.readyState))if(delete fc[h],c=void 0,g.onreadystatechange=n.noop,d)4!==g.readyState&&g.abort();else{j={},f=g.status,"string"==typeof g.responseText&&(j.text=g.responseText);try{i=g.statusText}catch(k){i=""}f||!b.isLocal||b.crossDomain?1223===f&&(f=204):f=j.text?200:404}j&&e(f,i,j,g.getAllResponseHeaders())},b.async?4===g.readyState?a.setTimeout(c):g.onreadystatechange=fc[h]=c:c()},abort:function(){c&&c(void 0,!0)}}}});function hc(){try{return new a.XMLHttpRequest}catch(b){}}function ic(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=d.head||n("head")[0]||d.documentElement;return{send:function(e,f){b=d.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var jc=[],kc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=jc.pop()||n.expando+"_"+Eb++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(kc.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&kc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(kc,"$1"+e):b.jsonp!==!1&&(b.url+=(Fb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,jc.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||d;var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ja([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var lc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&lc)return lc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h,a.length)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(this,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function mc(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?("undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),c=mc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Qa})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return Y(this,function(a,d,e){var f=mc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ua(l.pixelPosition,function(a,c){return c?(c=Sa(a,b),Oa.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({ +padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Y(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var nc=a.jQuery,oc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=oc),b&&a.jQuery===n&&(a.jQuery=nc),n},b||(a.jQuery=a.$=n),n}); diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/js/jquery-ui-1.12.1.min.js b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/js/jquery-ui-1.12.1.min.js new file mode 100644 index 0000000000000000000000000000000000000000..25398a167415050ae8bfb0bfebac6aa3ab790909 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/js/jquery-ui-1.12.1.min.js @@ -0,0 +1,13 @@ +/*! jQuery UI - v1.12.1 - 2016-09-14 +* http://jqueryui.com +* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)})(function(t){function e(t){for(var e=t.css("visibility");"inherit"===e;)t=t.parent(),e=t.css("visibility");return"hidden"!==e}function i(t){for(var e,i;t.length&&t[0]!==document;){if(e=t.css("position"),("absolute"===e||"relative"===e||"fixed"===e)&&(i=parseInt(t.css("zIndex"),10),!isNaN(i)&&0!==i))return i;t=t.parent()}return 0}function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},t.extend(this._defaults,this.regional[""]),this.regional.en=t.extend(!0,{},this.regional[""]),this.regional["en-US"]=t.extend(!0,{},this.regional.en),this.dpDiv=n(t("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function n(e){var i="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return e.on("mouseout",i,function(){t(this).removeClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).removeClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).removeClass("ui-datepicker-next-hover")}).on("mouseover",i,o)}function o(){t.datepicker._isDisabledDatepicker(m.inline?m.dpDiv.parent()[0]:m.input[0])||(t(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),t(this).addClass("ui-state-hover"),-1!==this.className.indexOf("ui-datepicker-prev")&&t(this).addClass("ui-datepicker-prev-hover"),-1!==this.className.indexOf("ui-datepicker-next")&&t(this).addClass("ui-datepicker-next-hover"))}function a(e,i){t.extend(e,i);for(var s in i)null==i[s]&&(e[s]=i[s]);return e}function r(t){return function(){var e=this.element.val();t.apply(this,arguments),this._refresh(),e!==this.element.val()&&this._trigger("change")}}t.ui=t.ui||{},t.ui.version="1.12.1";var h=0,l=Array.prototype.slice;t.cleanData=function(e){return function(i){var s,n,o;for(o=0;null!=(n=i[o]);o++)try{s=t._data(n,"events"),s&&s.remove&&t(n).triggerHandler("remove")}catch(a){}e(i)}}(t.cleanData),t.widget=function(e,i,s){var n,o,a,r={},h=e.split(".")[0];e=e.split(".")[1];var l=h+"-"+e;return s||(s=i,i=t.Widget),t.isArray(s)&&(s=t.extend.apply(null,[{}].concat(s))),t.expr[":"][l.toLowerCase()]=function(e){return!!t.data(e,l)},t[h]=t[h]||{},n=t[h][e],o=t[h][e]=function(t,e){return this._createWidget?(arguments.length&&this._createWidget(t,e),void 0):new o(t,e)},t.extend(o,n,{version:s.version,_proto:t.extend({},s),_childConstructors:[]}),a=new i,a.options=t.widget.extend({},a.options),t.each(s,function(e,s){return t.isFunction(s)?(r[e]=function(){function t(){return i.prototype[e].apply(this,arguments)}function n(t){return i.prototype[e].apply(this,t)}return function(){var e,i=this._super,o=this._superApply;return this._super=t,this._superApply=n,e=s.apply(this,arguments),this._super=i,this._superApply=o,e}}(),void 0):(r[e]=s,void 0)}),o.prototype=t.widget.extend(a,{widgetEventPrefix:n?a.widgetEventPrefix||e:e},r,{constructor:o,namespace:h,widgetName:e,widgetFullName:l}),n?(t.each(n._childConstructors,function(e,i){var s=i.prototype;t.widget(s.namespace+"."+s.widgetName,o,i._proto)}),delete n._childConstructors):i._childConstructors.push(o),t.widget.bridge(e,o),o},t.widget.extend=function(e){for(var i,s,n=l.call(arguments,1),o=0,a=n.length;a>o;o++)for(i in n[o])s=n[o][i],n[o].hasOwnProperty(i)&&void 0!==s&&(e[i]=t.isPlainObject(s)?t.isPlainObject(e[i])?t.widget.extend({},e[i],s):t.widget.extend({},s):s);return e},t.widget.bridge=function(e,i){var s=i.prototype.widgetFullName||e;t.fn[e]=function(n){var o="string"==typeof n,a=l.call(arguments,1),r=this;return o?this.length||"instance"!==n?this.each(function(){var i,o=t.data(this,s);return"instance"===n?(r=o,!1):o?t.isFunction(o[n])&&"_"!==n.charAt(0)?(i=o[n].apply(o,a),i!==o&&void 0!==i?(r=i&&i.jquery?r.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+n+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+n+"'")}):r=void 0:(a.length&&(n=t.widget.extend.apply(null,[n].concat(a))),this.each(function(){var e=t.data(this,s);e?(e.option(n||{}),e._init&&e._init()):t.data(this,s,new i(n,this))})),r}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,i){i=t(i||this.defaultElement||this)[0],this.element=t(i),this.uuid=h++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},i!==this&&(t.data(i,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===i&&this.destroy()}}),this.document=t(i.style?i.ownerDocument:i.document||i),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("<div style='display:block;position:absolute;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.width<e.element[0].scrollWidth,o="scroll"===s||"auto"===s&&e.height<e.element[0].scrollHeight;return{width:o?t.position.scrollbarWidth():0,height:n?t.position.scrollbarWidth():0}},getWithinInfo:function(e){var i=t(e||window),s=t.isWindow(i[0]),n=!!i[0]&&9===i[0].nodeType,o=!s&&!n;return{element:i,isWindow:s,isDocument:n,offset:o?t(e).offset():{left:0,top:0},scrollLeft:i.scrollLeft(),scrollTop:i.scrollTop(),width:i.outerWidth(),height:i.outerHeight()}}},t.fn.position=function(n){if(!n||!n.of)return d.apply(this,arguments);n=t.extend({},n);var u,p,f,g,m,_,v=t(n.of),b=t.position.getWithinInfo(n.within),y=t.position.getScrollInfo(b),w=(n.collision||"flip").split(" "),k={};return _=s(v),v[0].preventDefault&&(n.at="left top"),p=_.width,f=_.height,g=_.offset,m=t.extend({},g),t.each(["my","at"],function(){var t,e,i=(n[this]||"").split(" ");1===i.length&&(i=r.test(i[0])?i.concat(["center"]):h.test(i[0])?["center"].concat(i):["center","center"]),i[0]=r.test(i[0])?i[0]:"center",i[1]=h.test(i[1])?i[1]:"center",t=l.exec(i[0]),e=l.exec(i[1]),k[this]=[t?t[0]:0,e?e[0]:0],n[this]=[c.exec(i[0])[0],c.exec(i[1])[0]]}),1===w.length&&(w[1]=w[0]),"right"===n.at[0]?m.left+=p:"center"===n.at[0]&&(m.left+=p/2),"bottom"===n.at[1]?m.top+=f:"center"===n.at[1]&&(m.top+=f/2),u=e(k.at,p,f),m.left+=u[0],m.top+=u[1],this.each(function(){var s,r,h=t(this),l=h.outerWidth(),c=h.outerHeight(),d=i(this,"marginLeft"),_=i(this,"marginTop"),x=l+d+i(this,"marginRight")+y.width,C=c+_+i(this,"marginBottom")+y.height,D=t.extend({},m),I=e(k.my,h.outerWidth(),h.outerHeight());"right"===n.my[0]?D.left-=l:"center"===n.my[0]&&(D.left-=l/2),"bottom"===n.my[1]?D.top-=c:"center"===n.my[1]&&(D.top-=c/2),D.left+=I[0],D.top+=I[1],s={marginLeft:d,marginTop:_},t.each(["left","top"],function(e,i){t.ui.position[w[e]]&&t.ui.position[w[e]][i](D,{targetWidth:p,targetHeight:f,elemWidth:l,elemHeight:c,collisionPosition:s,collisionWidth:x,collisionHeight:C,offset:[u[0]+I[0],u[1]+I[1]],my:n.my,at:n.at,within:b,elem:h})}),n.using&&(r=function(t){var e=g.left-D.left,i=e+p-l,s=g.top-D.top,r=s+f-c,u={target:{element:v,left:g.left,top:g.top,width:p,height:f},element:{element:h,left:D.left,top:D.top,width:l,height:c},horizontal:0>i?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-h,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}});var c="ui-effects-",u="ui-effects-style",d="ui-effects-animated",p=t;t.effects={effect:{}},function(t,e){function i(t,e,i){var s=u[e.type]||{};return null==t?i||!e.def?null:e.def:(t=s.floor?~~t:parseFloat(t),isNaN(t)?e.def:s.mod?(t+s.mod)%s.mod:0>t?0:t>s.max?s.max:t)}function s(i){var s=l(),n=s._rgba=[];return i=i.toLowerCase(),f(h,function(t,o){var a,r=o.re.exec(i),h=r&&o.parse(r),l=o.space||"rgba";return h?(a=s[l](h),s[c[l].cache]=a[c[l].cache],n=s._rgba=a._rgba,!1):e}),n.length?("0,0,0,0"===n.join()&&t.extend(n,o.transparent),s):o[i]}function n(t,e,i){return i=(i+1)%1,1>6*i?t+6*(e-t)*i:1>2*i?e:2>3*i?t+6*(e-t)*(2/3-i):t}var o,a="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,h=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[t[1],t[2],t[3],t[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(t){return[2.55*t[1],2.55*t[2],2.55*t[3],t[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(t){return[parseInt(t[1],16),parseInt(t[2],16),parseInt(t[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(t){return[parseInt(t[1]+t[1],16),parseInt(t[2]+t[2],16),parseInt(t[3]+t[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(t){return[t[1],t[2]/100,t[3]/100,t[4]]}}],l=t.Color=function(e,i,s,n){return new t.Color.fn.parse(e,i,s,n)},c={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},d=l.support={},p=t("<p>")[0],f=t.each;p.style.cssText="background-color:rgba(1,1,1,.5)",d.rgba=p.style.backgroundColor.indexOf("rgba")>-1,f(c,function(t,e){e.cache="_"+t,e.props.alpha={idx:3,type:"percent",def:1}}),l.fn=t.extend(l.prototype,{parse:function(n,a,r,h){if(n===e)return this._rgba=[null,null,null,null],this;(n.jquery||n.nodeType)&&(n=t(n).css(a),a=e);var u=this,d=t.type(n),p=this._rgba=[];return a!==e&&(n=[n,a,r,h],d="array"),"string"===d?this.parse(s(n)||o._default):"array"===d?(f(c.rgba.props,function(t,e){p[e.idx]=i(n[e.idx],e)}),this):"object"===d?(n instanceof l?f(c,function(t,e){n[e.cache]&&(u[e.cache]=n[e.cache].slice())}):f(c,function(e,s){var o=s.cache;f(s.props,function(t,e){if(!u[o]&&s.to){if("alpha"===t||null==n[t])return;u[o]=s.to(u._rgba)}u[o][e.idx]=i(n[t],e,!0)}),u[o]&&0>t.inArray(null,u[o].slice(0,3))&&(u[o][3]=1,s.from&&(u._rgba=s.from(u[o])))}),this):e},is:function(t){var i=l(t),s=!0,n=this;return f(c,function(t,o){var a,r=i[o.cache];return r&&(a=n[o.cache]||o.to&&o.to(n._rgba)||[],f(o.props,function(t,i){return null!=r[i.idx]?s=r[i.idx]===a[i.idx]:e})),s}),s},_space:function(){var t=[],e=this;return f(c,function(i,s){e[s.cache]&&t.push(i)}),t.pop()},transition:function(t,e){var s=l(t),n=s._space(),o=c[n],a=0===this.alpha()?l("transparent"):this,r=a[o.cache]||o.to(a._rgba),h=r.slice();return s=s[o.cache],f(o.props,function(t,n){var o=n.idx,a=r[o],l=s[o],c=u[n.type]||{};null!==l&&(null===a?h[o]=l:(c.mod&&(l-a>c.mod/2?a+=c.mod:a-l>c.mod/2&&(a-=c.mod)),h[o]=i((l-a)*e+a,n)))}),this[n](h)},blend:function(e){if(1===this._rgba[3])return this;var i=this._rgba.slice(),s=i.pop(),n=l(e)._rgba;return l(t.map(i,function(t,e){return(1-s)*n[e]+s*t}))},toRgbaString:function(){var e="rgba(",i=t.map(this._rgba,function(t,e){return null==t?e>2?1:0:t});return 1===i[3]&&(i.pop(),e="rgb("),e+i.join()+")"},toHslaString:function(){var e="hsla(",i=t.map(this.hsla(),function(t,e){return null==t&&(t=e>2?1:0),e&&3>e&&(t=Math.round(100*t)+"%"),t});return 1===i[3]&&(i.pop(),e="hsl("),e+i.join()+")"},toHexString:function(e){var i=this._rgba.slice(),s=i.pop();return e&&i.push(~~(255*s)),"#"+t.map(i,function(t){return t=(t||0).toString(16),1===t.length?"0"+t:t}).join("")},toString:function(){return 0===this._rgba[3]?"transparent":this.toRgbaString()}}),l.fn.parse.prototype=l.fn,c.hsla.to=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e,i,s=t[0]/255,n=t[1]/255,o=t[2]/255,a=t[3],r=Math.max(s,n,o),h=Math.min(s,n,o),l=r-h,c=r+h,u=.5*c;return e=h===r?0:s===r?60*(n-o)/l+360:n===r?60*(o-s)/l+120:60*(s-n)/l+240,i=0===l?0:.5>=u?l/c:l/(2-c),[Math.round(e)%360,i,u,null==a?1:a]},c.hsla.from=function(t){if(null==t[0]||null==t[1]||null==t[2])return[null,null,null,t[3]];var e=t[0]/360,i=t[1],s=t[2],o=t[3],a=.5>=s?s*(1+i):s+i-s*i,r=2*s-a;return[Math.round(255*n(r,a,e+1/3)),Math.round(255*n(r,a,e)),Math.round(255*n(r,a,e-1/3)),o]},f(c,function(s,n){var o=n.props,a=n.cache,h=n.to,c=n.from;l.fn[s]=function(s){if(h&&!this[a]&&(this[a]=h(this._rgba)),s===e)return this[a].slice();var n,r=t.type(s),u="array"===r||"object"===r?s:arguments,d=this[a].slice();return f(o,function(t,e){var s=u["object"===r?t:e.idx];null==s&&(s=d[e.idx]),d[e.idx]=i(s,e)}),c?(n=l(c(d)),n[a]=d,n):l(d)},f(o,function(e,i){l.fn[e]||(l.fn[e]=function(n){var o,a=t.type(n),h="alpha"===e?this._hsla?"hsla":"rgba":s,l=this[h](),c=l[i.idx];return"undefined"===a?c:("function"===a&&(n=n.call(this,c),a=t.type(n)),null==n&&i.empty?this:("string"===a&&(o=r.exec(n),o&&(n=c+parseFloat(o[2])*("+"===o[1]?1:-1))),l[i.idx]=n,this[h](l)))})})}),l.hook=function(e){var i=e.split(" ");f(i,function(e,i){t.cssHooks[i]={set:function(e,n){var o,a,r="";if("transparent"!==n&&("string"!==t.type(n)||(o=s(n)))){if(n=l(o||n),!d.rgba&&1!==n._rgba[3]){for(a="backgroundColor"===i?e.parentNode:e;(""===r||"transparent"===r)&&a&&a.style;)try{r=t.css(a,"backgroundColor"),a=a.parentNode}catch(h){}n=n.blend(r&&"transparent"!==r?r:"_default")}n=n.toRgbaString()}try{e.style[i]=n}catch(h){}}},t.fx.step[i]=function(e){e.colorInit||(e.start=l(e.elem,i),e.end=l(e.end),e.colorInit=!0),t.cssHooks[i].set(e.elem,e.start.transition(e.end,e.pos))}})},l.hook(a),t.cssHooks.borderColor={expand:function(t){var e={};return f(["Top","Right","Bottom","Left"],function(i,s){e["border"+s+"Color"]=t}),e}},o=t.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(p),function(){function e(e){var i,s,n=e.ownerDocument.defaultView?e.ownerDocument.defaultView.getComputedStyle(e,null):e.currentStyle,o={};if(n&&n.length&&n[0]&&n[n[0]])for(s=n.length;s--;)i=n[s],"string"==typeof n[i]&&(o[t.camelCase(i)]=n[i]);else for(i in n)"string"==typeof n[i]&&(o[i]=n[i]);return o}function i(e,i){var s,o,a={};for(s in i)o=i[s],e[s]!==o&&(n[s]||(t.fx.step[s]||!isNaN(parseFloat(o)))&&(a[s]=o));return a}var s=["add","remove","toggle"],n={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};t.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(e,i){t.fx.step[i]=function(t){("none"!==t.end&&!t.setAttr||1===t.pos&&!t.setAttr)&&(p.style(t.elem,i,t.end),t.setAttr=!0)}}),t.fn.addBack||(t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.effects.animateClass=function(n,o,a,r){var h=t.speed(o,a,r);return this.queue(function(){var o,a=t(this),r=a.attr("class")||"",l=h.children?a.find("*").addBack():a;l=l.map(function(){var i=t(this);return{el:i,start:e(this)}}),o=function(){t.each(s,function(t,e){n[e]&&a[e+"Class"](n[e])})},o(),l=l.map(function(){return this.end=e(this.el[0]),this.diff=i(this.start,this.end),this}),a.attr("class",r),l=l.map(function(){var e=this,i=t.Deferred(),s=t.extend({},h,{queue:!1,complete:function(){i.resolve(e)}});return this.el.animate(this.diff,s),i.promise()}),t.when.apply(t,l.get()).done(function(){o(),t.each(arguments,function(){var e=this.el;t.each(this.diff,function(t){e.css(t,"")})}),h.complete.call(a[0])})})},t.fn.extend({addClass:function(e){return function(i,s,n,o){return s?t.effects.animateClass.call(this,{add:i},s,n,o):e.apply(this,arguments)}}(t.fn.addClass),removeClass:function(e){return function(i,s,n,o){return arguments.length>1?t.effects.animateClass.call(this,{remove:i},s,n,o):e.apply(this,arguments)}}(t.fn.removeClass),toggleClass:function(e){return function(i,s,n,o,a){return"boolean"==typeof s||void 0===s?n?t.effects.animateClass.call(this,s?{add:i}:{remove:i},n,o,a):e.apply(this,arguments):t.effects.animateClass.call(this,{toggle:i},s,n,o)}}(t.fn.toggleClass),switchClass:function(e,i,s,n,o){return t.effects.animateClass.call(this,{add:i,remove:e},s,n,o)}})}(),function(){function e(e,i,s,n){return t.isPlainObject(e)&&(i=e,e=e.effect),e={effect:e},null==i&&(i={}),t.isFunction(i)&&(n=i,s=null,i={}),("number"==typeof i||t.fx.speeds[i])&&(n=s,s=i,i={}),t.isFunction(s)&&(n=s,s=null),i&&t.extend(e,i),s=s||i.duration,e.duration=t.fx.off?0:"number"==typeof s?s:s in t.fx.speeds?t.fx.speeds[s]:t.fx.speeds._default,e.complete=n||i.complete,e}function i(e){return!e||"number"==typeof e||t.fx.speeds[e]?!0:"string"!=typeof e||t.effects.effect[e]?t.isFunction(e)?!0:"object"!=typeof e||e.effect?!1:!0:!0}function s(t,e){var i=e.outerWidth(),s=e.outerHeight(),n=/^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/,o=n.exec(t)||["",0,i,s,0];return{top:parseFloat(o[1])||0,right:"auto"===o[2]?i:parseFloat(o[2]),bottom:"auto"===o[3]?s:parseFloat(o[3]),left:parseFloat(o[4])||0}}t.expr&&t.expr.filters&&t.expr.filters.animated&&(t.expr.filters.animated=function(e){return function(i){return!!t(i).data(d)||e(i)}}(t.expr.filters.animated)),t.uiBackCompat!==!1&&t.extend(t.effects,{save:function(t,e){for(var i=0,s=e.length;s>i;i++)null!==e[i]&&t.data(c+e[i],t[0].style[e[i]])},restore:function(t,e){for(var i,s=0,n=e.length;n>s;s++)null!==e[s]&&(i=t.data(c+e[s]),t.css(e[s],i))},setMode:function(t,e){return"toggle"===e&&(e=t.is(":hidden")?"show":"hide"),e},createWrapper:function(e){if(e.parent().is(".ui-effects-wrapper"))return e.parent();var i={width:e.outerWidth(!0),height:e.outerHeight(!0),"float":e.css("float")},s=t("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),n={width:e.width(),height:e.height()},o=document.activeElement;try{o.id}catch(a){o=document.body}return e.wrap(s),(e[0]===o||t.contains(e[0],o))&&t(o).trigger("focus"),s=e.parent(),"static"===e.css("position")?(s.css({position:"relative"}),e.css({position:"relative"})):(t.extend(i,{position:e.css("position"),zIndex:e.css("z-index")}),t.each(["top","left","bottom","right"],function(t,s){i[s]=e.css(s),isNaN(parseInt(i[s],10))&&(i[s]="auto")}),e.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),e.css(n),s.css(i).show()},removeWrapper:function(e){var i=document.activeElement;return e.parent().is(".ui-effects-wrapper")&&(e.parent().replaceWith(e),(e[0]===i||t.contains(e[0],i))&&t(i).trigger("focus")),e}}),t.extend(t.effects,{version:"1.12.1",define:function(e,i,s){return s||(s=i,i="effect"),t.effects.effect[e]=s,t.effects.effect[e].mode=i,s},scaledDimensions:function(t,e,i){if(0===e)return{height:0,width:0,outerHeight:0,outerWidth:0};var s="horizontal"!==i?(e||100)/100:1,n="vertical"!==i?(e||100)/100:1;return{height:t.height()*n,width:t.width()*s,outerHeight:t.outerHeight()*n,outerWidth:t.outerWidth()*s}},clipToBox:function(t){return{width:t.clip.right-t.clip.left,height:t.clip.bottom-t.clip.top,left:t.clip.left,top:t.clip.top}},unshift:function(t,e,i){var s=t.queue();e>1&&s.splice.apply(s,[1,0].concat(s.splice(e,i))),t.dequeue()},saveStyle:function(t){t.data(u,t[0].style.cssText)},restoreStyle:function(t){t[0].style.cssText=t.data(u)||"",t.removeData(u)},mode:function(t,e){var i=t.is(":hidden");return"toggle"===e&&(e=i?"show":"hide"),(i?"hide"===e:"show"===e)&&(e="none"),e},getBaseline:function(t,e){var i,s;switch(t[0]){case"top":i=0;break;case"middle":i=.5;break;case"bottom":i=1;break;default:i=t[0]/e.height}switch(t[1]){case"left":s=0;break;case"center":s=.5;break;case"right":s=1;break;default:s=t[1]/e.width}return{x:s,y:i}},createPlaceholder:function(e){var i,s=e.css("position"),n=e.position();return e.css({marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()),/^(static|relative)/.test(s)&&(s="absolute",i=t("<"+e[0].nodeName+">").insertAfter(e).css({display:/^(inline|ruby)/.test(e.css("display"))?"inline-block":"block",visibility:"hidden",marginTop:e.css("marginTop"),marginBottom:e.css("marginBottom"),marginLeft:e.css("marginLeft"),marginRight:e.css("marginRight"),"float":e.css("float")}).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).addClass("ui-effects-placeholder"),e.data(c+"placeholder",i)),e.css({position:s,left:n.left,top:n.top}),i},removePlaceholder:function(t){var e=c+"placeholder",i=t.data(e);i&&(i.remove(),t.removeData(e))},cleanUp:function(e){t.effects.restoreStyle(e),t.effects.removePlaceholder(e)},setTransition:function(e,i,s,n){return n=n||{},t.each(i,function(t,i){var o=e.cssUnit(i);o[0]>0&&(n[i]=o[0]*s+o[1])}),n}}),t.fn.extend({effect:function(){function i(e){function i(){r.removeData(d),t.effects.cleanUp(r),"hide"===s.mode&&r.hide(),a()}function a(){t.isFunction(h)&&h.call(r[0]),t.isFunction(e)&&e()}var r=t(this);s.mode=c.shift(),t.uiBackCompat===!1||o?"none"===s.mode?(r[l](),a()):n.call(r[0],s,i):(r.is(":hidden")?"hide"===l:"show"===l)?(r[l](),a()):n.call(r[0],s,a)}var s=e.apply(this,arguments),n=t.effects.effect[s.effect],o=n.mode,a=s.queue,r=a||"fx",h=s.complete,l=s.mode,c=[],u=function(e){var i=t(this),s=t.effects.mode(i,l)||o;i.data(d,!0),c.push(s),o&&("show"===s||s===o&&"hide"===s)&&i.show(),o&&"none"===s||t.effects.saveStyle(i),t.isFunction(e)&&e()};return t.fx.off||!n?l?this[l](s.duration,h):this.each(function(){h&&h.call(this)}):a===!1?this.each(u).each(i):this.queue(r,u).queue(r,i)},show:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="show",this.effect.call(this,n) +}}(t.fn.show),hide:function(t){return function(s){if(i(s))return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="hide",this.effect.call(this,n)}}(t.fn.hide),toggle:function(t){return function(s){if(i(s)||"boolean"==typeof s)return t.apply(this,arguments);var n=e.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)}}(t.fn.toggle),cssUnit:function(e){var i=this.css(e),s=[];return t.each(["em","px","%","pt"],function(t,e){i.indexOf(e)>0&&(s=[parseFloat(i),e])}),s},cssClip:function(t){return t?this.css("clip","rect("+t.top+"px "+t.right+"px "+t.bottom+"px "+t.left+"px)"):s(this.css("clip"),this)},transfer:function(e,i){var s=t(this),n=t(e.to),o="fixed"===n.css("position"),a=t("body"),r=o?a.scrollTop():0,h=o?a.scrollLeft():0,l=n.offset(),c={top:l.top-r,left:l.left-h,height:n.innerHeight(),width:n.innerWidth()},u=s.offset(),d=t("<div class='ui-effects-transfer'></div>").appendTo("body").addClass(e.className).css({top:u.top-r,left:u.left-h,height:s.innerHeight(),width:s.innerWidth(),position:o?"fixed":"absolute"}).animate(c,e.duration,e.easing,function(){d.remove(),t.isFunction(i)&&i()})}}),t.fx.step.clip=function(e){e.clipInit||(e.start=t(e.elem).cssClip(),"string"==typeof e.end&&(e.end=s(e.end,e.elem)),e.clipInit=!0),t(e.elem).cssClip({top:e.pos*(e.end.top-e.start.top)+e.start.top,right:e.pos*(e.end.right-e.start.right)+e.start.right,bottom:e.pos*(e.end.bottom-e.start.bottom)+e.start.bottom,left:e.pos*(e.end.left-e.start.left)+e.start.left})}}(),function(){var e={};t.each(["Quad","Cubic","Quart","Quint","Expo"],function(t,i){e[i]=function(e){return Math.pow(e,t+2)}}),t.extend(e,{Sine:function(t){return 1-Math.cos(t*Math.PI/2)},Circ:function(t){return 1-Math.sqrt(1-t*t)},Elastic:function(t){return 0===t||1===t?t:-Math.pow(2,8*(t-1))*Math.sin((80*(t-1)-7.5)*Math.PI/15)},Back:function(t){return t*t*(3*t-2)},Bounce:function(t){for(var e,i=4;((e=Math.pow(2,--i))-1)/11>t;);return 1/Math.pow(4,3-i)-7.5625*Math.pow((3*e-2)/22-t,2)}}),t.each(e,function(e,i){t.easing["easeIn"+e]=i,t.easing["easeOut"+e]=function(t){return 1-i(1-t)},t.easing["easeInOut"+e]=function(t){return.5>t?i(2*t)/2:1-i(-2*t+2)/2}})}();var f=t.effects;t.effects.define("blind","hide",function(e,i){var s={up:["bottom","top"],vertical:["bottom","top"],down:["top","bottom"],left:["right","left"],horizontal:["right","left"],right:["left","right"]},n=t(this),o=e.direction||"up",a=n.cssClip(),r={clip:t.extend({},a)},h=t.effects.createPlaceholder(n);r.clip[s[o][0]]=r.clip[s[o][1]],"show"===e.mode&&(n.cssClip(r.clip),h&&h.css(t.effects.clipToBox(r)),r.clip=a),h&&h.animate(t.effects.clipToBox(r),e.duration,e.easing),n.animate(r,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("bounce",function(e,i){var s,n,o,a=t(this),r=e.mode,h="hide"===r,l="show"===r,c=e.direction||"up",u=e.distance,d=e.times||5,p=2*d+(l||h?1:0),f=e.duration/p,g=e.easing,m="up"===c||"down"===c?"top":"left",_="up"===c||"left"===c,v=0,b=a.queue().length;for(t.effects.createPlaceholder(a),o=a.css(m),u||(u=a["top"===m?"outerHeight":"outerWidth"]()/3),l&&(n={opacity:1},n[m]=o,a.css("opacity",0).css(m,_?2*-u:2*u).animate(n,f,g)),h&&(u/=Math.pow(2,d-1)),n={},n[m]=o;d>v;v++)s={},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g).animate(n,f,g),u=h?2*u:u/2;h&&(s={opacity:0},s[m]=(_?"-=":"+=")+u,a.animate(s,f,g)),a.queue(i),t.effects.unshift(a,b,p+1)}),t.effects.define("clip","hide",function(e,i){var s,n={},o=t(this),a=e.direction||"vertical",r="both"===a,h=r||"horizontal"===a,l=r||"vertical"===a;s=o.cssClip(),n.clip={top:l?(s.bottom-s.top)/2:s.top,right:h?(s.right-s.left)/2:s.right,bottom:l?(s.bottom-s.top)/2:s.bottom,left:h?(s.right-s.left)/2:s.left},t.effects.createPlaceholder(o),"show"===e.mode&&(o.cssClip(n.clip),n.clip=s),o.animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("drop","hide",function(e,i){var s,n=t(this),o=e.mode,a="show"===o,r=e.direction||"left",h="up"===r||"down"===r?"top":"left",l="up"===r||"left"===r?"-=":"+=",c="+="===l?"-=":"+=",u={opacity:0};t.effects.createPlaceholder(n),s=e.distance||n["top"===h?"outerHeight":"outerWidth"](!0)/2,u[h]=l+s,a&&(n.css(u),u[h]=c+s,u.opacity=1),n.animate(u,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("explode","hide",function(e,i){function s(){b.push(this),b.length===u*d&&n()}function n(){p.css({visibility:"visible"}),t(b).remove(),i()}var o,a,r,h,l,c,u=e.pieces?Math.round(Math.sqrt(e.pieces)):3,d=u,p=t(this),f=e.mode,g="show"===f,m=p.show().css("visibility","hidden").offset(),_=Math.ceil(p.outerWidth()/d),v=Math.ceil(p.outerHeight()/u),b=[];for(o=0;u>o;o++)for(h=m.top+o*v,c=o-(u-1)/2,a=0;d>a;a++)r=m.left+a*_,l=a-(d-1)/2,p.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-a*_,top:-o*v}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:_,height:v,left:r+(g?l*_:0),top:h+(g?c*v:0),opacity:g?0:1}).animate({left:r+(g?0:l*_),top:h+(g?0:c*v),opacity:g?1:0},e.duration||500,e.easing,s)}),t.effects.define("fade","toggle",function(e,i){var s="show"===e.mode;t(this).css("opacity",s?0:1).animate({opacity:s?1:0},{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("fold","hide",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=e.size||15,h=/([0-9]+)%/.exec(r),l=!!e.horizFirst,c=l?["right","bottom"]:["bottom","right"],u=e.duration/2,d=t.effects.createPlaceholder(s),p=s.cssClip(),f={clip:t.extend({},p)},g={clip:t.extend({},p)},m=[p[c[0]],p[c[1]]],_=s.queue().length;h&&(r=parseInt(h[1],10)/100*m[a?0:1]),f.clip[c[0]]=r,g.clip[c[0]]=r,g.clip[c[1]]=0,o&&(s.cssClip(g.clip),d&&d.css(t.effects.clipToBox(g)),g.clip=p),s.queue(function(i){d&&d.animate(t.effects.clipToBox(f),u,e.easing).animate(t.effects.clipToBox(g),u,e.easing),i()}).animate(f,u,e.easing).animate(g,u,e.easing).queue(i),t.effects.unshift(s,_,4)}),t.effects.define("highlight","show",function(e,i){var s=t(this),n={backgroundColor:s.css("backgroundColor")};"hide"===e.mode&&(n.opacity=0),t.effects.saveStyle(s),s.css({backgroundImage:"none",backgroundColor:e.color||"#ffff99"}).animate(n,{queue:!1,duration:e.duration,easing:e.easing,complete:i})}),t.effects.define("size",function(e,i){var s,n,o,a=t(this),r=["fontSize"],h=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],l=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],c=e.mode,u="effect"!==c,d=e.scale||"both",p=e.origin||["middle","center"],f=a.css("position"),g=a.position(),m=t.effects.scaledDimensions(a),_=e.from||m,v=e.to||t.effects.scaledDimensions(a,0);t.effects.createPlaceholder(a),"show"===c&&(o=_,_=v,v=o),n={from:{y:_.height/m.height,x:_.width/m.width},to:{y:v.height/m.height,x:v.width/m.width}},("box"===d||"both"===d)&&(n.from.y!==n.to.y&&(_=t.effects.setTransition(a,h,n.from.y,_),v=t.effects.setTransition(a,h,n.to.y,v)),n.from.x!==n.to.x&&(_=t.effects.setTransition(a,l,n.from.x,_),v=t.effects.setTransition(a,l,n.to.x,v))),("content"===d||"both"===d)&&n.from.y!==n.to.y&&(_=t.effects.setTransition(a,r,n.from.y,_),v=t.effects.setTransition(a,r,n.to.y,v)),p&&(s=t.effects.getBaseline(p,m),_.top=(m.outerHeight-_.outerHeight)*s.y+g.top,_.left=(m.outerWidth-_.outerWidth)*s.x+g.left,v.top=(m.outerHeight-v.outerHeight)*s.y+g.top,v.left=(m.outerWidth-v.outerWidth)*s.x+g.left),a.css(_),("content"===d||"both"===d)&&(h=h.concat(["marginTop","marginBottom"]).concat(r),l=l.concat(["marginLeft","marginRight"]),a.find("*[width]").each(function(){var i=t(this),s=t.effects.scaledDimensions(i),o={height:s.height*n.from.y,width:s.width*n.from.x,outerHeight:s.outerHeight*n.from.y,outerWidth:s.outerWidth*n.from.x},a={height:s.height*n.to.y,width:s.width*n.to.x,outerHeight:s.height*n.to.y,outerWidth:s.width*n.to.x};n.from.y!==n.to.y&&(o=t.effects.setTransition(i,h,n.from.y,o),a=t.effects.setTransition(i,h,n.to.y,a)),n.from.x!==n.to.x&&(o=t.effects.setTransition(i,l,n.from.x,o),a=t.effects.setTransition(i,l,n.to.x,a)),u&&t.effects.saveStyle(i),i.css(o),i.animate(a,e.duration,e.easing,function(){u&&t.effects.restoreStyle(i)})})),a.animate(v,{queue:!1,duration:e.duration,easing:e.easing,complete:function(){var e=a.offset();0===v.opacity&&a.css("opacity",_.opacity),u||(a.css("position","static"===f?"relative":f).offset(e),t.effects.saveStyle(a)),i()}})}),t.effects.define("scale",function(e,i){var s=t(this),n=e.mode,o=parseInt(e.percent,10)||(0===parseInt(e.percent,10)?0:"effect"!==n?0:100),a=t.extend(!0,{from:t.effects.scaledDimensions(s),to:t.effects.scaledDimensions(s,o,e.direction||"both"),origin:e.origin||["middle","center"]},e);e.fade&&(a.from.opacity=1,a.to.opacity=0),t.effects.effect.size.call(this,a,i)}),t.effects.define("puff","hide",function(e,i){var s=t.extend(!0,{},e,{fade:!0,percent:parseInt(e.percent,10)||150});t.effects.effect.scale.call(this,s,i)}),t.effects.define("pulsate","show",function(e,i){var s=t(this),n=e.mode,o="show"===n,a="hide"===n,r=o||a,h=2*(e.times||5)+(r?1:0),l=e.duration/h,c=0,u=1,d=s.queue().length;for((o||!s.is(":visible"))&&(s.css("opacity",0).show(),c=1);h>u;u++)s.animate({opacity:c},l,e.easing),c=1-c;s.animate({opacity:c},l,e.easing),s.queue(i),t.effects.unshift(s,d,h+1)}),t.effects.define("shake",function(e,i){var s=1,n=t(this),o=e.direction||"left",a=e.distance||20,r=e.times||3,h=2*r+1,l=Math.round(e.duration/h),c="up"===o||"down"===o?"top":"left",u="up"===o||"left"===o,d={},p={},f={},g=n.queue().length;for(t.effects.createPlaceholder(n),d[c]=(u?"-=":"+=")+a,p[c]=(u?"+=":"-=")+2*a,f[c]=(u?"-=":"+=")+2*a,n.animate(d,l,e.easing);r>s;s++)n.animate(p,l,e.easing).animate(f,l,e.easing);n.animate(p,l,e.easing).animate(d,l/2,e.easing).queue(i),t.effects.unshift(n,g,h+1)}),t.effects.define("slide","show",function(e,i){var s,n,o=t(this),a={up:["bottom","top"],down:["top","bottom"],left:["right","left"],right:["left","right"]},r=e.mode,h=e.direction||"left",l="up"===h||"down"===h?"top":"left",c="up"===h||"left"===h,u=e.distance||o["top"===l?"outerHeight":"outerWidth"](!0),d={};t.effects.createPlaceholder(o),s=o.cssClip(),n=o.position()[l],d[l]=(c?-1:1)*u+n,d.clip=o.cssClip(),d.clip[a[h][1]]=d.clip[a[h][0]],"show"===r&&(o.cssClip(d.clip),o.css(l,d[l]),d.clip=s,d[l]=n),o.animate(d,{queue:!1,duration:e.duration,easing:e.easing,complete:i})});var f;t.uiBackCompat!==!1&&(f=t.effects.define("transfer",function(e,i){t(this).transfer(e,i)})),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,.\/:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.widget("ui.accordion",{version:"1.12.1",options:{active:0,animate:{},classes:{"ui-accordion-header":"ui-corner-top","ui-accordion-header-collapsed":"ui-corner-all","ui-accordion-content":"ui-corner-bottom"},collapsible:!1,event:"click",header:"> li > :first-child, > :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},hideProps:{borderTopWidth:"hide",borderBottomWidth:"hide",paddingTop:"hide",paddingBottom:"hide",height:"hide"},showProps:{borderTopWidth:"show",borderBottomWidth:"show",paddingTop:"show",paddingBottom:"show",height:"show"},_create:function(){var e=this.options;this.prevShow=this.prevHide=t(),this._addClass("ui-accordion","ui-widget ui-helper-reset"),this.element.attr("role","tablist"),e.collapsible||e.active!==!1&&null!=e.active||(e.active=0),this._processPanels(),0>e.active&&(e.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,panel:this.active.length?this.active.next():t()}},_createIcons:function(){var e,i,s=this.options.icons;s&&(e=t("<span>"),this._addClass(e,"ui-accordion-header-icon","ui-icon "+s.header),e.prependTo(this.headers),i=this.active.children(".ui-accordion-header-icon"),this._removeClass(i,s.header)._addClass(i,null,s.activeHeader)._addClass(this.headers,"ui-accordion-icons"))},_destroyIcons:function(){this._removeClass(this.headers,"ui-accordion-icons"),this.headers.children(".ui-accordion-header-icon").remove()},_destroy:function(){var t;this.element.removeAttr("role"),this.headers.removeAttr("role aria-expanded aria-selected aria-controls tabIndex").removeUniqueId(),this._destroyIcons(),t=this.headers.next().css("display","").removeAttr("role aria-hidden aria-labelledby").removeUniqueId(),"content"!==this.options.heightStyle&&t.css("height","")},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):("event"===t&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(e)),this._super(t,e),"collapsible"!==t||e||this.options.active!==!1||this._activate(0),"icons"===t&&(this._destroyIcons(),e&&this._createIcons()),void 0)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t),this._toggleClass(this.headers.add(this.headers.next()),null,"ui-state-disabled",!!t)},_keydown:function(e){if(!e.altKey&&!e.ctrlKey){var i=t.ui.keyCode,s=this.headers.length,n=this.headers.index(e.target),o=!1;switch(e.keyCode){case i.RIGHT:case i.DOWN:o=this.headers[(n+1)%s];break;case i.LEFT:case i.UP:o=this.headers[(n-1+s)%s];break;case i.SPACE:case i.ENTER:this._eventHandler(e);break;case i.HOME:o=this.headers[0];break;case i.END:o=this.headers[s-1]}o&&(t(e.target).attr("tabIndex",-1),t(o).attr("tabIndex",0),t(o).trigger("focus"),e.preventDefault())}},_panelKeyDown:function(e){e.keyCode===t.ui.keyCode.UP&&e.ctrlKey&&t(e.currentTarget).prev().trigger("focus")},refresh:function(){var e=this.options;this._processPanels(),e.active===!1&&e.collapsible===!0||!this.headers.length?(e.active=!1,this.active=t()):e.active===!1?this._activate(0):this.active.length&&!t.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(e.active=!1,this.active=t()):this._activate(Math.max(0,e.active-1)):e.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){var t=this.headers,e=this.panels;this.headers=this.element.find(this.options.header),this._addClass(this.headers,"ui-accordion-header ui-accordion-header-collapsed","ui-state-default"),this.panels=this.headers.next().filter(":not(.ui-accordion-content-active)").hide(),this._addClass(this.panels,"ui-accordion-content","ui-helper-reset ui-widget-content"),e&&(this._off(t.not(this.headers)),this._off(e.not(this.panels)))},_refresh:function(){var e,i=this.options,s=i.heightStyle,n=this.element.parent();this.active=this._findActive(i.active),this._addClass(this.active,"ui-accordion-header-active","ui-state-active")._removeClass(this.active,"ui-accordion-header-collapsed"),this._addClass(this.active.next(),"ui-accordion-content-active"),this.active.next().show(),this.headers.attr("role","tab").each(function(){var e=t(this),i=e.uniqueId().attr("id"),s=e.next(),n=s.uniqueId().attr("id");e.attr("aria-controls",n),s.attr("aria-labelledby",i)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}).next().attr({"aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}).next().attr({"aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(i.event),"fill"===s?(e=n.height(),this.element.siblings(":visible").each(function(){var i=t(this),s=i.css("position");"absolute"!==s&&"fixed"!==s&&(e-=i.outerHeight(!0))}),this.headers.each(function(){e-=t(this).outerHeight(!0)}),this.headers.next().each(function(){t(this).height(Math.max(0,e-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===s&&(e=0,this.headers.next().each(function(){var i=t(this).is(":visible");i||t(this).show(),e=Math.max(e,t(this).css("height","").height()),i||t(this).hide()}).height(e))},_activate:function(e){var i=this._findActive(e)[0];i!==this.active[0]&&(i=i||this.active[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return"number"==typeof e?this.headers.eq(e):t()},_setupEvents:function(e){var i={keydown:"_keydown"};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,i),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(e){var i,s,n=this.options,o=this.active,a=t(e.currentTarget),r=a[0]===o[0],h=r&&n.collapsible,l=h?t():a.next(),c=o.next(),u={oldHeader:o,oldPanel:c,newHeader:h?t():a,newPanel:l};e.preventDefault(),r&&!n.collapsible||this._trigger("beforeActivate",e,u)===!1||(n.active=h?!1:this.headers.index(a),this.active=r?t():a,this._toggle(u),this._removeClass(o,"ui-accordion-header-active","ui-state-active"),n.icons&&(i=o.children(".ui-accordion-header-icon"),this._removeClass(i,null,n.icons.activeHeader)._addClass(i,null,n.icons.header)),r||(this._removeClass(a,"ui-accordion-header-collapsed")._addClass(a,"ui-accordion-header-active","ui-state-active"),n.icons&&(s=a.children(".ui-accordion-header-icon"),this._removeClass(s,null,n.icons.header)._addClass(s,null,n.icons.activeHeader)),this._addClass(a.next(),"ui-accordion-content-active")))},_toggle:function(e){var i=e.newPanel,s=this.prevShow.length?this.prevShow:e.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=i,this.prevHide=s,this.options.animate?this._animate(i,s,e):(s.hide(),i.show(),this._toggleComplete(e)),s.attr({"aria-hidden":"true"}),s.prev().attr({"aria-selected":"false","aria-expanded":"false"}),i.length&&s.length?s.prev().attr({tabIndex:-1,"aria-expanded":"false"}):i.length&&this.headers.filter(function(){return 0===parseInt(t(this).attr("tabIndex"),10)}).attr("tabIndex",-1),i.attr("aria-hidden","false").prev().attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_animate:function(t,e,i){var s,n,o,a=this,r=0,h=t.css("box-sizing"),l=t.length&&(!e.length||t.index()<e.index()),c=this.options.animate||{},u=l&&c.down||c,d=function(){a._toggleComplete(i)};return"number"==typeof u&&(o=u),"string"==typeof u&&(n=u),n=n||u.easing||c.easing,o=o||u.duration||c.duration,e.length?t.length?(s=t.show().outerHeight(),e.animate(this.hideProps,{duration:o,easing:n,step:function(t,e){e.now=Math.round(t)}}),t.hide().animate(this.showProps,{duration:o,easing:n,complete:d,step:function(t,i){i.now=Math.round(t),"height"!==i.prop?"content-box"===h&&(r+=i.now):"content"!==a.options.heightStyle&&(i.now=Math.round(s-e.outerHeight()-r),r=0)}}),void 0):e.animate(this.hideProps,o,n,d):t.animate(this.showProps,o,n,d)},_toggleComplete:function(t){var e=t.oldPanel,i=e.prev();this._removeClass(e,"ui-accordion-content-active"),this._removeClass(i,"ui-accordion-header-active")._addClass(i,"ui-accordion-header-collapsed"),e.length&&(e.parent()[0].className=e.parent()[0].className),this._trigger("activate",null,t)}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,h=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=h.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("<span>").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=h.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(e){this.active=this.active||t(e.target).closest(".ui-menu-item");var i={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(e,!0),this._trigger("select",e,i)},_filterMenuItems:function(e){var i=e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&"),s=RegExp("^"+i,"i");return this.activeMenu.find(this.options.items).filter(".ui-menu-item").filter(function(){return s.test(t.trim(t(this).children(".ui-menu-item-wrapper").text()))})}}),t.widget("ui.autocomplete",{version:"1.12.1",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n; +this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("<ul>").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("<div>").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("<div>",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length<this.options.minLength?this.close(e):this._trigger("search",e)!==!1?this._search(t):void 0},_search:function(t){this.pending++,this._addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:t},this._response())},_response:function(){var e=++this.requestIndex;return t.proxy(function(t){e===this.requestIndex&&this.__response(t),this.pending--,this.pending||this._removeClass("ui-autocomplete-loading")},this)},__response:function(t){t&&(t=this._normalize(t)),this._trigger("response",null,{content:t}),!this.options.disabled&&t&&t.length&&!this.cancelSearch?(this._suggest(t),this._trigger("open")):this._close()},close:function(t){this.cancelSearch=!0,this._close(t)},_close:function(t){this._off(this.document,"mousedown"),this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",t))},_change:function(t){this.previous!==this._value()&&this._trigger("change",t,{item:this.selectedItem})},_normalize:function(e){return e.length&&e[0].label&&e[0].value?e:t.map(e,function(e){return"string"==typeof e?{label:e,value:e}:t.extend({},e,{label:e.label||e.value,value:e.value||e.label})})},_suggest:function(e){var i=this.menu.element.empty();this._renderMenu(i,e),this.isNewMenu=!0,this.menu.refresh(),i.show(),this._resizeMenu(),i.position(t.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next(),this._on(this.document,{mousedown:"_closeOnClickOutside"})},_resizeMenu:function(){var t=this.menu.element;t.outerWidth(Math.max(t.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(e,i){var s=this;t.each(i,function(t,i){s._renderItemData(e,i)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-autocomplete-item",e)},_renderItem:function(e,i){return t("<li>").append(t("<div>").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("<div>").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete;var g=/ui-corner-([a-z]){2,6}/g;t.widget("ui.controlgroup",{version:"1.12.1",defaultElement:"<div>",options:{direction:"horizontal",disabled:null,onlyVisible:!0,items:{button:"input[type=button], input[type=submit], input[type=reset], button, a",controlgroupLabel:".ui-controlgroup-label",checkboxradio:"input[type='checkbox'], input[type='radio']",selectmenu:"select",spinner:".ui-spinner-input"}},_create:function(){this._enhance()},_enhance:function(){this.element.attr("role","toolbar"),this.refresh()},_destroy:function(){this._callChildMethod("destroy"),this.childWidgets.removeData("ui-controlgroup-data"),this.element.removeAttr("role"),this.options.items.controlgroupLabel&&this.element.find(this.options.items.controlgroupLabel).find(".ui-controlgroup-label-contents").contents().unwrap()},_initWidgets:function(){var e=this,i=[];t.each(this.options.items,function(s,n){var o,a={};return n?"controlgroupLabel"===s?(o=e.element.find(n),o.each(function(){var e=t(this);e.children(".ui-controlgroup-label-contents").length||e.contents().wrapAll("<span class='ui-controlgroup-label-contents'></span>")}),e._addClass(o,null,"ui-widget ui-widget-content ui-state-default"),i=i.concat(o.get()),void 0):(t.fn[s]&&(a=e["_"+s+"Options"]?e["_"+s+"Options"]("middle"):{classes:{}},e.element.find(n).each(function(){var n=t(this),o=n[s]("instance"),r=t.widget.extend({},a);if("button"!==s||!n.parent(".ui-spinner").length){o||(o=n[s]()[s]("instance")),o&&(r.classes=e._resolveClassesValues(r.classes,o)),n[s](r);var h=n[s]("widget");t.data(h[0],"ui-controlgroup-data",o?o:n[s]("instance")),i.push(h[0])}})),void 0):void 0}),this.childWidgets=t(t.unique(i)),this._addClass(this.childWidgets,"ui-controlgroup-item")},_callChildMethod:function(e){this.childWidgets.each(function(){var i=t(this),s=i.data("ui-controlgroup-data");s&&s[e]&&s[e]()})},_updateCornerClass:function(t,e){var i="ui-corner-top ui-corner-bottom ui-corner-left ui-corner-right ui-corner-all",s=this._buildSimpleOptions(e,"label").classes.label;this._removeClass(t,null,i),this._addClass(t,null,s)},_buildSimpleOptions:function(t,e){var i="vertical"===this.options.direction,s={classes:{}};return s.classes[e]={middle:"",first:"ui-corner-"+(i?"top":"left"),last:"ui-corner-"+(i?"bottom":"right"),only:"ui-corner-all"}[t],s},_spinnerOptions:function(t){var e=this._buildSimpleOptions(t,"ui-spinner");return e.classes["ui-spinner-up"]="",e.classes["ui-spinner-down"]="",e},_buttonOptions:function(t){return this._buildSimpleOptions(t,"ui-button")},_checkboxradioOptions:function(t){return this._buildSimpleOptions(t,"ui-checkboxradio-label")},_selectmenuOptions:function(t){var e="vertical"===this.options.direction;return{width:e?"auto":!1,classes:{middle:{"ui-selectmenu-button-open":"","ui-selectmenu-button-closed":""},first:{"ui-selectmenu-button-open":"ui-corner-"+(e?"top":"tl"),"ui-selectmenu-button-closed":"ui-corner-"+(e?"top":"left")},last:{"ui-selectmenu-button-open":e?"":"ui-corner-tr","ui-selectmenu-button-closed":"ui-corner-"+(e?"bottom":"right")},only:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"}}[t]}},_resolveClassesValues:function(e,i){var s={};return t.each(e,function(n){var o=i.options.classes[n]||"";o=t.trim(o.replace(g,"")),s[n]=(o+" "+e[n]).replace(/\s+/g," ")}),s},_setOption:function(t,e){return"direction"===t&&this._removeClass("ui-controlgroup-"+this.options.direction),this._super(t,e),"disabled"===t?(this._callChildMethod(e?"disable":"enable"),void 0):(this.refresh(),void 0)},refresh:function(){var e,i=this;this._addClass("ui-controlgroup ui-controlgroup-"+this.options.direction),"horizontal"===this.options.direction&&this._addClass(null,"ui-helper-clearfix"),this._initWidgets(),e=this.childWidgets,this.options.onlyVisible&&(e=e.filter(":visible")),e.length&&(t.each(["first","last"],function(t,s){var n=e[s]().data("ui-controlgroup-data");if(n&&i["_"+n.widgetName+"Options"]){var o=i["_"+n.widgetName+"Options"](1===e.length?"only":s);o.classes=i._resolveClassesValues(o.classes,n),n.element[n.widgetName](o)}else i._updateCornerClass(e[s](),s)}),this._callChildMethod("refresh"))}}),t.widget("ui.checkboxradio",[t.ui.formResetMixin,{version:"1.12.1",options:{disabled:null,label:null,icon:!0,classes:{"ui-checkboxradio-label":"ui-corner-all","ui-checkboxradio-icon":"ui-corner-all"}},_getCreateOptions:function(){var e,i,s=this,n=this._super()||{};return this._readType(),i=this.element.labels(),this.label=t(i[i.length-1]),this.label.length||t.error("No label found for checkboxradio widget"),this.originalLabel="",this.label.contents().not(this.element[0]).each(function(){s.originalLabel+=3===this.nodeType?t(this).text():this.outerHTML}),this.originalLabel&&(n.label=this.originalLabel),e=this.element[0].disabled,null!=e&&(n.disabled=e),n},_create:function(){var t=this.element[0].checked;this._bindFormResetHandler(),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled),this._setOption("disabled",this.options.disabled),this._addClass("ui-checkboxradio","ui-helper-hidden-accessible"),this._addClass(this.label,"ui-checkboxradio-label","ui-button ui-widget"),"radio"===this.type&&this._addClass(this.label,"ui-checkboxradio-radio-label"),this.options.label&&this.options.label!==this.originalLabel?this._updateLabel():this.originalLabel&&(this.options.label=this.originalLabel),this._enhance(),t&&(this._addClass(this.label,"ui-checkboxradio-checked","ui-state-active"),this.icon&&this._addClass(this.icon,null,"ui-state-hover")),this._on({change:"_toggleClasses",focus:function(){this._addClass(this.label,null,"ui-state-focus ui-visual-focus")},blur:function(){this._removeClass(this.label,null,"ui-state-focus ui-visual-focus")}})},_readType:function(){var e=this.element[0].nodeName.toLowerCase();this.type=this.element[0].type,"input"===e&&/radio|checkbox/.test(this.type)||t.error("Can't create checkboxradio on element.nodeName="+e+" and element.type="+this.type)},_enhance:function(){this._updateIcon(this.element[0].checked)},widget:function(){return this.label},_getRadioGroup:function(){var e,i=this.element[0].name,s="input[name='"+t.ui.escapeSelector(i)+"']";return i?(e=this.form.length?t(this.form[0].elements).filter(s):t(s).filter(function(){return 0===t(this).form().length}),e.not(this.element)):t([])},_toggleClasses:function(){var e=this.element[0].checked;this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",e),this.options.icon&&"checkbox"===this.type&&this._toggleClass(this.icon,null,"ui-icon-check ui-state-checked",e)._toggleClass(this.icon,null,"ui-icon-blank",!e),"radio"===this.type&&this._getRadioGroup().each(function(){var e=t(this).checkboxradio("instance");e&&e._removeClass(e.label,"ui-checkboxradio-checked","ui-state-active")})},_destroy:function(){this._unbindFormResetHandler(),this.icon&&(this.icon.remove(),this.iconSpace.remove())},_setOption:function(t,e){return"label"!==t||e?(this._super(t,e),"disabled"===t?(this._toggleClass(this.label,null,"ui-state-disabled",e),this.element[0].disabled=e,void 0):(this.refresh(),void 0)):void 0},_updateIcon:function(e){var i="ui-icon ui-icon-background ";this.options.icon?(this.icon||(this.icon=t("<span>"),this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-checkboxradio-icon-space")),"checkbox"===this.type?(i+=e?"ui-icon-check ui-state-checked":"ui-icon-blank",this._removeClass(this.icon,null,e?"ui-icon-blank":"ui-icon-check")):i+="ui-icon-blank",this._addClass(this.icon,"ui-checkboxradio-icon",i),e||this._removeClass(this.icon,null,"ui-icon-check ui-state-checked"),this.icon.prependTo(this.label).after(this.iconSpace)):void 0!==this.icon&&(this.icon.remove(),this.iconSpace.remove(),delete this.icon)},_updateLabel:function(){var t=this.label.contents().not(this.element[0]);this.icon&&(t=t.not(this.icon[0])),this.iconSpace&&(t=t.not(this.iconSpace[0])),t.remove(),this.label.append(this.options.label)},refresh:function(){var t=this.element[0].checked,e=this.element[0].disabled;this._updateIcon(t),this._toggleClass(this.label,"ui-checkboxradio-checked","ui-state-active",t),null!==this.options.label&&this._updateLabel(),e!==this.options.disabled&&this._setOptions({disabled:e})}}]),t.ui.checkboxradio,t.widget("ui.button",{version:"1.12.1",defaultElement:"<button>",options:{classes:{"ui-button":"ui-corner-all"},disabled:null,icon:null,iconPosition:"beginning",label:null,showLabel:!0},_getCreateOptions:function(){var t,e=this._super()||{};return this.isInput=this.element.is("input"),t=this.element[0].disabled,null!=t&&(e.disabled=t),this.originalLabel=this.isInput?this.element.val():this.element.html(),this.originalLabel&&(e.label=this.originalLabel),e},_create:function(){!this.option.showLabel&!this.options.icon&&(this.options.showLabel=!0),null==this.options.disabled&&(this.options.disabled=this.element[0].disabled||!1),this.hasTitle=!!this.element.attr("title"),this.options.label&&this.options.label!==this.originalLabel&&(this.isInput?this.element.val(this.options.label):this.element.html(this.options.label)),this._addClass("ui-button","ui-widget"),this._setOption("disabled",this.options.disabled),this._enhance(),this.element.is("a")&&this._on({keyup:function(e){e.keyCode===t.ui.keyCode.SPACE&&(e.preventDefault(),this.element[0].click?this.element[0].click():this.element.trigger("click"))}})},_enhance:function(){this.element.is("button")||this.element.attr("role","button"),this.options.icon&&(this._updateIcon("icon",this.options.icon),this._updateTooltip())},_updateTooltip:function(){this.title=this.element.attr("title"),this.options.showLabel||this.title||this.element.attr("title",this.options.label)},_updateIcon:function(e,i){var s="iconPosition"!==e,n=s?this.options.iconPosition:i,o="top"===n||"bottom"===n;this.icon?s&&this._removeClass(this.icon,null,this.options.icon):(this.icon=t("<span>"),this._addClass(this.icon,"ui-button-icon","ui-icon"),this.options.showLabel||this._addClass("ui-button-icon-only")),s&&this._addClass(this.icon,null,i),this._attachIcon(n),o?(this._addClass(this.icon,null,"ui-widget-icon-block"),this.iconSpace&&this.iconSpace.remove()):(this.iconSpace||(this.iconSpace=t("<span> </span>"),this._addClass(this.iconSpace,"ui-button-icon-space")),this._removeClass(this.icon,null,"ui-wiget-icon-block"),this._attachIconSpace(n))},_destroy:function(){this.element.removeAttr("role"),this.icon&&this.icon.remove(),this.iconSpace&&this.iconSpace.remove(),this.hasTitle||this.element.removeAttr("title")},_attachIconSpace:function(t){this.icon[/^(?:end|bottom)/.test(t)?"before":"after"](this.iconSpace)},_attachIcon:function(t){this.element[/^(?:end|bottom)/.test(t)?"append":"prepend"](this.icon)},_setOptions:function(t){var e=void 0===t.showLabel?this.options.showLabel:t.showLabel,i=void 0===t.icon?this.options.icon:t.icon;e||i||(t.showLabel=!0),this._super(t)},_setOption:function(t,e){"icon"===t&&(e?this._updateIcon(t,e):this.icon&&(this.icon.remove(),this.iconSpace&&this.iconSpace.remove())),"iconPosition"===t&&this._updateIcon(t,e),"showLabel"===t&&(this._toggleClass("ui-button-icon-only",null,!e),this._updateTooltip()),"label"===t&&(this.isInput?this.element.val(e):(this.element.html(e),this.icon&&(this._attachIcon(this.options.iconPosition),this._attachIconSpace(this.options.iconPosition)))),this._super(t,e),"disabled"===t&&(this._toggleClass(null,"ui-state-disabled",e),this.element[0].disabled=e,e&&this.element.blur())},refresh:function(){var t=this.element.is("input, button")?this.element[0].disabled:this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOptions({disabled:t}),this._updateTooltip()}}),t.uiBackCompat!==!1&&(t.widget("ui.button",t.ui.button,{options:{text:!0,icons:{primary:null,secondary:null}},_create:function(){this.options.showLabel&&!this.options.text&&(this.options.showLabel=this.options.text),!this.options.showLabel&&this.options.text&&(this.options.text=this.options.showLabel),this.options.icon||!this.options.icons.primary&&!this.options.icons.secondary?this.options.icon&&(this.options.icons.primary=this.options.icon):this.options.icons.primary?this.options.icon=this.options.icons.primary:(this.options.icon=this.options.icons.secondary,this.options.iconPosition="end"),this._super()},_setOption:function(t,e){return"text"===t?(this._super("showLabel",e),void 0):("showLabel"===t&&(this.options.text=e),"icon"===t&&(this.options.icons.primary=e),"icons"===t&&(e.primary?(this._super("icon",e.primary),this._super("iconPosition","beginning")):e.secondary&&(this._super("icon",e.secondary),this._super("iconPosition","end"))),this._superApply(arguments),void 0)}}),t.fn.button=function(e){return function(){return!this.length||this.length&&"INPUT"!==this[0].tagName||this.length&&"INPUT"===this[0].tagName&&"checkbox"!==this.attr("type")&&"radio"!==this.attr("type")?e.apply(this,arguments):(t.ui.checkboxradio||t.error("Checkboxradio widget missing"),0===arguments.length?this.checkboxradio({icon:!1}):this.checkboxradio.apply(this,arguments))}}(t.fn.button),t.fn.buttonset=function(){return t.ui.controlgroup||t.error("Controlgroup widget missing"),"option"===arguments[0]&&"items"===arguments[1]&&arguments[2]?this.controlgroup.apply(this,[arguments[0],"items.button",arguments[2]]):"option"===arguments[0]&&"items"===arguments[1]?this.controlgroup.apply(this,[arguments[0],"items.button"]):("object"==typeof arguments[0]&&arguments[0].items&&(arguments[0].items={button:arguments[0].items}),this.controlgroup.apply(this,arguments))}),t.ui.button,t.extend(t.ui,{datepicker:{version:"1.12.1"}});var m;t.extend(s.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(t){return a(this._defaults,t||{}),this},_attachDatepicker:function(e,i){var s,n,o;s=e.nodeName.toLowerCase(),n="div"===s||"span"===s,e.id||(this.uuid+=1,e.id="dp"+this.uuid),o=this._newInst(t(e),n),o.settings=t.extend({},i||{}),"input"===s?this._connectDatepicker(e,o):n&&this._inlineDatepicker(e,o)},_newInst:function(e,i){var s=e[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:s,input:e,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:i,dpDiv:i?n(t("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(e,i){var s=t(e);i.append=t([]),i.trigger=t([]),s.hasClass(this.markerClassName)||(this._attachments(s,i),s.addClass(this.markerClassName).on("keydown",this._doKeyDown).on("keypress",this._doKeyPress).on("keyup",this._doKeyUp),this._autoSize(i),t.data(e,"datepicker",i),i.settings.disabled&&this._disableDatepicker(e))},_attachments:function(e,i){var s,n,o,a=this._get(i,"appendText"),r=this._get(i,"isRTL");i.append&&i.append.remove(),a&&(i.append=t("<span class='"+this._appendClass+"'>"+a+"</span>"),e[r?"before":"after"](i.append)),e.off("focus",this._showDatepicker),i.trigger&&i.trigger.remove(),s=this._get(i,"showOn"),("focus"===s||"both"===s)&&e.on("focus",this._showDatepicker),("button"===s||"both"===s)&&(n=this._get(i,"buttonText"),o=this._get(i,"buttonImage"),i.trigger=t(this._get(i,"buttonImageOnly")?t("<img/>").addClass(this._triggerClass).attr({src:o,alt:n,title:n}):t("<button type='button'></button>").addClass(this._triggerClass).html(o?t("<img/>").attr({src:o,alt:n,title:n}):n)),e[r?"before":"after"](i.trigger),i.trigger.on("click",function(){return t.datepicker._datepickerShowing&&t.datepicker._lastInput===e[0]?t.datepicker._hideDatepicker():t.datepicker._datepickerShowing&&t.datepicker._lastInput!==e[0]?(t.datepicker._hideDatepicker(),t.datepicker._showDatepicker(e[0])):t.datepicker._showDatepicker(e[0]),!1}))},_autoSize:function(t){if(this._get(t,"autoSize")&&!t.inline){var e,i,s,n,o=new Date(2009,11,20),a=this._get(t,"dateFormat");a.match(/[DM]/)&&(e=function(t){for(i=0,s=0,n=0;t.length>n;n++)t[n].length>i&&(i=t[n].length,s=n);return s},o.setMonth(e(this._get(t,a.match(/MM/)?"monthNames":"monthNamesShort"))),o.setDate(e(this._get(t,a.match(/DD/)?"dayNames":"dayNamesShort"))+20-o.getDay())),t.input.attr("size",this._formatDate(t,o).length)}},_inlineDatepicker:function(e,i){var s=t(e);s.hasClass(this.markerClassName)||(s.addClass(this.markerClassName).append(i.dpDiv),t.data(e,"datepicker",i),this._setDate(i,this._getDefaultDate(i),!0),this._updateDatepicker(i),this._updateAlternate(i),i.settings.disabled&&this._disableDatepicker(e),i.dpDiv.css("display","block"))},_dialogDatepicker:function(e,i,s,n,o){var r,h,l,c,u,d=this._dialogInst;return d||(this.uuid+=1,r="dp"+this.uuid,this._dialogInput=t("<input type='text' id='"+r+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.on("keydown",this._doKeyDown),t("body").append(this._dialogInput),d=this._dialogInst=this._newInst(this._dialogInput,!1),d.settings={},t.data(this._dialogInput[0],"datepicker",d)),a(d.settings,n||{}),i=i&&i.constructor===Date?this._formatDate(d,i):i,this._dialogInput.val(i),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(h=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,u=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[h/2-100+c,l/2-150+u]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),d.settings.onSelect=s,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),t.blockUI&&t.blockUI(this.dpDiv),t.data(this._dialogInput[0],"datepicker",d),this},_destroyDatepicker:function(e){var i,s=t(e),n=t.data(e,"datepicker");s.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),t.removeData(e,"datepicker"),"input"===i?(n.append.remove(),n.trigger.remove(),s.removeClass(this.markerClassName).off("focus",this._showDatepicker).off("keydown",this._doKeyDown).off("keypress",this._doKeyPress).off("keyup",this._doKeyUp)):("div"===i||"span"===i)&&s.removeClass(this.markerClassName).empty(),m===n&&(m=null))},_enableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().removeClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}))},_disableDatepicker:function(e){var i,s,n=t(e),o=t.data(e,"datepicker");n.hasClass(this.markerClassName)&&(i=e.nodeName.toLowerCase(),"input"===i?(e.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"})):("div"===i||"span"===i)&&(s=n.children("."+this._inlineClass),s.children().addClass("ui-state-disabled"),s.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0)),this._disabledInputs=t.map(this._disabledInputs,function(t){return t===e?null:t}),this._disabledInputs[this._disabledInputs.length]=e)},_isDisabledDatepicker:function(t){if(!t)return!1;for(var e=0;this._disabledInputs.length>e;e++)if(this._disabledInputs[e]===t)return!0;return!1},_getInst:function(e){try{return t.data(e,"datepicker")}catch(i){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(e,i,s){var n,o,r,h,l=this._getInst(e);return 2===arguments.length&&"string"==typeof i?"defaults"===i?t.extend({},t.datepicker._defaults):l?"all"===i?t.extend({},l.settings):this._get(l,i):null:(n=i||{},"string"==typeof i&&(n={},n[i]=s),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(e,!0),r=this._getMinMaxDate(l,"min"),h=this._getMinMaxDate(l,"max"),a(l.settings,n),null!==r&&void 0!==n.dateFormat&&void 0===n.minDate&&(l.settings.minDate=this._formatDate(l,r)),null!==h&&void 0!==n.dateFormat&&void 0===n.maxDate&&(l.settings.maxDate=this._formatDate(l,h)),"disabled"in n&&(n.disabled?this._disableDatepicker(e):this._enableDatepicker(e)),this._attachments(t(e),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l)),void 0)},_changeDatepicker:function(t,e,i){this._optionDatepicker(t,e,i)},_refreshDatepicker:function(t){var e=this._getInst(t);e&&this._updateDatepicker(e)},_setDateDatepicker:function(t,e){var i=this._getInst(t);i&&(this._setDate(i,e),this._updateDatepicker(i),this._updateAlternate(i))},_getDateDatepicker:function(t,e){var i=this._getInst(t);return i&&!i.inline&&this._setDateFromField(i,e),i?this._getDate(i):null},_doKeyDown:function(e){var i,s,n,o=t.datepicker._getInst(e.target),a=!0,r=o.dpDiv.is(".ui-datepicker-rtl");if(o._keyEvent=!0,t.datepicker._datepickerShowing)switch(e.keyCode){case 9:t.datepicker._hideDatepicker(),a=!1;break;case 13:return n=t("td."+t.datepicker._dayOverClass+":not(."+t.datepicker._currentClass+")",o.dpDiv),n[0]&&t.datepicker._selectDay(e.target,o.selectedMonth,o.selectedYear,n[0]),i=t.datepicker._get(o,"onSelect"),i?(s=t.datepicker._formatDate(o),i.apply(o.input?o.input[0]:null,[s,o])):t.datepicker._hideDatepicker(),!1;case 27:t.datepicker._hideDatepicker();break;case 33:t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 34:t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 35:(e.ctrlKey||e.metaKey)&&t.datepicker._clearDate(e.target),a=e.ctrlKey||e.metaKey;break;case 36:(e.ctrlKey||e.metaKey)&&t.datepicker._gotoToday(e.target),a=e.ctrlKey||e.metaKey;break;case 37:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?1:-1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?-t.datepicker._get(o,"stepBigMonths"):-t.datepicker._get(o,"stepMonths"),"M");break;case 38:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,-7,"D"),a=e.ctrlKey||e.metaKey;break;case 39:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,r?-1:1,"D"),a=e.ctrlKey||e.metaKey,e.originalEvent.altKey&&t.datepicker._adjustDate(e.target,e.ctrlKey?+t.datepicker._get(o,"stepBigMonths"):+t.datepicker._get(o,"stepMonths"),"M");break;case 40:(e.ctrlKey||e.metaKey)&&t.datepicker._adjustDate(e.target,7,"D"),a=e.ctrlKey||e.metaKey;break;default:a=!1}else 36===e.keyCode&&e.ctrlKey?t.datepicker._showDatepicker(this):a=!1;a&&(e.preventDefault(),e.stopPropagation())},_doKeyPress:function(e){var i,s,n=t.datepicker._getInst(e.target);return t.datepicker._get(n,"constrainInput")?(i=t.datepicker._possibleChars(t.datepicker._get(n,"dateFormat")),s=String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),e.ctrlKey||e.metaKey||" ">s||!i||i.indexOf(s)>-1):void 0},_doKeyUp:function(e){var i,s=t.datepicker._getInst(e.target);if(s.input.val()!==s.lastVal)try{i=t.datepicker.parseDate(t.datepicker._get(s,"dateFormat"),s.input?s.input.val():null,t.datepicker._getFormatConfig(s)),i&&(t.datepicker._setDateFromField(s),t.datepicker._updateAlternate(s),t.datepicker._updateDatepicker(s))}catch(n){}return!0},_showDatepicker:function(e){if(e=e.target||e,"input"!==e.nodeName.toLowerCase()&&(e=t("input",e.parentNode)[0]),!t.datepicker._isDisabledDatepicker(e)&&t.datepicker._lastInput!==e){var s,n,o,r,h,l,c;s=t.datepicker._getInst(e),t.datepicker._curInst&&t.datepicker._curInst!==s&&(t.datepicker._curInst.dpDiv.stop(!0,!0),s&&t.datepicker._datepickerShowing&&t.datepicker._hideDatepicker(t.datepicker._curInst.input[0])),n=t.datepicker._get(s,"beforeShow"),o=n?n.apply(e,[e,s]):{},o!==!1&&(a(s.settings,o),s.lastVal=null,t.datepicker._lastInput=e,t.datepicker._setDateFromField(s),t.datepicker._inDialog&&(e.value=""),t.datepicker._pos||(t.datepicker._pos=t.datepicker._findPos(e),t.datepicker._pos[1]+=e.offsetHeight),r=!1,t(e).parents().each(function(){return r|="fixed"===t(this).css("position"),!r}),h={left:t.datepicker._pos[0],top:t.datepicker._pos[1]},t.datepicker._pos=null,s.dpDiv.empty(),s.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),t.datepicker._updateDatepicker(s),h=t.datepicker._checkOffset(s,h,r),s.dpDiv.css({position:t.datepicker._inDialog&&t.blockUI?"static":r?"fixed":"absolute",display:"none",left:h.left+"px",top:h.top+"px"}),s.inline||(l=t.datepicker._get(s,"showAnim"),c=t.datepicker._get(s,"duration"),s.dpDiv.css("z-index",i(t(e))+1),t.datepicker._datepickerShowing=!0,t.effects&&t.effects.effect[l]?s.dpDiv.show(l,t.datepicker._get(s,"showOptions"),c):s.dpDiv[l||"show"](l?c:null),t.datepicker._shouldFocusInput(s)&&s.input.trigger("focus"),t.datepicker._curInst=s)) +}},_updateDatepicker:function(e){this.maxRows=4,m=e,e.dpDiv.empty().append(this._generateHTML(e)),this._attachHandlers(e);var i,s=this._getNumberOfMonths(e),n=s[1],a=17,r=e.dpDiv.find("."+this._dayOverClass+" a");r.length>0&&o.apply(r.get(0)),e.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),n>1&&e.dpDiv.addClass("ui-datepicker-multi-"+n).css("width",a*n+"em"),e.dpDiv[(1!==s[0]||1!==s[1]?"add":"remove")+"Class"]("ui-datepicker-multi"),e.dpDiv[(this._get(e,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),e===t.datepicker._curInst&&t.datepicker._datepickerShowing&&t.datepicker._shouldFocusInput(e)&&e.input.trigger("focus"),e.yearshtml&&(i=e.yearshtml,setTimeout(function(){i===e.yearshtml&&e.yearshtml&&e.dpDiv.find("select.ui-datepicker-year:first").replaceWith(e.yearshtml),i=e.yearshtml=null},0))},_shouldFocusInput:function(t){return t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&!t.input.is(":focus")},_checkOffset:function(e,i,s){var n=e.dpDiv.outerWidth(),o=e.dpDiv.outerHeight(),a=e.input?e.input.outerWidth():0,r=e.input?e.input.outerHeight():0,h=document.documentElement.clientWidth+(s?0:t(document).scrollLeft()),l=document.documentElement.clientHeight+(s?0:t(document).scrollTop());return i.left-=this._get(e,"isRTL")?n-a:0,i.left-=s&&i.left===e.input.offset().left?t(document).scrollLeft():0,i.top-=s&&i.top===e.input.offset().top+r?t(document).scrollTop():0,i.left-=Math.min(i.left,i.left+n>h&&h>n?Math.abs(i.left+n-h):0),i.top-=Math.min(i.top,i.top+o>l&&l>o?Math.abs(o+r):0),i},_findPos:function(e){for(var i,s=this._getInst(e),n=this._get(s,"isRTL");e&&("hidden"===e.type||1!==e.nodeType||t.expr.filters.hidden(e));)e=e[n?"previousSibling":"nextSibling"];return i=t(e).offset(),[i.left,i.top]},_hideDatepicker:function(e){var i,s,n,o,a=this._curInst;!a||e&&a!==t.data(e,"datepicker")||this._datepickerShowing&&(i=this._get(a,"showAnim"),s=this._get(a,"duration"),n=function(){t.datepicker._tidyDialog(a)},t.effects&&(t.effects.effect[i]||t.effects[i])?a.dpDiv.hide(i,t.datepicker._get(a,"showOptions"),s,n):a.dpDiv["slideDown"===i?"slideUp":"fadeIn"===i?"fadeOut":"hide"](i?s:null,n),i||n(),this._datepickerShowing=!1,o=this._get(a,"onClose"),o&&o.apply(a.input?a.input[0]:null,[a.input?a.input.val():"",a]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),t.blockUI&&(t.unblockUI(),t("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(t){t.dpDiv.removeClass(this._dialogClass).off(".ui-datepicker-calendar")},_checkExternalClick:function(e){if(t.datepicker._curInst){var i=t(e.target),s=t.datepicker._getInst(i[0]);(i[0].id!==t.datepicker._mainDivId&&0===i.parents("#"+t.datepicker._mainDivId).length&&!i.hasClass(t.datepicker.markerClassName)&&!i.closest("."+t.datepicker._triggerClass).length&&t.datepicker._datepickerShowing&&(!t.datepicker._inDialog||!t.blockUI)||i.hasClass(t.datepicker.markerClassName)&&t.datepicker._curInst!==s)&&t.datepicker._hideDatepicker()}},_adjustDate:function(e,i,s){var n=t(e),o=this._getInst(n[0]);this._isDisabledDatepicker(n[0])||(this._adjustInstDate(o,i+("M"===s?this._get(o,"showCurrentAtPos"):0),s),this._updateDatepicker(o))},_gotoToday:function(e){var i,s=t(e),n=this._getInst(s[0]);this._get(n,"gotoCurrent")&&n.currentDay?(n.selectedDay=n.currentDay,n.drawMonth=n.selectedMonth=n.currentMonth,n.drawYear=n.selectedYear=n.currentYear):(i=new Date,n.selectedDay=i.getDate(),n.drawMonth=n.selectedMonth=i.getMonth(),n.drawYear=n.selectedYear=i.getFullYear()),this._notifyChange(n),this._adjustDate(s)},_selectMonthYear:function(e,i,s){var n=t(e),o=this._getInst(n[0]);o["selected"+("M"===s?"Month":"Year")]=o["draw"+("M"===s?"Month":"Year")]=parseInt(i.options[i.selectedIndex].value,10),this._notifyChange(o),this._adjustDate(n)},_selectDay:function(e,i,s,n){var o,a=t(e);t(n).hasClass(this._unselectableClass)||this._isDisabledDatepicker(a[0])||(o=this._getInst(a[0]),o.selectedDay=o.currentDay=t("a",n).html(),o.selectedMonth=o.currentMonth=i,o.selectedYear=o.currentYear=s,this._selectDate(e,this._formatDate(o,o.currentDay,o.currentMonth,o.currentYear)))},_clearDate:function(e){var i=t(e);this._selectDate(i,"")},_selectDate:function(e,i){var s,n=t(e),o=this._getInst(n[0]);i=null!=i?i:this._formatDate(o),o.input&&o.input.val(i),this._updateAlternate(o),s=this._get(o,"onSelect"),s?s.apply(o.input?o.input[0]:null,[i,o]):o.input&&o.input.trigger("change"),o.inline?this._updateDatepicker(o):(this._hideDatepicker(),this._lastInput=o.input[0],"object"!=typeof o.input[0]&&o.input.trigger("focus"),this._lastInput=null)},_updateAlternate:function(e){var i,s,n,o=this._get(e,"altField");o&&(i=this._get(e,"altFormat")||this._get(e,"dateFormat"),s=this._getDate(e),n=this.formatDate(i,s,this._getFormatConfig(e)),t(o).val(n))},noWeekends:function(t){var e=t.getDay();return[e>0&&6>e,""]},iso8601Week:function(t){var e,i=new Date(t.getTime());return i.setDate(i.getDate()+4-(i.getDay()||7)),e=i.getTime(),i.setMonth(0),i.setDate(1),Math.floor(Math.round((e-i)/864e5)/7)+1},parseDate:function(e,i,s){if(null==e||null==i)throw"Invalid arguments";if(i="object"==typeof i?""+i:i+"",""===i)return null;var n,o,a,r,h=0,l=(s?s.shortYearCutoff:null)||this._defaults.shortYearCutoff,c="string"!=typeof l?l:(new Date).getFullYear()%100+parseInt(l,10),u=(s?s.dayNamesShort:null)||this._defaults.dayNamesShort,d=(s?s.dayNames:null)||this._defaults.dayNames,p=(s?s.monthNamesShort:null)||this._defaults.monthNamesShort,f=(s?s.monthNames:null)||this._defaults.monthNames,g=-1,m=-1,_=-1,v=-1,b=!1,y=function(t){var i=e.length>n+1&&e.charAt(n+1)===t;return i&&n++,i},w=function(t){var e=y(t),s="@"===t?14:"!"===t?20:"y"===t&&e?4:"o"===t?3:2,n="y"===t?s:1,o=RegExp("^\\d{"+n+","+s+"}"),a=i.substring(h).match(o);if(!a)throw"Missing number at position "+h;return h+=a[0].length,parseInt(a[0],10)},k=function(e,s,n){var o=-1,a=t.map(y(e)?n:s,function(t,e){return[[e,t]]}).sort(function(t,e){return-(t[1].length-e[1].length)});if(t.each(a,function(t,e){var s=e[1];return i.substr(h,s.length).toLowerCase()===s.toLowerCase()?(o=e[0],h+=s.length,!1):void 0}),-1!==o)return o+1;throw"Unknown name at position "+h},x=function(){if(i.charAt(h)!==e.charAt(n))throw"Unexpected literal at position "+h;h++};for(n=0;e.length>n;n++)if(b)"'"!==e.charAt(n)||y("'")?x():b=!1;else switch(e.charAt(n)){case"d":_=w("d");break;case"D":k("D",u,d);break;case"o":v=w("o");break;case"m":m=w("m");break;case"M":m=k("M",p,f);break;case"y":g=w("y");break;case"@":r=new Date(w("@")),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"!":r=new Date((w("!")-this._ticksTo1970)/1e4),g=r.getFullYear(),m=r.getMonth()+1,_=r.getDate();break;case"'":y("'")?x():b=!0;break;default:x()}if(i.length>h&&(a=i.substr(h),!/^\s+/.test(a)))throw"Extra/unparsed characters found in date: "+a;if(-1===g?g=(new Date).getFullYear():100>g&&(g+=(new Date).getFullYear()-(new Date).getFullYear()%100+(c>=g?0:-100)),v>-1)for(m=1,_=v;;){if(o=this._getDaysInMonth(g,m-1),o>=_)break;m++,_-=o}if(r=this._daylightSavingAdjust(new Date(g,m-1,_)),r.getFullYear()!==g||r.getMonth()+1!==m||r.getDate()!==_)throw"Invalid date";return r},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:1e7*60*60*24*(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925)),formatDate:function(t,e,i){if(!e)return"";var s,n=(i?i.dayNamesShort:null)||this._defaults.dayNamesShort,o=(i?i.dayNames:null)||this._defaults.dayNames,a=(i?i.monthNamesShort:null)||this._defaults.monthNamesShort,r=(i?i.monthNames:null)||this._defaults.monthNames,h=function(e){var i=t.length>s+1&&t.charAt(s+1)===e;return i&&s++,i},l=function(t,e,i){var s=""+e;if(h(t))for(;i>s.length;)s="0"+s;return s},c=function(t,e,i,s){return h(t)?s[e]:i[e]},u="",d=!1;if(e)for(s=0;t.length>s;s++)if(d)"'"!==t.charAt(s)||h("'")?u+=t.charAt(s):d=!1;else switch(t.charAt(s)){case"d":u+=l("d",e.getDate(),2);break;case"D":u+=c("D",e.getDay(),n,o);break;case"o":u+=l("o",Math.round((new Date(e.getFullYear(),e.getMonth(),e.getDate()).getTime()-new Date(e.getFullYear(),0,0).getTime())/864e5),3);break;case"m":u+=l("m",e.getMonth()+1,2);break;case"M":u+=c("M",e.getMonth(),a,r);break;case"y":u+=h("y")?e.getFullYear():(10>e.getFullYear()%100?"0":"")+e.getFullYear()%100;break;case"@":u+=e.getTime();break;case"!":u+=1e4*e.getTime()+this._ticksTo1970;break;case"'":h("'")?u+="'":d=!0;break;default:u+=t.charAt(s)}return u},_possibleChars:function(t){var e,i="",s=!1,n=function(i){var s=t.length>e+1&&t.charAt(e+1)===i;return s&&e++,s};for(e=0;t.length>e;e++)if(s)"'"!==t.charAt(e)||n("'")?i+=t.charAt(e):s=!1;else switch(t.charAt(e)){case"d":case"m":case"y":case"@":i+="0123456789";break;case"D":case"M":return null;case"'":n("'")?i+="'":s=!0;break;default:i+=t.charAt(e)}return i},_get:function(t,e){return void 0!==t.settings[e]?t.settings[e]:this._defaults[e]},_setDateFromField:function(t,e){if(t.input.val()!==t.lastVal){var i=this._get(t,"dateFormat"),s=t.lastVal=t.input?t.input.val():null,n=this._getDefaultDate(t),o=n,a=this._getFormatConfig(t);try{o=this.parseDate(i,s,a)||n}catch(r){s=e?"":s}t.selectedDay=o.getDate(),t.drawMonth=t.selectedMonth=o.getMonth(),t.drawYear=t.selectedYear=o.getFullYear(),t.currentDay=s?o.getDate():0,t.currentMonth=s?o.getMonth():0,t.currentYear=s?o.getFullYear():0,this._adjustInstDate(t)}},_getDefaultDate:function(t){return this._restrictMinMax(t,this._determineDate(t,this._get(t,"defaultDate"),new Date))},_determineDate:function(e,i,s){var n=function(t){var e=new Date;return e.setDate(e.getDate()+t),e},o=function(i){try{return t.datepicker.parseDate(t.datepicker._get(e,"dateFormat"),i,t.datepicker._getFormatConfig(e))}catch(s){}for(var n=(i.toLowerCase().match(/^c/)?t.datepicker._getDate(e):null)||new Date,o=n.getFullYear(),a=n.getMonth(),r=n.getDate(),h=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,l=h.exec(i);l;){switch(l[2]||"d"){case"d":case"D":r+=parseInt(l[1],10);break;case"w":case"W":r+=7*parseInt(l[1],10);break;case"m":case"M":a+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a));break;case"y":case"Y":o+=parseInt(l[1],10),r=Math.min(r,t.datepicker._getDaysInMonth(o,a))}l=h.exec(i)}return new Date(o,a,r)},a=null==i||""===i?s:"string"==typeof i?o(i):"number"==typeof i?isNaN(i)?s:n(i):new Date(i.getTime());return a=a&&"Invalid Date"==""+a?s:a,a&&(a.setHours(0),a.setMinutes(0),a.setSeconds(0),a.setMilliseconds(0)),this._daylightSavingAdjust(a)},_daylightSavingAdjust:function(t){return t?(t.setHours(t.getHours()>12?t.getHours()+2:0),t):null},_setDate:function(t,e,i){var s=!e,n=t.selectedMonth,o=t.selectedYear,a=this._restrictMinMax(t,this._determineDate(t,e,new Date));t.selectedDay=t.currentDay=a.getDate(),t.drawMonth=t.selectedMonth=t.currentMonth=a.getMonth(),t.drawYear=t.selectedYear=t.currentYear=a.getFullYear(),n===t.selectedMonth&&o===t.selectedYear||i||this._notifyChange(t),this._adjustInstDate(t),t.input&&t.input.val(s?"":this._formatDate(t))},_getDate:function(t){var e=!t.currentYear||t.input&&""===t.input.val()?null:this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return e},_attachHandlers:function(e){var i=this._get(e,"stepMonths"),s="#"+e.id.replace(/\\\\/g,"\\");e.dpDiv.find("[data-handler]").map(function(){var e={prev:function(){t.datepicker._adjustDate(s,-i,"M")},next:function(){t.datepicker._adjustDate(s,+i,"M")},hide:function(){t.datepicker._hideDatepicker()},today:function(){t.datepicker._gotoToday(s)},selectDay:function(){return t.datepicker._selectDay(s,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return t.datepicker._selectMonthYear(s,this,"M"),!1},selectYear:function(){return t.datepicker._selectMonthYear(s,this,"Y"),!1}};t(this).on(this.getAttribute("data-event"),e[this.getAttribute("data-handler")])})},_generateHTML:function(t){var e,i,s,n,o,a,r,h,l,c,u,d,p,f,g,m,_,v,b,y,w,k,x,C,D,I,T,P,M,S,H,z,O,A,N,W,E,F,L,R=new Date,B=this._daylightSavingAdjust(new Date(R.getFullYear(),R.getMonth(),R.getDate())),Y=this._get(t,"isRTL"),j=this._get(t,"showButtonPanel"),q=this._get(t,"hideIfNoPrevNext"),K=this._get(t,"navigationAsDateFormat"),U=this._getNumberOfMonths(t),V=this._get(t,"showCurrentAtPos"),$=this._get(t,"stepMonths"),X=1!==U[0]||1!==U[1],G=this._daylightSavingAdjust(t.currentDay?new Date(t.currentYear,t.currentMonth,t.currentDay):new Date(9999,9,9)),Q=this._getMinMaxDate(t,"min"),J=this._getMinMaxDate(t,"max"),Z=t.drawMonth-V,te=t.drawYear;if(0>Z&&(Z+=12,te--),J)for(e=this._daylightSavingAdjust(new Date(J.getFullYear(),J.getMonth()-U[0]*U[1]+1,J.getDate())),e=Q&&Q>e?Q:e;this._daylightSavingAdjust(new Date(te,Z,1))>e;)Z--,0>Z&&(Z=11,te--);for(t.drawMonth=Z,t.drawYear=te,i=this._get(t,"prevText"),i=K?this.formatDate(i,this._daylightSavingAdjust(new Date(te,Z-$,1)),this._getFormatConfig(t)):i,s=this._canAdjustMonth(t,-1,te,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>":q?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"e":"w")+"'>"+i+"</span></a>",n=this._get(t,"nextText"),n=K?this.formatDate(n,this._daylightSavingAdjust(new Date(te,Z+$,1)),this._getFormatConfig(t)):n,o=this._canAdjustMonth(t,1,te,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>":q?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(Y?"w":"e")+"'>"+n+"</span></a>",a=this._get(t,"currentText"),r=this._get(t,"gotoCurrent")&&t.currentDay?G:B,a=K?this.formatDate(a,r,this._getFormatConfig(t)):a,h=t.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(t,"closeText")+"</button>",l=j?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(Y?h:"")+(this._isInRange(t,r)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+a+"</button>":"")+(Y?"":h)+"</div>":"",c=parseInt(this._get(t,"firstDay"),10),c=isNaN(c)?0:c,u=this._get(t,"showWeek"),d=this._get(t,"dayNames"),p=this._get(t,"dayNamesMin"),f=this._get(t,"monthNames"),g=this._get(t,"monthNamesShort"),m=this._get(t,"beforeShowDay"),_=this._get(t,"showOtherMonths"),v=this._get(t,"selectOtherMonths"),b=this._getDefaultDate(t),y="",k=0;U[0]>k;k++){for(x="",this.maxRows=4,C=0;U[1]>C;C++){if(D=this._daylightSavingAdjust(new Date(te,Z,t.selectedDay)),I=" ui-corner-all",T="",X){if(T+="<div class='ui-datepicker-group",U[1]>1)switch(C){case 0:T+=" ui-datepicker-group-first",I=" ui-corner-"+(Y?"right":"left");break;case U[1]-1:T+=" ui-datepicker-group-last",I=" ui-corner-"+(Y?"left":"right");break;default:T+=" ui-datepicker-group-middle",I=""}T+="'>"}for(T+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+I+"'>"+(/all|left/.test(I)&&0===k?Y?o:s:"")+(/all|right/.test(I)&&0===k?Y?s:o:"")+this._generateMonthYearHeader(t,Z,te,Q,J,k>0||C>0,f,g)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",P=u?"<th class='ui-datepicker-week-col'>"+this._get(t,"weekHeader")+"</th>":"",w=0;7>w;w++)M=(w+c)%7,P+="<th scope='col'"+((w+c+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+d[M]+"'>"+p[M]+"</span></th>";for(T+=P+"</tr></thead><tbody>",S=this._getDaysInMonth(te,Z),te===t.selectedYear&&Z===t.selectedMonth&&(t.selectedDay=Math.min(t.selectedDay,S)),H=(this._getFirstDayOfMonth(te,Z)-c+7)%7,z=Math.ceil((H+S)/7),O=X?this.maxRows>z?this.maxRows:z:z,this.maxRows=O,A=this._daylightSavingAdjust(new Date(te,Z,1-H)),N=0;O>N;N++){for(T+="<tr>",W=u?"<td class='ui-datepicker-week-col'>"+this._get(t,"calculateWeek")(A)+"</td>":"",w=0;7>w;w++)E=m?m.apply(t.input?t.input[0]:null,[A]):[!0,""],F=A.getMonth()!==Z,L=F&&!v||!E[0]||Q&&Q>A||J&&A>J,W+="<td class='"+((w+c+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(A.getTime()===D.getTime()&&Z===t.selectedMonth&&t._keyEvent||b.getTime()===A.getTime()&&b.getTime()===D.getTime()?" "+this._dayOverClass:"")+(L?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!_?"":" "+E[1]+(A.getTime()===G.getTime()?" "+this._currentClass:"")+(A.getTime()===B.getTime()?" ui-datepicker-today":""))+"'"+(F&&!_||!E[2]?"":" title='"+E[2].replace(/'/g,"'")+"'")+(L?"":" data-handler='selectDay' data-event='click' data-month='"+A.getMonth()+"' data-year='"+A.getFullYear()+"'")+">"+(F&&!_?" ":L?"<span class='ui-state-default'>"+A.getDate()+"</span>":"<a class='ui-state-default"+(A.getTime()===B.getTime()?" ui-state-highlight":"")+(A.getTime()===G.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+A.getDate()+"</a>")+"</td>",A.setDate(A.getDate()+1),A=this._daylightSavingAdjust(A);T+=W+"</tr>"}Z++,Z>11&&(Z=0,te++),T+="</tbody></table>"+(X?"</div>"+(U[0]>0&&C===U[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),x+=T}y+=x}return y+=l,t._keyEvent=!1,y},_generateMonthYearHeader:function(t,e,i,s,n,o,a,r){var h,l,c,u,d,p,f,g,m=this._get(t,"changeMonth"),_=this._get(t,"changeYear"),v=this._get(t,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",y="";if(o||!m)y+="<span class='ui-datepicker-month'>"+a[e]+"</span>";else{for(h=s&&s.getFullYear()===i,l=n&&n.getFullYear()===i,y+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>",c=0;12>c;c++)(!h||c>=s.getMonth())&&(!l||n.getMonth()>=c)&&(y+="<option value='"+c+"'"+(c===e?" selected='selected'":"")+">"+r[c]+"</option>");y+="</select>"}if(v||(b+=y+(!o&&m&&_?"":" ")),!t.yearshtml)if(t.yearshtml="",o||!_)b+="<span class='ui-datepicker-year'>"+i+"</span>";else{for(u=this._get(t,"yearRange").split(":"),d=(new Date).getFullYear(),p=function(t){var e=t.match(/c[+\-].*/)?i+parseInt(t.substring(1),10):t.match(/[+\-].*/)?d+parseInt(t,10):parseInt(t,10);return isNaN(e)?d:e},f=p(u[0]),g=Math.max(f,p(u[1]||"")),f=s?Math.max(f,s.getFullYear()):f,g=n?Math.min(g,n.getFullYear()):g,t.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";g>=f;f++)t.yearshtml+="<option value='"+f+"'"+(f===i?" selected='selected'":"")+">"+f+"</option>";t.yearshtml+="</select>",b+=t.yearshtml,t.yearshtml=null}return b+=this._get(t,"yearSuffix"),v&&(b+=(!o&&m&&_?"":" ")+y),b+="</div>"},_adjustInstDate:function(t,e,i){var s=t.selectedYear+("Y"===i?e:0),n=t.selectedMonth+("M"===i?e:0),o=Math.min(t.selectedDay,this._getDaysInMonth(s,n))+("D"===i?e:0),a=this._restrictMinMax(t,this._daylightSavingAdjust(new Date(s,n,o)));t.selectedDay=a.getDate(),t.drawMonth=t.selectedMonth=a.getMonth(),t.drawYear=t.selectedYear=a.getFullYear(),("M"===i||"Y"===i)&&this._notifyChange(t)},_restrictMinMax:function(t,e){var i=this._getMinMaxDate(t,"min"),s=this._getMinMaxDate(t,"max"),n=i&&i>e?i:e;return s&&n>s?s:n},_notifyChange:function(t){var e=this._get(t,"onChangeMonthYear");e&&e.apply(t.input?t.input[0]:null,[t.selectedYear,t.selectedMonth+1,t])},_getNumberOfMonths:function(t){var e=this._get(t,"numberOfMonths");return null==e?[1,1]:"number"==typeof e?[1,e]:e},_getMinMaxDate:function(t,e){return this._determineDate(t,this._get(t,e+"Date"),null)},_getDaysInMonth:function(t,e){return 32-this._daylightSavingAdjust(new Date(t,e,32)).getDate()},_getFirstDayOfMonth:function(t,e){return new Date(t,e,1).getDay()},_canAdjustMonth:function(t,e,i,s){var n=this._getNumberOfMonths(t),o=this._daylightSavingAdjust(new Date(i,s+(0>e?e:n[0]*n[1]),1));return 0>e&&o.setDate(this._getDaysInMonth(o.getFullYear(),o.getMonth())),this._isInRange(t,o)},_isInRange:function(t,e){var i,s,n=this._getMinMaxDate(t,"min"),o=this._getMinMaxDate(t,"max"),a=null,r=null,h=this._get(t,"yearRange");return h&&(i=h.split(":"),s=(new Date).getFullYear(),a=parseInt(i[0],10),r=parseInt(i[1],10),i[0].match(/[+\-].*/)&&(a+=s),i[1].match(/[+\-].*/)&&(r+=s)),(!n||e.getTime()>=n.getTime())&&(!o||e.getTime()<=o.getTime())&&(!a||e.getFullYear()>=a)&&(!r||r>=e.getFullYear())},_getFormatConfig:function(t){var e=this._get(t,"shortYearCutoff");return e="string"!=typeof e?e:(new Date).getFullYear()%100+parseInt(e,10),{shortYearCutoff:e,dayNamesShort:this._get(t,"dayNamesShort"),dayNames:this._get(t,"dayNames"),monthNamesShort:this._get(t,"monthNamesShort"),monthNames:this._get(t,"monthNames")}},_formatDate:function(t,e,i,s){e||(t.currentDay=t.selectedDay,t.currentMonth=t.selectedMonth,t.currentYear=t.selectedYear);var n=e?"object"==typeof e?e:this._daylightSavingAdjust(new Date(s,i,e)):this._daylightSavingAdjust(new Date(t.currentYear,t.currentMonth,t.currentDay));return this.formatDate(this._get(t,"dateFormat"),n,this._getFormatConfig(t))}}),t.fn.datepicker=function(e){if(!this.length)return this;t.datepicker.initialized||(t(document).on("mousedown",t.datepicker._checkExternalClick),t.datepicker.initialized=!0),0===t("#"+t.datepicker._mainDivId).length&&t("body").append(t.datepicker.dpDiv);var i=Array.prototype.slice.call(arguments,1);return"string"!=typeof e||"isDisabled"!==e&&"getDate"!==e&&"widget"!==e?"option"===e&&2===arguments.length&&"string"==typeof arguments[1]?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i)):this.each(function(){"string"==typeof e?t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this].concat(i)):t.datepicker._attachDatepicker(this,e)}):t.datepicker["_"+e+"Datepicker"].apply(t.datepicker,[this[0]].concat(i))},t.datepicker=new s,t.datepicker.initialized=!1,t.datepicker.uuid=(new Date).getTime(),t.datepicker.version="1.12.1",t.datepicker,t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var _=!1;t(document).on("mouseup",function(){_=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!_){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,n="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!n&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),_=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,_=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.ui.safeBlur=function(e){e&&"body"!==e.nodeName.toLowerCase()&&t(e).trigger("blur")},t.widget("ui.draggable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){"original"===this.options.helper&&this._setPositionRelative(),this.options.addClasses&&this._addClass("ui-draggable"),this._setHandleClassName(),this._mouseInit()},_setOption:function(t,e){this._super(t,e),"handle"===t&&(this._removeHandleClassName(),this._setHandleClassName())},_destroy:function(){return(this.helper||this.element).is(".ui-draggable-dragging")?(this.destroyOnClear=!0,void 0):(this._removeHandleClassName(),this._mouseDestroy(),void 0)},_mouseCapture:function(e){var i=this.options;return this.helper||i.disabled||t(e.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(e),this.handle?(this._blurActiveElement(e),this._blockFrames(i.iframeFix===!0?"iframe":i.iframeFix),!0):!1)},_blockFrames:function(e){this.iframeBlocks=this.document.find(e).map(function(){var e=t(this);return t("<div>").css("position","absolute").appendTo(e.parent()).outerWidth(e.outerWidth()).outerHeight(e.outerHeight()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_blurActiveElement:function(e){var i=t.ui.safeActiveElement(this.document[0]),s=t(e.target);s.closest(i).length||t.ui.safeBlur(i)},_mouseStart:function(e){var i=this.options;return this.helper=this._createHelper(e),this._addClass(this.helper,"ui-draggable-dragging"),this._cacheHelperProportions(),t.ui.ddmanager&&(t.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(!0),this.offsetParent=this.helper.offsetParent(),this.hasFixedAncestor=this.helper.parents().filter(function(){return"fixed"===t(this).css("position")}).length>0,this.positionAbs=this.element.offset(),this._refreshOffsets(e),this.originalPosition=this.position=this._generatePosition(e,!1),this.originalPageX=e.pageX,this.originalPageY=e.pageY,i.cursorAt&&this._adjustOffsetFromHelper(i.cursorAt),this._setContainment(),this._trigger("start",e)===!1?(this._clear(),!1):(this._cacheHelperProportions(),t.ui.ddmanager&&!i.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this._mouseDrag(e,!0),t.ui.ddmanager&&t.ui.ddmanager.dragStart(this,e),!0)},_refreshOffsets:function(t){this.offset={top:this.positionAbs.top-this.margins.top,left:this.positionAbs.left-this.margins.left,scroll:!1,parent:this._getParentOffset(),relative:this._getRelativeOffset()},this.offset.click={left:t.pageX-this.offset.left,top:t.pageY-this.offset.top}},_mouseDrag:function(e,i){if(this.hasFixedAncestor&&(this.offset.parent=this._getParentOffset()),this.position=this._generatePosition(e,!0),this.positionAbs=this._convertPositionTo("absolute"),!i){var s=this._uiHash();if(this._trigger("drag",e,s)===!1)return this._mouseUp(new t.Event("mouseup",e)),!1;this.position=s.position}return this.helper[0].style.left=this.position.left+"px",this.helper[0].style.top=this.position.top+"px",t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),!1},_mouseStop:function(e){var i=this,s=!1;return t.ui.ddmanager&&!this.options.dropBehaviour&&(s=t.ui.ddmanager.drop(this,e)),this.dropped&&(s=this.dropped,this.dropped=!1),"invalid"===this.options.revert&&!s||"valid"===this.options.revert&&s||this.options.revert===!0||t.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?t(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){i._trigger("stop",e)!==!1&&i._clear()}):this._trigger("stop",e)!==!1&&this._clear(),!1},_mouseUp:function(e){return this._unblockFrames(),t.ui.ddmanager&&t.ui.ddmanager.dragStop(this,e),this.handleElement.is(e.target)&&this.element.trigger("focus"),t.ui.mouse.prototype._mouseUp.call(this,e)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp(new t.Event("mouseup",{target:this.element[0]})):this._clear(),this},_getHandle:function(e){return this.options.handle?!!t(e.target).closest(this.element.find(this.options.handle)).length:!0},_setHandleClassName:function(){this.handleElement=this.options.handle?this.element.find(this.options.handle):this.element,this._addClass(this.handleElement,"ui-draggable-handle")},_removeHandleClassName:function(){this._removeClass(this.handleElement,"ui-draggable-handle")},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper),n=s?t(i.helper.apply(this.element[0],[e])):"clone"===i.helper?this.element.clone().removeAttr("id"):this.element;return n.parents("body").length||n.appendTo("parent"===i.appendTo?this.element[0].parentNode:i.appendTo),s&&n[0]===this.element[0]&&this._setPositionRelative(),n[0]===this.element[0]||/(fixed|absolute)/.test(n.css("position"))||n.css("position","absolute"),n},_setPositionRelative:function(){/^(?:r|a|f)/.test(this.element.css("position"))||(this.element[0].style.position="relative")},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_isRootNode:function(t){return/(html|body)/i.test(t.tagName)||t===this.document[0]},_getParentOffset:function(){var e=this.offsetParent.offset(),i=this.document[0];return"absolute"===this.cssPosition&&this.scrollParent[0]!==i&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),this._isRootNode(this.offsetParent[0])&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"!==this.cssPosition)return{top:0,left:0};var t=this.element.position(),e=this._isRootNode(this.scrollParent[0]);return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+(e?0:this.scrollParent.scrollTop()),left:t.left-(parseInt(this.helper.css("left"),10)||0)+(e?0:this.scrollParent.scrollLeft())} +},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options,o=this.document[0];return this.relativeContainer=null,n.containment?"window"===n.containment?(this.containment=[t(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,t(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,t(window).scrollLeft()+t(window).width()-this.helperProportions.width-this.margins.left,t(window).scrollTop()+(t(window).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):"document"===n.containment?(this.containment=[0,0,t(o).width()-this.helperProportions.width-this.margins.left,(t(o).height()||o.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top],void 0):n.containment.constructor===Array?(this.containment=n.containment,void 0):("parent"===n.containment&&(n.containment=this.helper[0].parentNode),i=t(n.containment),s=i[0],s&&(e=/(scroll|auto)/.test(i.css("overflow")),this.containment=[(parseInt(i.css("borderLeftWidth"),10)||0)+(parseInt(i.css("paddingLeft"),10)||0),(parseInt(i.css("borderTopWidth"),10)||0)+(parseInt(i.css("paddingTop"),10)||0),(e?Math.max(s.scrollWidth,s.offsetWidth):s.offsetWidth)-(parseInt(i.css("borderRightWidth"),10)||0)-(parseInt(i.css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(e?Math.max(s.scrollHeight,s.offsetHeight):s.offsetHeight)-(parseInt(i.css("borderBottomWidth"),10)||0)-(parseInt(i.css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relativeContainer=i),void 0):(this.containment=null,void 0)},_convertPositionTo:function(t,e){e||(e=this.position);var i="absolute"===t?1:-1,s=this._isRootNode(this.scrollParent[0]);return{top:e.top+this.offset.relative.top*i+this.offset.parent.top*i-("fixed"===this.cssPosition?-this.offset.scroll.top:s?0:this.offset.scroll.top)*i,left:e.left+this.offset.relative.left*i+this.offset.parent.left*i-("fixed"===this.cssPosition?-this.offset.scroll.left:s?0:this.offset.scroll.left)*i}},_generatePosition:function(t,e){var i,s,n,o,a=this.options,r=this._isRootNode(this.scrollParent[0]),h=t.pageX,l=t.pageY;return r&&this.offset.scroll||(this.offset.scroll={top:this.scrollParent.scrollTop(),left:this.scrollParent.scrollLeft()}),e&&(this.containment&&(this.relativeContainer?(s=this.relativeContainer.offset(),i=[this.containment[0]+s.left,this.containment[1]+s.top,this.containment[2]+s.left,this.containment[3]+s.top]):i=this.containment,t.pageX-this.offset.click.left<i[0]&&(h=i[0]+this.offset.click.left),t.pageY-this.offset.click.top<i[1]&&(l=i[1]+this.offset.click.top),t.pageX-this.offset.click.left>i[2]&&(h=i[2]+this.offset.click.left),t.pageY-this.offset.click.top>i[3]&&(l=i[3]+this.offset.click.top)),a.grid&&(n=a.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/a.grid[1])*a.grid[1]:this.originalPageY,l=i?n-this.offset.click.top>=i[1]||n-this.offset.click.top>i[3]?n:n-this.offset.click.top>=i[1]?n-a.grid[1]:n+a.grid[1]:n,o=a.grid[0]?this.originalPageX+Math.round((h-this.originalPageX)/a.grid[0])*a.grid[0]:this.originalPageX,h=i?o-this.offset.click.left>=i[0]||o-this.offset.click.left>i[2]?o:o-this.offset.click.left>=i[0]?o-a.grid[0]:o+a.grid[0]:o),"y"===a.axis&&(h=this.originalPageX),"x"===a.axis&&(l=this.originalPageY)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.offset.scroll.top:r?0:this.offset.scroll.top),left:h-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.offset.scroll.left:r?0:this.offset.scroll.left)}},_clear:function(){this._removeClass(this.helper,"ui-draggable-dragging"),this.helper[0]===this.element[0]||this.cancelHelperRemoval||this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1,this.destroyOnClear&&this.destroy()},_trigger:function(e,i,s){return s=s||this._uiHash(),t.ui.plugin.call(this,e,[i,s,this],!0),/^(drag|start|stop)/.test(e)&&(this.positionAbs=this._convertPositionTo("absolute"),s.offset=this.positionAbs),t.Widget.prototype._trigger.call(this,e,i,s)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),t.ui.plugin.add("draggable","connectToSortable",{start:function(e,i,s){var n=t.extend({},i,{item:s.element});s.sortables=[],t(s.options.connectToSortable).each(function(){var i=t(this).sortable("instance");i&&!i.options.disabled&&(s.sortables.push(i),i.refreshPositions(),i._trigger("activate",e,n))})},stop:function(e,i,s){var n=t.extend({},i,{item:s.element});s.cancelHelperRemoval=!1,t.each(s.sortables,function(){var t=this;t.isOver?(t.isOver=0,s.cancelHelperRemoval=!0,t.cancelHelperRemoval=!1,t._storedCSS={position:t.placeholder.css("position"),top:t.placeholder.css("top"),left:t.placeholder.css("left")},t._mouseStop(e),t.options.helper=t.options._helper):(t.cancelHelperRemoval=!0,t._trigger("deactivate",e,n))})},drag:function(e,i,s){t.each(s.sortables,function(){var n=!1,o=this;o.positionAbs=s.positionAbs,o.helperProportions=s.helperProportions,o.offset.click=s.offset.click,o._intersectsWith(o.containerCache)&&(n=!0,t.each(s.sortables,function(){return this.positionAbs=s.positionAbs,this.helperProportions=s.helperProportions,this.offset.click=s.offset.click,this!==o&&this._intersectsWith(this.containerCache)&&t.contains(o.element[0],this.element[0])&&(n=!1),n})),n?(o.isOver||(o.isOver=1,s._parent=i.helper.parent(),o.currentItem=i.helper.appendTo(o.element).data("ui-sortable-item",!0),o.options._helper=o.options.helper,o.options.helper=function(){return i.helper[0]},e.target=o.currentItem[0],o._mouseCapture(e,!0),o._mouseStart(e,!0,!0),o.offset.click.top=s.offset.click.top,o.offset.click.left=s.offset.click.left,o.offset.parent.left-=s.offset.parent.left-o.offset.parent.left,o.offset.parent.top-=s.offset.parent.top-o.offset.parent.top,s._trigger("toSortable",e),s.dropped=o.element,t.each(s.sortables,function(){this.refreshPositions()}),s.currentItem=s.element,o.fromOutside=s),o.currentItem&&(o._mouseDrag(e),i.position=o.position)):o.isOver&&(o.isOver=0,o.cancelHelperRemoval=!0,o.options._revert=o.options.revert,o.options.revert=!1,o._trigger("out",e,o._uiHash(o)),o._mouseStop(e,!0),o.options.revert=o.options._revert,o.options.helper=o.options._helper,o.placeholder&&o.placeholder.remove(),i.helper.appendTo(s._parent),s._refreshOffsets(e),i.position=s._generatePosition(e,!0),s._trigger("fromSortable",e),s.dropped=!1,t.each(s.sortables,function(){this.refreshPositions()}))})}}),t.ui.plugin.add("draggable","cursor",{start:function(e,i,s){var n=t("body"),o=s.options;n.css("cursor")&&(o._cursor=n.css("cursor")),n.css("cursor",o.cursor)},stop:function(e,i,s){var n=s.options;n._cursor&&t("body").css("cursor",n._cursor)}}),t.ui.plugin.add("draggable","opacity",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("opacity")&&(o._opacity=n.css("opacity")),n.css("opacity",o.opacity)},stop:function(e,i,s){var n=s.options;n._opacity&&t(i.helper).css("opacity",n._opacity)}}),t.ui.plugin.add("draggable","scroll",{start:function(t,e,i){i.scrollParentNotHidden||(i.scrollParentNotHidden=i.helper.scrollParent(!1)),i.scrollParentNotHidden[0]!==i.document[0]&&"HTML"!==i.scrollParentNotHidden[0].tagName&&(i.overflowOffset=i.scrollParentNotHidden.offset())},drag:function(e,i,s){var n=s.options,o=!1,a=s.scrollParentNotHidden[0],r=s.document[0];a!==r&&"HTML"!==a.tagName?(n.axis&&"x"===n.axis||(s.overflowOffset.top+a.offsetHeight-e.pageY<n.scrollSensitivity?a.scrollTop=o=a.scrollTop+n.scrollSpeed:e.pageY-s.overflowOffset.top<n.scrollSensitivity&&(a.scrollTop=o=a.scrollTop-n.scrollSpeed)),n.axis&&"y"===n.axis||(s.overflowOffset.left+a.offsetWidth-e.pageX<n.scrollSensitivity?a.scrollLeft=o=a.scrollLeft+n.scrollSpeed:e.pageX-s.overflowOffset.left<n.scrollSensitivity&&(a.scrollLeft=o=a.scrollLeft-n.scrollSpeed))):(n.axis&&"x"===n.axis||(e.pageY-t(r).scrollTop()<n.scrollSensitivity?o=t(r).scrollTop(t(r).scrollTop()-n.scrollSpeed):t(window).height()-(e.pageY-t(r).scrollTop())<n.scrollSensitivity&&(o=t(r).scrollTop(t(r).scrollTop()+n.scrollSpeed))),n.axis&&"y"===n.axis||(e.pageX-t(r).scrollLeft()<n.scrollSensitivity?o=t(r).scrollLeft(t(r).scrollLeft()-n.scrollSpeed):t(window).width()-(e.pageX-t(r).scrollLeft())<n.scrollSensitivity&&(o=t(r).scrollLeft(t(r).scrollLeft()+n.scrollSpeed)))),o!==!1&&t.ui.ddmanager&&!n.dropBehaviour&&t.ui.ddmanager.prepareOffsets(s,e)}}),t.ui.plugin.add("draggable","snap",{start:function(e,i,s){var n=s.options;s.snapElements=[],t(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var e=t(this),i=e.offset();this!==s.element[0]&&s.snapElements.push({item:this,width:e.outerWidth(),height:e.outerHeight(),top:i.top,left:i.left})})},drag:function(e,i,s){var n,o,a,r,h,l,c,u,d,p,f=s.options,g=f.snapTolerance,m=i.offset.left,_=m+s.helperProportions.width,v=i.offset.top,b=v+s.helperProportions.height;for(d=s.snapElements.length-1;d>=0;d--)h=s.snapElements[d].left-s.margins.left,l=h+s.snapElements[d].width,c=s.snapElements[d].top-s.margins.top,u=c+s.snapElements[d].height,h-g>_||m>l+g||c-g>b||v>u+g||!t.contains(s.snapElements[d].item.ownerDocument,s.snapElements[d].item)?(s.snapElements[d].snapping&&s.options.snap.release&&s.options.snap.release.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=!1):("inner"!==f.snapMode&&(n=g>=Math.abs(c-b),o=g>=Math.abs(u-v),a=g>=Math.abs(h-_),r=g>=Math.abs(l-m),n&&(i.position.top=s._convertPositionTo("relative",{top:c-s.helperProportions.height,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h-s.helperProportions.width}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l}).left)),p=n||o||a||r,"outer"!==f.snapMode&&(n=g>=Math.abs(c-v),o=g>=Math.abs(u-b),a=g>=Math.abs(h-m),r=g>=Math.abs(l-_),n&&(i.position.top=s._convertPositionTo("relative",{top:c,left:0}).top),o&&(i.position.top=s._convertPositionTo("relative",{top:u-s.helperProportions.height,left:0}).top),a&&(i.position.left=s._convertPositionTo("relative",{top:0,left:h}).left),r&&(i.position.left=s._convertPositionTo("relative",{top:0,left:l-s.helperProportions.width}).left)),!s.snapElements[d].snapping&&(n||o||a||r||p)&&s.options.snap.snap&&s.options.snap.snap.call(s.element,e,t.extend(s._uiHash(),{snapItem:s.snapElements[d].item})),s.snapElements[d].snapping=n||o||a||r||p)}}),t.ui.plugin.add("draggable","stack",{start:function(e,i,s){var n,o=s.options,a=t.makeArray(t(o.stack)).sort(function(e,i){return(parseInt(t(e).css("zIndex"),10)||0)-(parseInt(t(i).css("zIndex"),10)||0)});a.length&&(n=parseInt(t(a[0]).css("zIndex"),10)||0,t(a).each(function(e){t(this).css("zIndex",n+e)}),this.css("zIndex",n+a.length))}}),t.ui.plugin.add("draggable","zIndex",{start:function(e,i,s){var n=t(i.helper),o=s.options;n.css("zIndex")&&(o._zIndex=n.css("zIndex")),n.css("zIndex",o.zIndex)},stop:function(e,i,s){var n=s.options;n._zIndex&&t(i.helper).css("zIndex",n._zIndex)}}),t.ui.draggable,t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",0),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("<div>"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidth<t.width,n=this._isNumber(t.height)&&e.maxHeight&&e.maxHeight<t.height,o=this._isNumber(t.width)&&e.minWidth&&e.minWidth>t.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("<div style='overflow:hidden;'></div>"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,g=s.maxWidth&&p>s.maxWidth,m=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),g&&(p-=l),m&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable,t.widget("ui.dialog",{version:"1.12.1",options:{appendTo:"body",autoOpen:!0,buttons:[],classes:{"ui-dialog":"ui-corner-all","ui-dialog-titlebar":"ui-corner-all"},closeOnEscape:!0,closeText:"Close",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(e){var i=t(this).css(e).offset().top;0>i&&t(this).css("top",e.top-i)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},sizeRelatedOptions:{buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},resizableRelatedOptions:{maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),null==this.options.title&&null!=this.originalTitle&&(this.options.title=this.originalTitle),this.options.disabled&&(this.options.disabled=!1),this._createWrapper(),this.element.show().removeAttr("title").appendTo(this.uiDialog),this._addClass("ui-dialog-content","ui-widget-content"),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&t.fn.draggable&&this._makeDraggable(),this.options.resizable&&t.fn.resizable&&this._makeResizable(),this._isOpen=!1,this._trackFocus()},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var e=this.options.appendTo;return e&&(e.jquery||e.nodeType)?t(e):this.document.find(e||"body").eq(0)},_destroy:function(){var t,e=this.originalPosition;this._untrackInstance(),this._destroyOverlay(),this.element.removeUniqueId().css(this.originalCss).detach(),this.uiDialog.remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),t=e.parent.children().eq(e.index),t.length&&t[0]!==this.element[0]?t.before(this.element):e.parent.append(this.element)},widget:function(){return this.uiDialog +},disable:t.noop,enable:t.noop,close:function(e){var i=this;this._isOpen&&this._trigger("beforeClose",e)!==!1&&(this._isOpen=!1,this._focusedElement=null,this._destroyOverlay(),this._untrackInstance(),this.opener.filter(":focusable").trigger("focus").length||t.ui.safeBlur(t.ui.safeActiveElement(this.document[0])),this._hide(this.uiDialog,this.options.hide,function(){i._trigger("close",e)}))},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,i){var s=!1,n=this.uiDialog.siblings(".ui-front:visible").map(function(){return+t(this).css("z-index")}).get(),o=Math.max.apply(null,n);return o>=+this.uiDialog.css("z-index")&&(this.uiDialog.css("z-index",o+1),s=!0),s&&!i&&this._trigger("focus",e),s},open:function(){var e=this;return this._isOpen?(this._moveToTop()&&this._focusTabbable(),void 0):(this._isOpen=!0,this.opener=t(t.ui.safeActiveElement(this.document[0])),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this.overlay&&this.overlay.css("z-index",this.uiDialog.css("z-index")-1),this._show(this.uiDialog,this.options.show,function(){e._focusTabbable(),e._trigger("focus")}),this._makeFocusTarget(),this._trigger("open"),void 0)},_focusTabbable:function(){var t=this._focusedElement;t||(t=this.element.find("[autofocus]")),t.length||(t=this.element.find(":tabbable")),t.length||(t=this.uiDialogButtonPane.find(":tabbable")),t.length||(t=this.uiDialogTitlebarClose.filter(":tabbable")),t.length||(t=this.uiDialog),t.eq(0).trigger("focus")},_keepFocus:function(e){function i(){var e=t.ui.safeActiveElement(this.document[0]),i=this.uiDialog[0]===e||t.contains(this.uiDialog[0],e);i||this._focusTabbable()}e.preventDefault(),i.call(this),this._delay(i)},_createWrapper:function(){this.uiDialog=t("<div>").hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._addClass(this.uiDialog,"ui-dialog","ui-widget ui-widget-content ui-front"),this._on(this.uiDialog,{keydown:function(e){if(this.options.closeOnEscape&&!e.isDefaultPrevented()&&e.keyCode&&e.keyCode===t.ui.keyCode.ESCAPE)return e.preventDefault(),this.close(e),void 0;if(e.keyCode===t.ui.keyCode.TAB&&!e.isDefaultPrevented()){var i=this.uiDialog.find(":tabbable"),s=i.filter(":first"),n=i.filter(":last");e.target!==n[0]&&e.target!==this.uiDialog[0]||e.shiftKey?e.target!==s[0]&&e.target!==this.uiDialog[0]||!e.shiftKey||(this._delay(function(){n.trigger("focus")}),e.preventDefault()):(this._delay(function(){s.trigger("focus")}),e.preventDefault())}},mousedown:function(t){this._moveToTop(t)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var e;this.uiDialogTitlebar=t("<div>"),this._addClass(this.uiDialogTitlebar,"ui-dialog-titlebar","ui-widget-header ui-helper-clearfix"),this._on(this.uiDialogTitlebar,{mousedown:function(e){t(e.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.trigger("focus")}}),this.uiDialogTitlebarClose=t("<button type='button'></button>").button({label:t("<a>").text(this.options.closeText).html(),icon:"ui-icon-closethick",showLabel:!1}).appendTo(this.uiDialogTitlebar),this._addClass(this.uiDialogTitlebarClose,"ui-dialog-titlebar-close"),this._on(this.uiDialogTitlebarClose,{click:function(t){t.preventDefault(),this.close(t)}}),e=t("<span>").uniqueId().prependTo(this.uiDialogTitlebar),this._addClass(e,"ui-dialog-title"),this._title(e),this.uiDialogTitlebar.prependTo(this.uiDialog),this.uiDialog.attr({"aria-labelledby":e.attr("id")})},_title:function(t){this.options.title?t.text(this.options.title):t.html(" ")},_createButtonPane:function(){this.uiDialogButtonPane=t("<div>"),this._addClass(this.uiDialogButtonPane,"ui-dialog-buttonpane","ui-widget-content ui-helper-clearfix"),this.uiButtonSet=t("<div>").appendTo(this.uiDialogButtonPane),this._addClass(this.uiButtonSet,"ui-dialog-buttonset"),this._createButtons()},_createButtons:function(){var e=this,i=this.options.buttons;return this.uiDialogButtonPane.remove(),this.uiButtonSet.empty(),t.isEmptyObject(i)||t.isArray(i)&&!i.length?(this._removeClass(this.uiDialog,"ui-dialog-buttons"),void 0):(t.each(i,function(i,s){var n,o;s=t.isFunction(s)?{click:s,text:i}:s,s=t.extend({type:"button"},s),n=s.click,o={icon:s.icon,iconPosition:s.iconPosition,showLabel:s.showLabel,icons:s.icons,text:s.text},delete s.click,delete s.icon,delete s.iconPosition,delete s.showLabel,delete s.icons,"boolean"==typeof s.text&&delete s.text,t("<button></button>",s).button(o).appendTo(e.uiButtonSet).on("click",function(){n.apply(e.element[0],arguments)})}),this._addClass(this.uiDialog,"ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog),void 0)},_makeDraggable:function(){function e(t){return{position:t.position,offset:t.offset}}var i=this,s=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(s,n){i._addClass(t(this),"ui-dialog-dragging"),i._blockFrames(),i._trigger("dragStart",s,e(n))},drag:function(t,s){i._trigger("drag",t,e(s))},stop:function(n,o){var a=o.offset.left-i.document.scrollLeft(),r=o.offset.top-i.document.scrollTop();s.position={my:"left top",at:"left"+(a>=0?"+":"")+a+" "+"top"+(r>=0?"+":"")+r,of:i.window},i._removeClass(t(this),"ui-dialog-dragging"),i._unblockFrames(),i._trigger("dragStop",n,e(o))}})},_makeResizable:function(){function e(t){return{originalPosition:t.originalPosition,originalSize:t.originalSize,position:t.position,size:t.size}}var i=this,s=this.options,n=s.resizable,o=this.uiDialog.css("position"),a="string"==typeof n?n:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:s.maxWidth,maxHeight:s.maxHeight,minWidth:s.minWidth,minHeight:this._minHeight(),handles:a,start:function(s,n){i._addClass(t(this),"ui-dialog-resizing"),i._blockFrames(),i._trigger("resizeStart",s,e(n))},resize:function(t,s){i._trigger("resize",t,e(s))},stop:function(n,o){var a=i.uiDialog.offset(),r=a.left-i.document.scrollLeft(),h=a.top-i.document.scrollTop();s.height=i.uiDialog.height(),s.width=i.uiDialog.width(),s.position={my:"left top",at:"left"+(r>=0?"+":"")+r+" "+"top"+(h>=0?"+":"")+h,of:i.window},i._removeClass(t(this),"ui-dialog-resizing"),i._unblockFrames(),i._trigger("resizeStop",n,e(o))}}).css("position",o)},_trackFocus:function(){this._on(this.widget(),{focusin:function(e){this._makeFocusTarget(),this._focusedElement=t(e.target)}})},_makeFocusTarget:function(){this._untrackInstance(),this._trackingInstances().unshift(this)},_untrackInstance:function(){var e=this._trackingInstances(),i=t.inArray(this,e);-1!==i&&e.splice(i,1)},_trackingInstances:function(){var t=this.document.data("ui-dialog-instances");return t||(t=[],this.document.data("ui-dialog-instances",t)),t},_minHeight:function(){var t=this.options;return"auto"===t.height?t.minHeight:Math.min(t.minHeight,t.height)},_position:function(){var t=this.uiDialog.is(":visible");t||this.uiDialog.show(),this.uiDialog.position(this.options.position),t||this.uiDialog.hide()},_setOptions:function(e){var i=this,s=!1,n={};t.each(e,function(t,e){i._setOption(t,e),t in i.sizeRelatedOptions&&(s=!0),t in i.resizableRelatedOptions&&(n[t]=e)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",n)},_setOption:function(e,i){var s,n,o=this.uiDialog;"disabled"!==e&&(this._super(e,i),"appendTo"===e&&this.uiDialog.appendTo(this._appendTo()),"buttons"===e&&this._createButtons(),"closeText"===e&&this.uiDialogTitlebarClose.button({label:t("<a>").text(""+this.options.closeText).html()}),"draggable"===e&&(s=o.is(":data(ui-draggable)"),s&&!i&&o.draggable("destroy"),!s&&i&&this._makeDraggable()),"position"===e&&this._position(),"resizable"===e&&(n=o.is(":data(ui-resizable)"),n&&!i&&o.resizable("destroy"),n&&"string"==typeof i&&o.resizable("option","handles",i),n||i===!1||this._makeResizable()),"title"===e&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title")))},_size:function(){var t,e,i,s=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),s.minWidth>s.width&&(s.width=s.minWidth),t=this.uiDialog.css({height:"auto",width:s.width}).outerHeight(),e=Math.max(0,s.minHeight-t),i="number"==typeof s.maxHeight?Math.max(0,s.maxHeight-t):"none","auto"===s.height?this.element.css({minHeight:e,maxHeight:i,height:"auto"}):this.element.height(Math.max(0,s.height-t)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_blockFrames:function(){this.iframeBlocks=this.document.find("iframe").map(function(){var e=t(this);return t("<div>").css({position:"absolute",width:e.outerWidth(),height:e.outerHeight()}).appendTo(e.parent()).offset(e.offset())[0]})},_unblockFrames:function(){this.iframeBlocks&&(this.iframeBlocks.remove(),delete this.iframeBlocks)},_allowInteraction:function(e){return t(e.target).closest(".ui-dialog").length?!0:!!t(e.target).closest(".ui-datepicker").length},_createOverlay:function(){if(this.options.modal){var e=!0;this._delay(function(){e=!1}),this.document.data("ui-dialog-overlays")||this._on(this.document,{focusin:function(t){e||this._allowInteraction(t)||(t.preventDefault(),this._trackingInstances()[0]._focusTabbable())}}),this.overlay=t("<div>").appendTo(this._appendTo()),this._addClass(this.overlay,null,"ui-widget-overlay ui-front"),this._on(this.overlay,{mousedown:"_keepFocus"}),this.document.data("ui-dialog-overlays",(this.document.data("ui-dialog-overlays")||0)+1)}},_destroyOverlay:function(){if(this.options.modal&&this.overlay){var t=this.document.data("ui-dialog-overlays")-1;t?this.document.data("ui-dialog-overlays",t):(this._off(this.document,"focusin"),this.document.removeData("ui-dialog-overlays")),this.overlay.remove(),this.overlay=null}}}),t.uiBackCompat!==!1&&t.widget("ui.dialog",t.ui.dialog,{options:{dialogClass:""},_createWrapper:function(){this._super(),this.uiDialog.addClass(this.options.dialogClass)},_setOption:function(t,e){"dialogClass"===t&&this.uiDialog.removeClass(this.options.dialogClass).addClass(e),this._superApply(arguments)}}),t.ui.dialog,t.widget("ui.droppable",{version:"1.12.1",widgetEventPrefix:"drop",options:{accept:"*",addClasses:!0,greedy:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var e,i=this.options,s=i.accept;this.isover=!1,this.isout=!0,this.accept=t.isFunction(s)?s:function(t){return t.is(s)},this.proportions=function(){return arguments.length?(e=arguments[0],void 0):e?e:e={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight}},this._addToManager(i.scope),i.addClasses&&this._addClass("ui-droppable")},_addToManager:function(e){t.ui.ddmanager.droppables[e]=t.ui.ddmanager.droppables[e]||[],t.ui.ddmanager.droppables[e].push(this)},_splice:function(t){for(var e=0;t.length>e;e++)t[e]===this&&t.splice(e,1)},_destroy:function(){var e=t.ui.ddmanager.droppables[this.options.scope];this._splice(e)},_setOption:function(e,i){if("accept"===e)this.accept=t.isFunction(i)?i:function(t){return t.is(i)};else if("scope"===e){var s=t.ui.ddmanager.droppables[this.options.scope];this._splice(s),this._addToManager(i)}this._super(e,i)},_activate:function(e){var i=t.ui.ddmanager.current;this._addActiveClass(),i&&this._trigger("activate",e,this.ui(i))},_deactivate:function(e){var i=t.ui.ddmanager.current;this._removeActiveClass(),i&&this._trigger("deactivate",e,this.ui(i))},_over:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._addHoverClass(),this._trigger("over",e,this.ui(i)))},_out:function(e){var i=t.ui.ddmanager.current;i&&(i.currentItem||i.element)[0]!==this.element[0]&&this.accept.call(this.element[0],i.currentItem||i.element)&&(this._removeHoverClass(),this._trigger("out",e,this.ui(i)))},_drop:function(e,i){var s=i||t.ui.ddmanager.current,n=!1;return s&&(s.currentItem||s.element)[0]!==this.element[0]?(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var i=t(this).droppable("instance");return i.options.greedy&&!i.options.disabled&&i.options.scope===s.options.scope&&i.accept.call(i.element[0],s.currentItem||s.element)&&v(s,t.extend(i,{offset:i.element.offset()}),i.options.tolerance,e)?(n=!0,!1):void 0}),n?!1:this.accept.call(this.element[0],s.currentItem||s.element)?(this._removeActiveClass(),this._removeHoverClass(),this._trigger("drop",e,this.ui(s)),this.element):!1):!1},ui:function(t){return{draggable:t.currentItem||t.element,helper:t.helper,position:t.position,offset:t.positionAbs}},_addHoverClass:function(){this._addClass("ui-droppable-hover")},_removeHoverClass:function(){this._removeClass("ui-droppable-hover")},_addActiveClass:function(){this._addClass("ui-droppable-active")},_removeActiveClass:function(){this._removeClass("ui-droppable-active")}});var v=t.ui.intersect=function(){function t(t,e,i){return t>=e&&e+i>t}return function(e,i,s,n){if(!i.offset)return!1;var o=(e.positionAbs||e.position.absolute).left+e.margins.left,a=(e.positionAbs||e.position.absolute).top+e.margins.top,r=o+e.helperProportions.width,h=a+e.helperProportions.height,l=i.offset.left,c=i.offset.top,u=l+i.proportions().width,d=c+i.proportions().height;switch(s){case"fit":return o>=l&&u>=r&&a>=c&&d>=h;case"intersect":return o+e.helperProportions.width/2>l&&u>r-e.helperProportions.width/2&&a+e.helperProportions.height/2>c&&d>h-e.helperProportions.height/2;case"pointer":return t(n.pageY,c,i.proportions().height)&&t(n.pageX,l,i.proportions().width);case"touch":return(a>=c&&d>=a||h>=c&&d>=h||c>a&&h>d)&&(o>=l&&u>=o||r>=l&&u>=r||l>o&&r>u);default:return!1}}}();t.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(e,i){var s,n,o=t.ui.ddmanager.droppables[e.options.scope]||[],a=i?i.type:null,r=(e.currentItem||e.element).find(":data(ui-droppable)").addBack();t:for(s=0;o.length>s;s++)if(!(o[s].options.disabled||e&&!o[s].accept.call(o[s].element[0],e.currentItem||e.element))){for(n=0;r.length>n;n++)if(r[n]===o[s].element[0]){o[s].proportions().height=0;continue t}o[s].visible="none"!==o[s].element.css("display"),o[s].visible&&("mousedown"===a&&o[s]._activate.call(o[s],i),o[s].offset=o[s].element.offset(),o[s].proportions({width:o[s].element[0].offsetWidth,height:o[s].element[0].offsetHeight}))}},drop:function(e,i){var s=!1;return t.each((t.ui.ddmanager.droppables[e.options.scope]||[]).slice(),function(){this.options&&(!this.options.disabled&&this.visible&&v(e,this,this.options.tolerance,i)&&(s=this._drop.call(this,i)||s),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],e.currentItem||e.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,i)))}),s},dragStart:function(e,i){e.element.parentsUntil("body").on("scroll.droppable",function(){e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)})},drag:function(e,i){e.options.refreshPositions&&t.ui.ddmanager.prepareOffsets(e,i),t.each(t.ui.ddmanager.droppables[e.options.scope]||[],function(){if(!this.options.disabled&&!this.greedyChild&&this.visible){var s,n,o,a=v(e,this,this.options.tolerance,i),r=!a&&this.isover?"isout":a&&!this.isover?"isover":null;r&&(this.options.greedy&&(n=this.options.scope,o=this.element.parents(":data(ui-droppable)").filter(function(){return t(this).droppable("instance").options.scope===n}),o.length&&(s=t(o[0]).droppable("instance"),s.greedyChild="isover"===r)),s&&"isover"===r&&(s.isover=!1,s.isout=!0,s._out.call(s,i)),this[r]=!0,this["isout"===r?"isover":"isout"]=!1,this["isover"===r?"_over":"_out"].call(this,i),s&&"isout"===r&&(s.isout=!1,s.isover=!0,s._over.call(s,i)))}})},dragStop:function(e,i){e.element.parentsUntil("body").off("scroll.droppable"),e.options.refreshPositions||t.ui.ddmanager.prepareOffsets(e,i)}},t.uiBackCompat!==!1&&t.widget("ui.droppable",t.ui.droppable,{options:{hoverClass:!1,activeClass:!1},_addActiveClass:function(){this._super(),this.options.activeClass&&this.element.addClass(this.options.activeClass)},_removeActiveClass:function(){this._super(),this.options.activeClass&&this.element.removeClass(this.options.activeClass)},_addHoverClass:function(){this._super(),this.options.hoverClass&&this.element.addClass(this.options.hoverClass)},_removeHoverClass:function(){this._super(),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass)}}),t.ui.droppable,t.widget("ui.progressbar",{version:"1.12.1",options:{classes:{"ui-progressbar":"ui-corner-all","ui-progressbar-value":"ui-corner-left","ui-progressbar-complete":"ui-corner-right"},max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.attr({role:"progressbar","aria-valuemin":this.min}),this._addClass("ui-progressbar","ui-widget ui-widget-content"),this.valueDiv=t("<div>").appendTo(this.element),this._addClass(this.valueDiv,"ui-progressbar-value","ui-widget-header"),this._refreshValue()},_destroy:function(){this.element.removeAttr("role aria-valuemin aria-valuemax aria-valuenow"),this.valueDiv.remove()},value:function(t){return void 0===t?this.options.value:(this.options.value=this._constrainedValue(t),this._refreshValue(),void 0)},_constrainedValue:function(t){return void 0===t&&(t=this.options.value),this.indeterminate=t===!1,"number"!=typeof t&&(t=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,t))},_setOptions:function(t){var e=t.value;delete t.value,this._super(t),this.options.value=this._constrainedValue(e),this._refreshValue()},_setOption:function(t,e){"max"===t&&(e=Math.max(this.min,e)),this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t),this._toggleClass(null,"ui-state-disabled",!!t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var e=this.options.value,i=this._percentage();this.valueDiv.toggle(this.indeterminate||e>this.min).width(i.toFixed(0)+"%"),this._toggleClass(this.valueDiv,"ui-progressbar-complete",null,e===this.options.max)._toggleClass("ui-progressbar-indeterminate",null,this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=t("<div>").appendTo(this.valueDiv),this._addClass(this.overlayDiv,"ui-progressbar-overlay"))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":e}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==e&&(this.oldValue=e,this._trigger("change")),e===this.options.max&&this._trigger("complete")}}),t.widget("ui.selectable",t.ui.mouse,{version:"1.12.1",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var e=this;this._addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){e.elementPos=t(e.element[0]).offset(),e.selectees=t(e.options.filter,e.element[0]),e._addClass(e.selectees,"ui-selectee"),e.selectees.each(function(){var i=t(this),s=i.offset(),n={left:s.left-e.elementPos.left,top:s.top-e.elementPos.top};t.data(this,"selectable-item",{element:this,$element:i,left:n.left,top:n.top,right:n.left+i.outerWidth(),bottom:n.top+i.outerHeight(),startselected:!1,selected:i.hasClass("ui-selected"),selecting:i.hasClass("ui-selecting"),unselecting:i.hasClass("ui-unselecting")})})},this.refresh(),this._mouseInit(),this.helper=t("<div>"),this._addClass(this.helper,"ui-selectable-helper")},_destroy:function(){this.selectees.removeData("selectable-item"),this._mouseDestroy()},_mouseStart:function(e){var i=this,s=this.options;this.opos=[e.pageX,e.pageY],this.elementPos=t(this.element[0]).offset(),this.options.disabled||(this.selectees=t(s.filter,this.element[0]),this._trigger("start",e),t(s.appendTo).append(this.helper),this.helper.css({left:e.pageX,top:e.pageY,width:0,height:0}),s.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var s=t.data(this,"selectable-item");s.startselected=!0,e.metaKey||e.ctrlKey||(i._removeClass(s.$element,"ui-selected"),s.selected=!1,i._addClass(s.$element,"ui-unselecting"),s.unselecting=!0,i._trigger("unselecting",e,{unselecting:s.element}))}),t(e.target).parents().addBack().each(function(){var s,n=t.data(this,"selectable-item");return n?(s=!e.metaKey&&!e.ctrlKey||!n.$element.hasClass("ui-selected"),i._removeClass(n.$element,s?"ui-unselecting":"ui-selected")._addClass(n.$element,s?"ui-selecting":"ui-unselecting"),n.unselecting=!s,n.selecting=s,n.selected=s,s?i._trigger("selecting",e,{selecting:n.element}):i._trigger("unselecting",e,{unselecting:n.element}),!1):void 0}))},_mouseDrag:function(e){if(this.dragged=!0,!this.options.disabled){var i,s=this,n=this.options,o=this.opos[0],a=this.opos[1],r=e.pageX,h=e.pageY;return o>r&&(i=r,r=o,o=i),a>h&&(i=h,h=a,a=i),this.helper.css({left:o,top:a,width:r-o,height:h-a}),this.selectees.each(function(){var i=t.data(this,"selectable-item"),l=!1,c={};i&&i.element!==s.element[0]&&(c.left=i.left+s.elementPos.left,c.right=i.right+s.elementPos.left,c.top=i.top+s.elementPos.top,c.bottom=i.bottom+s.elementPos.top,"touch"===n.tolerance?l=!(c.left>r||o>c.right||c.top>h||a>c.bottom):"fit"===n.tolerance&&(l=c.left>o&&r>c.right&&c.top>a&&h>c.bottom),l?(i.selected&&(s._removeClass(i.$element,"ui-selected"),i.selected=!1),i.unselecting&&(s._removeClass(i.$element,"ui-unselecting"),i.unselecting=!1),i.selecting||(s._addClass(i.$element,"ui-selecting"),i.selecting=!0,s._trigger("selecting",e,{selecting:i.element}))):(i.selecting&&((e.metaKey||e.ctrlKey)&&i.startselected?(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,s._addClass(i.$element,"ui-selected"),i.selected=!0):(s._removeClass(i.$element,"ui-selecting"),i.selecting=!1,i.startselected&&(s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0),s._trigger("unselecting",e,{unselecting:i.element}))),i.selected&&(e.metaKey||e.ctrlKey||i.startselected||(s._removeClass(i.$element,"ui-selected"),i.selected=!1,s._addClass(i.$element,"ui-unselecting"),i.unselecting=!0,s._trigger("unselecting",e,{unselecting:i.element})))))}),!1}},_mouseStop:function(e){var i=this;return this.dragged=!1,t(".ui-unselecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-unselecting"),s.unselecting=!1,s.startselected=!1,i._trigger("unselected",e,{unselected:s.element})}),t(".ui-selecting",this.element[0]).each(function(){var s=t.data(this,"selectable-item");i._removeClass(s.$element,"ui-selecting")._addClass(s.$element,"ui-selected"),s.selecting=!1,s.selected=!0,s.startselected=!0,i._trigger("selected",e,{selected:s.element})}),this._trigger("stop",e),this.helper.remove(),!1}}),t.widget("ui.selectmenu",[t.ui.formResetMixin,{version:"1.12.1",defaultElement:"<select>",options:{appendTo:null,classes:{"ui-selectmenu-button-open":"ui-corner-top","ui-selectmenu-button-closed":"ui-corner-all"},disabled:null,icons:{button:"ui-icon-triangle-1-s"},position:{my:"left top",at:"left bottom",collision:"none"},width:!1,change:null,close:null,focus:null,open:null,select:null},_create:function(){var e=this.element.uniqueId().attr("id");this.ids={element:e,button:e+"-button",menu:e+"-menu"},this._drawButton(),this._drawMenu(),this._bindFormResetHandler(),this._rendered=!1,this.menuItems=t()},_drawButton:function(){var e,i=this,s=this._parseOption(this.element.find("option:selected"),this.element[0].selectedIndex);this.labels=this.element.labels().attr("for",this.ids.button),this._on(this.labels,{click:function(t){this.button.focus(),t.preventDefault()}}),this.element.hide(),this.button=t("<span>",{tabindex:this.options.disabled?-1:0,id:this.ids.button,role:"combobox","aria-expanded":"false","aria-autocomplete":"list","aria-owns":this.ids.menu,"aria-haspopup":"true",title:this.element.attr("title")}).insertAfter(this.element),this._addClass(this.button,"ui-selectmenu-button ui-selectmenu-button-closed","ui-button ui-widget"),e=t("<span>").appendTo(this.button),this._addClass(e,"ui-selectmenu-icon","ui-icon "+this.options.icons.button),this.buttonItem=this._renderButtonItem(s).appendTo(this.button),this.options.width!==!1&&this._resizeButton(),this._on(this.button,this._buttonEvents),this.button.one("focusin",function(){i._rendered||i._refreshMenu()})},_drawMenu:function(){var e=this;this.menu=t("<ul>",{"aria-hidden":"true","aria-labelledby":this.ids.button,id:this.ids.menu}),this.menuWrap=t("<div>").append(this.menu),this._addClass(this.menuWrap,"ui-selectmenu-menu","ui-front"),this.menuWrap.appendTo(this._appendTo()),this.menuInstance=this.menu.menu({classes:{"ui-menu":"ui-corner-bottom"},role:"listbox",select:function(t,i){t.preventDefault(),e._setSelection(),e._select(i.item.data("ui-selectmenu-item"),t)},focus:function(t,i){var s=i.item.data("ui-selectmenu-item");null!=e.focusIndex&&s.index!==e.focusIndex&&(e._trigger("focus",t,{item:s}),e.isOpen||e._select(s,t)),e.focusIndex=s.index,e.button.attr("aria-activedescendant",e.menuItems.eq(s.index).attr("id"))}}).menu("instance"),this.menuInstance._off(this.menu,"mouseleave"),this.menuInstance._closeOnDocumentClick=function(){return!1},this.menuInstance._isDivider=function(){return!1}},refresh:function(){this._refreshMenu(),this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(this._getSelectedItem().data("ui-selectmenu-item")||{})),null===this.options.width&&this._resizeButton()},_refreshMenu:function(){var t,e=this.element.find("option");this.menu.empty(),this._parseOptions(e),this._renderMenu(this.menu,this.items),this.menuInstance.refresh(),this.menuItems=this.menu.find("li").not(".ui-selectmenu-optgroup").find(".ui-menu-item-wrapper"),this._rendered=!0,e.length&&(t=this._getSelectedItem(),this.menuInstance.focus(null,t),this._setAria(t.data("ui-selectmenu-item")),this._setOption("disabled",this.element.prop("disabled")))},open:function(t){this.options.disabled||(this._rendered?(this._removeClass(this.menu.find(".ui-state-active"),null,"ui-state-active"),this.menuInstance.focus(null,this._getSelectedItem())):this._refreshMenu(),this.menuItems.length&&(this.isOpen=!0,this._toggleAttr(),this._resizeMenu(),this._position(),this._on(this.document,this._documentClick),this._trigger("open",t)))},_position:function(){this.menuWrap.position(t.extend({of:this.button},this.options.position))},close:function(t){this.isOpen&&(this.isOpen=!1,this._toggleAttr(),this.range=null,this._off(this.document),this._trigger("close",t))},widget:function(){return this.button},menuWidget:function(){return this.menu},_renderButtonItem:function(e){var i=t("<span>");return this._setText(i,e.label),this._addClass(i,"ui-selectmenu-text"),i},_renderMenu:function(e,i){var s=this,n="";t.each(i,function(i,o){var a;o.optgroup!==n&&(a=t("<li>",{text:o.optgroup}),s._addClass(a,"ui-selectmenu-optgroup","ui-menu-divider"+(o.element.parent("optgroup").prop("disabled")?" ui-state-disabled":"")),a.appendTo(e),n=o.optgroup),s._renderItemData(e,o)})},_renderItemData:function(t,e){return this._renderItem(t,e).data("ui-selectmenu-item",e)},_renderItem:function(e,i){var s=t("<li>"),n=t("<div>",{title:i.element.attr("title")});return i.disabled&&this._addClass(s,null,"ui-state-disabled"),this._setText(n,i.label),s.append(n).appendTo(e)},_setText:function(t,e){e?t.text(e):t.html(" ")},_move:function(t,e){var i,s,n=".ui-menu-item";this.isOpen?i=this.menuItems.eq(this.focusIndex).parent("li"):(i=this.menuItems.eq(this.element[0].selectedIndex).parent("li"),n+=":not(.ui-state-disabled)"),s="first"===t||"last"===t?i["first"===t?"prevAll":"nextAll"](n).eq(-1):i[t+"All"](n).eq(0),s.length&&this.menuInstance.focus(e,s)},_getSelectedItem:function(){return this.menuItems.eq(this.element[0].selectedIndex).parent("li")},_toggle:function(t){this[this.isOpen?"close":"open"](t)},_setSelection:function(){var t;this.range&&(window.getSelection?(t=window.getSelection(),t.removeAllRanges(),t.addRange(this.range)):this.range.select(),this.button.focus())},_documentClick:{mousedown:function(e){this.isOpen&&(t(e.target).closest(".ui-selectmenu-menu, #"+t.ui.escapeSelector(this.ids.button)).length||this.close(e))}},_buttonEvents:{mousedown:function(){var t;window.getSelection?(t=window.getSelection(),t.rangeCount&&(this.range=t.getRangeAt(0))):this.range=document.selection.createRange()},click:function(t){this._setSelection(),this._toggle(t)},keydown:function(e){var i=!0;switch(e.keyCode){case t.ui.keyCode.TAB:case t.ui.keyCode.ESCAPE:this.close(e),i=!1;break;case t.ui.keyCode.ENTER:this.isOpen&&this._selectFocusedItem(e);break;case t.ui.keyCode.UP:e.altKey?this._toggle(e):this._move("prev",e);break;case t.ui.keyCode.DOWN:e.altKey?this._toggle(e):this._move("next",e);break;case t.ui.keyCode.SPACE:this.isOpen?this._selectFocusedItem(e):this._toggle(e);break;case t.ui.keyCode.LEFT:this._move("prev",e);break;case t.ui.keyCode.RIGHT:this._move("next",e);break;case t.ui.keyCode.HOME:case t.ui.keyCode.PAGE_UP:this._move("first",e);break;case t.ui.keyCode.END:case t.ui.keyCode.PAGE_DOWN:this._move("last",e);break;default:this.menu.trigger(e),i=!1}i&&e.preventDefault()}},_selectFocusedItem:function(t){var e=this.menuItems.eq(this.focusIndex).parent("li");e.hasClass("ui-state-disabled")||this._select(e.data("ui-selectmenu-item"),t)},_select:function(t,e){var i=this.element[0].selectedIndex;this.element[0].selectedIndex=t.index,this.buttonItem.replaceWith(this.buttonItem=this._renderButtonItem(t)),this._setAria(t),this._trigger("select",e,{item:t}),t.index!==i&&this._trigger("change",e,{item:t}),this.close(e)},_setAria:function(t){var e=this.menuItems.eq(t.index).attr("id");this.button.attr({"aria-labelledby":e,"aria-activedescendant":e}),this.menu.attr("aria-activedescendant",e)},_setOption:function(t,e){if("icons"===t){var i=this.button.find("span.ui-icon");this._removeClass(i,null,this.options.icons.button)._addClass(i,null,e.button)}this._super(t,e),"appendTo"===t&&this.menuWrap.appendTo(this._appendTo()),"width"===t&&this._resizeButton()},_setOptionDisabled:function(t){this._super(t),this.menuInstance.option("disabled",t),this.button.attr("aria-disabled",t),this._toggleClass(this.button,null,"ui-state-disabled",t),this.element.prop("disabled",t),t?(this.button.attr("tabindex",-1),this.close()):this.button.attr("tabindex",0)},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_toggleAttr:function(){this.button.attr("aria-expanded",this.isOpen),this._removeClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"closed":"open"))._addClass(this.button,"ui-selectmenu-button-"+(this.isOpen?"open":"closed"))._toggleClass(this.menuWrap,"ui-selectmenu-open",null,this.isOpen),this.menu.attr("aria-hidden",!this.isOpen)},_resizeButton:function(){var t=this.options.width;return t===!1?(this.button.css("width",""),void 0):(null===t&&(t=this.element.show().outerWidth(),this.element.hide()),this.button.outerWidth(t),void 0)},_resizeMenu:function(){this.menu.outerWidth(Math.max(this.button.outerWidth(),this.menu.width("").outerWidth()+1))},_getCreateOptions:function(){var t=this._super();return t.disabled=this.element.prop("disabled"),t},_parseOptions:function(e){var i=this,s=[];e.each(function(e,n){s.push(i._parseOption(t(n),e))}),this.items=s},_parseOption:function(t,e){var i=t.parent("optgroup");return{element:t,index:e,value:t.val(),label:t.text(),optgroup:i.attr("label")||"",disabled:i.prop("disabled")||t.prop("disabled")}},_destroy:function(){this._unbindFormResetHandler(),this.menuWrap.remove(),this.button.remove(),this.element.show(),this.element.removeUniqueId(),this.labels.attr("for",this.ids.element)}}]),t.widget("ui.slider",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"slide",options:{animate:!1,classes:{"ui-slider":"ui-corner-all","ui-slider-handle":"ui-corner-all","ui-slider-range":"ui-corner-all ui-widget-header"},distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},numPages:5,_create:function(){this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this._calculateNewMax(),this._addClass("ui-slider ui-slider-"+this.orientation,"ui-widget ui-widget-content"),this._refresh(),this._animateOff=!1 +},_refresh:function(){this._createRange(),this._createHandles(),this._setupEvents(),this._refreshValue()},_createHandles:function(){var e,i,s=this.options,n=this.element.find(".ui-slider-handle"),o="<span tabindex='0'></span>",a=[];for(i=s.values&&s.values.length||1,n.length>i&&(n.slice(i).remove(),n=n.slice(0,i)),e=n.length;i>e;e++)a.push(o);this.handles=n.add(t(a.join("")).appendTo(this.element)),this._addClass(this.handles,"ui-slider-handle","ui-state-default"),this.handle=this.handles.eq(0),this.handles.each(function(e){t(this).data("ui-slider-handle-index",e).attr("tabIndex",0)})},_createRange:function(){var e=this.options;e.range?(e.range===!0&&(e.values?e.values.length&&2!==e.values.length?e.values=[e.values[0],e.values[0]]:t.isArray(e.values)&&(e.values=e.values.slice(0)):e.values=[this._valueMin(),this._valueMin()]),this.range&&this.range.length?(this._removeClass(this.range,"ui-slider-range-min ui-slider-range-max"),this.range.css({left:"",bottom:""})):(this.range=t("<div>").appendTo(this.element),this._addClass(this.range,"ui-slider-range")),("min"===e.range||"max"===e.range)&&this._addClass(this.range,"ui-slider-range-"+e.range)):(this.range&&this.range.remove(),this.range=null)},_setupEvents:function(){this._off(this.handles),this._on(this.handles,this._handleEvents),this._hoverable(this.handles),this._focusable(this.handles)},_destroy:function(){this.handles.remove(),this.range&&this.range.remove(),this._mouseDestroy()},_mouseCapture:function(e){var i,s,n,o,a,r,h,l,c=this,u=this.options;return u.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),i={x:e.pageX,y:e.pageY},s=this._normValueFromMouse(i),n=this._valueMax()-this._valueMin()+1,this.handles.each(function(e){var i=Math.abs(s-c.values(e));(n>i||n===i&&(e===c._lastChangedValue||c.values(e)===u.min))&&(n=i,o=t(this),a=e)}),r=this._start(e,a),r===!1?!1:(this._mouseSliding=!0,this._handleIndex=a,this._addClass(o,null,"ui-state-active"),o.trigger("focus"),h=o.offset(),l=!t(e.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=l?{left:0,top:0}:{left:e.pageX-h.left-o.width()/2,top:e.pageY-h.top-o.height()/2-(parseInt(o.css("borderTopWidth"),10)||0)-(parseInt(o.css("borderBottomWidth"),10)||0)+(parseInt(o.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(e,a,s),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(t){var e={x:t.pageX,y:t.pageY},i=this._normValueFromMouse(e);return this._slide(t,this._handleIndex,i),!1},_mouseStop:function(t){return this._removeClass(this.handles,null,"ui-state-active"),this._mouseSliding=!1,this._stop(t,this._handleIndex),this._change(t,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation="vertical"===this.options.orientation?"vertical":"horizontal"},_normValueFromMouse:function(t){var e,i,s,n,o;return"horizontal"===this.orientation?(e=this.elementSize.width,i=t.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(e=this.elementSize.height,i=t.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),s=i/e,s>1&&(s=1),0>s&&(s=0),"vertical"===this.orientation&&(s=1-s),n=this._valueMax()-this._valueMin(),o=this._valueMin()+s*n,this._trimAlignValue(o)},_uiHash:function(t,e,i){var s={handle:this.handles[t],handleIndex:t,value:void 0!==e?e:this.value()};return this._hasMultipleValues()&&(s.value=void 0!==e?e:this.values(t),s.values=i||this.values()),s},_hasMultipleValues:function(){return this.options.values&&this.options.values.length},_start:function(t,e){return this._trigger("start",t,this._uiHash(e))},_slide:function(t,e,i){var s,n,o=this.value(),a=this.values();this._hasMultipleValues()&&(n=this.values(e?0:1),o=this.values(e),2===this.options.values.length&&this.options.range===!0&&(i=0===e?Math.min(n,i):Math.max(n,i)),a[e]=i),i!==o&&(s=this._trigger("slide",t,this._uiHash(e,i,a)),s!==!1&&(this._hasMultipleValues()?this.values(e,i):this.value(i)))},_stop:function(t,e){this._trigger("stop",t,this._uiHash(e))},_change:function(t,e){this._keySliding||this._mouseSliding||(this._lastChangedValue=e,this._trigger("change",t,this._uiHash(e)))},value:function(t){return arguments.length?(this.options.value=this._trimAlignValue(t),this._refreshValue(),this._change(null,0),void 0):this._value()},values:function(e,i){var s,n,o;if(arguments.length>1)return this.options.values[e]=this._trimAlignValue(i),this._refreshValue(),this._change(null,e),void 0;if(!arguments.length)return this._values();if(!t.isArray(arguments[0]))return this._hasMultipleValues()?this._values(e):this.value();for(s=this.options.values,n=arguments[0],o=0;s.length>o;o+=1)s[o]=this._trimAlignValue(n[o]),this._change(null,o);this._refreshValue()},_setOption:function(e,i){var s,n=0;switch("range"===e&&this.options.range===!0&&("min"===i?(this.options.value=this._values(0),this.options.values=null):"max"===i&&(this.options.value=this._values(this.options.values.length-1),this.options.values=null)),t.isArray(this.options.values)&&(n=this.options.values.length),this._super(e,i),e){case"orientation":this._detectOrientation(),this._removeClass("ui-slider-horizontal ui-slider-vertical")._addClass("ui-slider-"+this.orientation),this._refreshValue(),this.options.range&&this._refreshRange(i),this.handles.css("horizontal"===i?"bottom":"left","");break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":for(this._animateOff=!0,this._refreshValue(),s=n-1;s>=0;s--)this._change(null,s);this._animateOff=!1;break;case"step":case"min":case"max":this._animateOff=!0,this._calculateNewMax(),this._refreshValue(),this._animateOff=!1;break;case"range":this._animateOff=!0,this._refresh(),this._animateOff=!1}},_setOptionDisabled:function(t){this._super(t),this._toggleClass(null,"ui-state-disabled",!!t)},_value:function(){var t=this.options.value;return t=this._trimAlignValue(t)},_values:function(t){var e,i,s;if(arguments.length)return e=this.options.values[t],e=this._trimAlignValue(e);if(this._hasMultipleValues()){for(i=this.options.values.slice(),s=0;i.length>s;s+=1)i[s]=this._trimAlignValue(i[s]);return i}return[]},_trimAlignValue:function(t){if(this._valueMin()>=t)return this._valueMin();if(t>=this._valueMax())return this._valueMax();var e=this.options.step>0?this.options.step:1,i=(t-this._valueMin())%e,s=t-i;return 2*Math.abs(i)>=e&&(s+=i>0?e:-e),parseFloat(s.toFixed(5))},_calculateNewMax:function(){var t=this.options.max,e=this._valueMin(),i=this.options.step,s=Math.round((t-e)/i)*i;t=s+e,t>this.options.max&&(t-=i),this.max=parseFloat(t.toFixed(this._precision()))},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_valueMin:function(){return this.options.min},_valueMax:function(){return this.max},_refreshRange:function(t){"vertical"===t&&this.range.css({width:"",left:""}),"horizontal"===t&&this.range.css({height:"",bottom:""})},_refreshValue:function(){var e,i,s,n,o,a=this.options.range,r=this.options,h=this,l=this._animateOff?!1:r.animate,c={};this._hasMultipleValues()?this.handles.each(function(s){i=100*((h.values(s)-h._valueMin())/(h._valueMax()-h._valueMin())),c["horizontal"===h.orientation?"left":"bottom"]=i+"%",t(this).stop(1,1)[l?"animate":"css"](c,r.animate),h.options.range===!0&&("horizontal"===h.orientation?(0===s&&h.range.stop(1,1)[l?"animate":"css"]({left:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({width:i-e+"%"},{queue:!1,duration:r.animate})):(0===s&&h.range.stop(1,1)[l?"animate":"css"]({bottom:i+"%"},r.animate),1===s&&h.range[l?"animate":"css"]({height:i-e+"%"},{queue:!1,duration:r.animate}))),e=i}):(s=this.value(),n=this._valueMin(),o=this._valueMax(),i=o!==n?100*((s-n)/(o-n)):0,c["horizontal"===this.orientation?"left":"bottom"]=i+"%",this.handle.stop(1,1)[l?"animate":"css"](c,r.animate),"min"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:i+"%"},r.animate),"max"===a&&"horizontal"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({width:100-i+"%"},r.animate),"min"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:i+"%"},r.animate),"max"===a&&"vertical"===this.orientation&&this.range.stop(1,1)[l?"animate":"css"]({height:100-i+"%"},r.animate))},_handleEvents:{keydown:function(e){var i,s,n,o,a=t(e.target).data("ui-slider-handle-index");switch(e.keyCode){case t.ui.keyCode.HOME:case t.ui.keyCode.END:case t.ui.keyCode.PAGE_UP:case t.ui.keyCode.PAGE_DOWN:case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(e.preventDefault(),!this._keySliding&&(this._keySliding=!0,this._addClass(t(e.target),null,"ui-state-active"),i=this._start(e,a),i===!1))return}switch(o=this.options.step,s=n=this._hasMultipleValues()?this.values(a):this.value(),e.keyCode){case t.ui.keyCode.HOME:n=this._valueMin();break;case t.ui.keyCode.END:n=this._valueMax();break;case t.ui.keyCode.PAGE_UP:n=this._trimAlignValue(s+(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.PAGE_DOWN:n=this._trimAlignValue(s-(this._valueMax()-this._valueMin())/this.numPages);break;case t.ui.keyCode.UP:case t.ui.keyCode.RIGHT:if(s===this._valueMax())return;n=this._trimAlignValue(s+o);break;case t.ui.keyCode.DOWN:case t.ui.keyCode.LEFT:if(s===this._valueMin())return;n=this._trimAlignValue(s-o)}this._slide(e,a,n)},keyup:function(e){var i=t(e.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(e,i),this._change(e,i),this._removeClass(t(e.target),null,"ui-state-active"))}}}),t.widget("ui.sortable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_isOverAxis:function(t,e,i){return t>=e&&e+i>t},_isFloating:function(t){return/left|right/.test(t.css("float"))||/inline|table-cell/.test(t.css("display"))},_create:function(){this.containerCache={},this._addClass("ui-sortable"),this.refresh(),this.offset=this.element.offset(),this._mouseInit(),this._setHandleClassName(),this.ready=!0},_setOption:function(t,e){this._super(t,e),"handle"===t&&this._setHandleClassName()},_setHandleClassName:function(){var e=this;this._removeClass(this.element.find(".ui-sortable-handle"),"ui-sortable-handle"),t.each(this.items,function(){e._addClass(this.instance.options.handle?this.item.find(this.instance.options.handle):this.item,"ui-sortable-handle")})},_destroy:function(){this._mouseDestroy();for(var t=this.items.length-1;t>=0;t--)this.items[t].item.removeData(this.widgetName+"-item");return this},_mouseCapture:function(e,i){var s=null,n=!1,o=this;return this.reverting?!1:this.options.disabled||"static"===this.options.type?!1:(this._refreshItems(e),t(e.target).parents().each(function(){return t.data(this,o.widgetName+"-item")===o?(s=t(this),!1):void 0}),t.data(e.target,o.widgetName+"-item")===o&&(s=t(e.target)),s?!this.options.handle||i||(t(this.options.handle,s).find("*").addBack().each(function(){this===e.target&&(n=!0)}),n)?(this.currentItem=s,this._removeCurrentsFromItems(),!0):!1:!1)},_mouseStart:function(e,i,s){var n,o,a=this.options;if(this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(e),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},t.extend(this.offset,{click:{left:e.pageX-this.offset.left,top:e.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(e),this.originalPageX=e.pageX,this.originalPageY=e.pageY,a.cursorAt&&this._adjustOffsetFromHelper(a.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),a.containment&&this._setContainment(),a.cursor&&"auto"!==a.cursor&&(o=this.document.find("body"),this.storedCursor=o.css("cursor"),o.css("cursor",a.cursor),this.storedStylesheet=t("<style>*{ cursor: "+a.cursor+" !important; }</style>").appendTo(o)),a.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",a.opacity)),a.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",a.zIndex)),this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",e,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions(),!s)for(n=this.containers.length-1;n>=0;n--)this.containers[n]._trigger("activate",e,this._uiHash(this));return t.ui.ddmanager&&(t.ui.ddmanager.current=this),t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e),this.dragging=!0,this._addClass(this.helper,"ui-sortable-helper"),this._mouseDrag(e),!0},_mouseDrag:function(e){var i,s,n,o,a=this.options,r=!1;for(this.position=this._generatePosition(e),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==this.document[0]&&"HTML"!==this.scrollParent[0].tagName?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-e.pageY<a.scrollSensitivity?this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop+a.scrollSpeed:e.pageY-this.overflowOffset.top<a.scrollSensitivity&&(this.scrollParent[0].scrollTop=r=this.scrollParent[0].scrollTop-a.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-e.pageX<a.scrollSensitivity?this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft+a.scrollSpeed:e.pageX-this.overflowOffset.left<a.scrollSensitivity&&(this.scrollParent[0].scrollLeft=r=this.scrollParent[0].scrollLeft-a.scrollSpeed)):(e.pageY-this.document.scrollTop()<a.scrollSensitivity?r=this.document.scrollTop(this.document.scrollTop()-a.scrollSpeed):this.window.height()-(e.pageY-this.document.scrollTop())<a.scrollSensitivity&&(r=this.document.scrollTop(this.document.scrollTop()+a.scrollSpeed)),e.pageX-this.document.scrollLeft()<a.scrollSensitivity?r=this.document.scrollLeft(this.document.scrollLeft()-a.scrollSpeed):this.window.width()-(e.pageX-this.document.scrollLeft())<a.scrollSensitivity&&(r=this.document.scrollLeft(this.document.scrollLeft()+a.scrollSpeed))),r!==!1&&t.ui.ddmanager&&!a.dropBehaviour&&t.ui.ddmanager.prepareOffsets(this,e)),this.positionAbs=this._convertPositionTo("absolute"),this.options.axis&&"y"===this.options.axis||(this.helper[0].style.left=this.position.left+"px"),this.options.axis&&"x"===this.options.axis||(this.helper[0].style.top=this.position.top+"px"),i=this.items.length-1;i>=0;i--)if(s=this.items[i],n=s.item[0],o=this._intersectsWithPointer(s),o&&s.instance===this.currentContainer&&n!==this.currentItem[0]&&this.placeholder[1===o?"next":"prev"]()[0]!==n&&!t.contains(this.placeholder[0],n)&&("semi-dynamic"===this.options.type?!t.contains(this.element[0],n):!0)){if(this.direction=1===o?"down":"up","pointer"!==this.options.tolerance&&!this._intersectsWithSides(s))break;this._rearrange(e,s),this._trigger("change",e,this._uiHash());break}return this._contactContainers(e),t.ui.ddmanager&&t.ui.ddmanager.drag(this,e),this._trigger("sort",e,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(e,i){if(e){if(t.ui.ddmanager&&!this.options.dropBehaviour&&t.ui.ddmanager.drop(this,e),this.options.revert){var s=this,n=this.placeholder.offset(),o=this.options.axis,a={};o&&"x"!==o||(a.left=n.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollLeft)),o&&"y"!==o||(a.top=n.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===this.document[0].body?0:this.offsetParent[0].scrollTop)),this.reverting=!0,t(this.helper).animate(a,parseInt(this.options.revert,10)||500,function(){s._clear(e)})}else this._clear(e,i);return!1}},cancel:function(){if(this.dragging){this._mouseUp(new t.Event("mouseup",{target:null})),"original"===this.options.helper?(this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")):this.currentItem.show();for(var e=this.containers.length-1;e>=0;e--)this.containers[e]._trigger("deactivate",null,this._uiHash(this)),this.containers[e].containerCache.over&&(this.containers[e]._trigger("out",null,this._uiHash(this)),this.containers[e].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),"original"!==this.options.helper&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),t.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?t(this.domPosition.prev).after(this.currentItem):t(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},t(i).each(function(){var i=(t(e.item||this).attr(e.attribute||"id")||"").match(e.expression||/(.+)[\-=_](.+)/);i&&s.push((e.key||i[1]+"[]")+"="+(e.key&&e.expression?i[1]:i[2]))}),!s.length&&e.key&&s.push(e.key+"="),s.join("&")},toArray:function(e){var i=this._getItemsAsjQuery(e&&e.connected),s=[];return e=e||{},i.each(function(){s.push(t(e.item||this).attr(e.attribute||"id")||"")}),s},_intersectsWith:function(t){var e=this.positionAbs.left,i=e+this.helperProportions.width,s=this.positionAbs.top,n=s+this.helperProportions.height,o=t.left,a=o+t.width,r=t.top,h=r+t.height,l=this.offset.click.top,c=this.offset.click.left,u="x"===this.options.axis||s+l>r&&h>s+l,d="y"===this.options.axis||e+c>o&&a>e+c,p=u&&d;return"pointer"===this.options.tolerance||this.options.forcePointerForContainers||"pointer"!==this.options.tolerance&&this.helperProportions[this.floating?"width":"height"]>t[this.floating?"width":"height"]?p:e+this.helperProportions.width/2>o&&a>i-this.helperProportions.width/2&&s+this.helperProportions.height/2>r&&h>n-this.helperProportions.height/2},_intersectsWithPointer:function(t){var e,i,s="x"===this.options.axis||this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top,t.height),n="y"===this.options.axis||this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left,t.width),o=s&&n;return o?(e=this._getDragVerticalDirection(),i=this._getDragHorizontalDirection(),this.floating?"right"===i||"down"===e?2:1:e&&("down"===e?2:1)):!1},_intersectsWithSides:function(t){var e=this._isOverAxis(this.positionAbs.top+this.offset.click.top,t.top+t.height/2,t.height),i=this._isOverAxis(this.positionAbs.left+this.offset.click.left,t.left+t.width/2,t.width),s=this._getDragVerticalDirection(),n=this._getDragHorizontalDirection();return this.floating&&n?"right"===n&&i||"left"===n&&!i:s&&("down"===s&&e||"up"===s&&!e)},_getDragVerticalDirection:function(){var t=this.positionAbs.top-this.lastPositionAbs.top;return 0!==t&&(t>0?"down":"up")},_getDragHorizontalDirection:function(){var t=this.positionAbs.left-this.lastPositionAbs.left;return 0!==t&&(t>0?"right":"left")},refresh:function(t){return this._refreshItems(t),this._setHandleClassName(),this.refreshPositions(),this},_connectWith:function(){var t=this.options;return t.connectWith.constructor===String?[t.connectWith]:t.connectWith},_getItemsAsjQuery:function(e){function i(){r.push(this)}var s,n,o,a,r=[],h=[],l=this._connectWith();if(l&&e)for(s=l.length-1;s>=0;s--)for(o=t(l[s],this.document[0]),n=o.length-1;n>=0;n--)a=t.data(o[n],this.widgetFullName),a&&a!==this&&!a.options.disabled&&h.push([t.isFunction(a.options.items)?a.options.items.call(a.element):t(a.options.items,a.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),a]);for(h.push([t.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):t(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]),s=h.length-1;s>=0;s--)h[s][0].each(i);return t(r)},_removeCurrentsFromItems:function(){var e=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=t.grep(this.items,function(t){for(var i=0;e.length>i;i++)if(e[i]===t.item[0])return!1;return!0})},_refreshItems:function(e){this.items=[],this.containers=[this];var i,s,n,o,a,r,h,l,c=this.items,u=[[t.isFunction(this.options.items)?this.options.items.call(this.element[0],e,{item:this.currentItem}):t(this.options.items,this.element),this]],d=this._connectWith();if(d&&this.ready)for(i=d.length-1;i>=0;i--)for(n=t(d[i],this.document[0]),s=n.length-1;s>=0;s--)o=t.data(n[s],this.widgetFullName),o&&o!==this&&!o.options.disabled&&(u.push([t.isFunction(o.options.items)?o.options.items.call(o.element[0],e,{item:this.currentItem}):t(o.options.items,o.element),o]),this.containers.push(o));for(i=u.length-1;i>=0;i--)for(a=u[i][1],r=u[i][0],s=0,l=r.length;l>s;s++)h=t(r[s]),h.data(this.widgetName+"-item",a),c.push({item:h,instance:a,width:0,height:0,left:0,top:0})},refreshPositions:function(e){this.floating=this.items.length?"x"===this.options.axis||this._isFloating(this.items[0].item):!1,this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var i,s,n,o;for(i=this.items.length-1;i>=0;i--)s=this.items[i],s.instance!==this.currentContainer&&this.currentContainer&&s.item[0]!==this.currentItem[0]||(n=this.options.toleranceElement?t(this.options.toleranceElement,s.item):s.item,e||(s.width=n.outerWidth(),s.height=n.outerHeight()),o=n.offset(),s.left=o.left,s.top=o.top);if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(i=this.containers.length-1;i>=0;i--)o=this.containers[i].element.offset(),this.containers[i].containerCache.left=o.left,this.containers[i].containerCache.top=o.top,this.containers[i].containerCache.width=this.containers[i].element.outerWidth(),this.containers[i].containerCache.height=this.containers[i].element.outerHeight();return this},_createPlaceholder:function(e){e=e||this;var i,s=e.options;s.placeholder&&s.placeholder.constructor!==String||(i=s.placeholder,s.placeholder={element:function(){var s=e.currentItem[0].nodeName.toLowerCase(),n=t("<"+s+">",e.document[0]);return e._addClass(n,"ui-sortable-placeholder",i||e.currentItem[0].className)._removeClass(n,"ui-sortable-helper"),"tbody"===s?e._createTrPlaceholder(e.currentItem.find("tr").eq(0),t("<tr>",e.document[0]).appendTo(n)):"tr"===s?e._createTrPlaceholder(e.currentItem,n):"img"===s&&n.attr("src",e.currentItem.attr("src")),i||n.css("visibility","hidden"),n},update:function(t,n){(!i||s.forcePlaceholderSize)&&(n.height()||n.height(e.currentItem.innerHeight()-parseInt(e.currentItem.css("paddingTop")||0,10)-parseInt(e.currentItem.css("paddingBottom")||0,10)),n.width()||n.width(e.currentItem.innerWidth()-parseInt(e.currentItem.css("paddingLeft")||0,10)-parseInt(e.currentItem.css("paddingRight")||0,10)))}}),e.placeholder=t(s.placeholder.element.call(e.element,e.currentItem)),e.currentItem.after(e.placeholder),s.placeholder.update(e,e.placeholder)},_createTrPlaceholder:function(e,i){var s=this;e.children().each(function(){t("<td> </td>",s.document[0]).attr("colspan",t(this).attr("colspan")||1).appendTo(i)})},_contactContainers:function(e){var i,s,n,o,a,r,h,l,c,u,d=null,p=null;for(i=this.containers.length-1;i>=0;i--)if(!t.contains(this.currentItem[0],this.containers[i].element[0]))if(this._intersectsWith(this.containers[i].containerCache)){if(d&&t.contains(this.containers[i].element[0],d.element[0]))continue;d=this.containers[i],p=i}else this.containers[i].containerCache.over&&(this.containers[i]._trigger("out",e,this._uiHash(this)),this.containers[i].containerCache.over=0);if(d)if(1===this.containers.length)this.containers[p].containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1);else{for(n=1e4,o=null,c=d.floating||this._isFloating(this.currentItem),a=c?"left":"top",r=c?"width":"height",u=c?"pageX":"pageY",s=this.items.length-1;s>=0;s--)t.contains(this.containers[p].element[0],this.items[s].item[0])&&this.items[s].item[0]!==this.currentItem[0]&&(h=this.items[s].item.offset()[a],l=!1,e[u]-h>this.items[s][r]/2&&(l=!0),n>Math.abs(e[u]-h)&&(n=Math.abs(e[u]-h),o=this.items[s],this.direction=l?"up":"down"));if(!o&&!this.options.dropOnEmpty)return;if(this.currentContainer===this.containers[p])return this.currentContainer.containerCache.over||(this.containers[p]._trigger("over",e,this._uiHash()),this.currentContainer.containerCache.over=1),void 0;o?this._rearrange(e,o,null,!0):this._rearrange(e,null,this.containers[p].element,!0),this._trigger("change",e,this._uiHash()),this.containers[p]._trigger("change",e,this._uiHash(this)),this.currentContainer=this.containers[p],this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[p]._trigger("over",e,this._uiHash(this)),this.containers[p].containerCache.over=1}},_createHelper:function(e){var i=this.options,s=t.isFunction(i.helper)?t(i.helper.apply(this.element[0],[e,this.currentItem])):"clone"===i.helper?this.currentItem.clone():this.currentItem;return s.parents("body").length||t("parent"!==i.appendTo?i.appendTo:this.currentItem[0].parentNode)[0].appendChild(s[0]),s[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!s[0].style.width||i.forceHelperSize)&&s.width(this.currentItem.width()),(!s[0].style.height||i.forceHelperSize)&&s.height(this.currentItem.height()),s},_adjustOffsetFromHelper:function(e){"string"==typeof e&&(e=e.split(" ")),t.isArray(e)&&(e={left:+e[0],top:+e[1]||0}),"left"in e&&(this.offset.click.left=e.left+this.margins.left),"right"in e&&(this.offset.click.left=this.helperProportions.width-e.right+this.margins.left),"top"in e&&(this.offset.click.top=e.top+this.margins.top),"bottom"in e&&(this.offset.click.top=this.helperProportions.height-e.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var e=this.offsetParent.offset();return"absolute"===this.cssPosition&&this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])&&(e.left+=this.scrollParent.scrollLeft(),e.top+=this.scrollParent.scrollTop()),(this.offsetParent[0]===this.document[0].body||this.offsetParent[0].tagName&&"html"===this.offsetParent[0].tagName.toLowerCase()&&t.ui.ie)&&(e={top:0,left:0}),{top:e.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:e.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if("relative"===this.cssPosition){var t=this.currentItem.position();return{top:t.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:t.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var e,i,s,n=this.options;"parent"===n.containment&&(n.containment=this.helper[0].parentNode),("document"===n.containment||"window"===n.containment)&&(this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,"document"===n.containment?this.document.width():this.window.width()-this.helperProportions.width-this.margins.left,("document"===n.containment?this.document.height()||document.body.parentNode.scrollHeight:this.window.height()||this.document[0].body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top]),/^(document|window|parent)$/.test(n.containment)||(e=t(n.containment)[0],i=t(n.containment).offset(),s="hidden"!==t(e).css("overflow"),this.containment=[i.left+(parseInt(t(e).css("borderLeftWidth"),10)||0)+(parseInt(t(e).css("paddingLeft"),10)||0)-this.margins.left,i.top+(parseInt(t(e).css("borderTopWidth"),10)||0)+(parseInt(t(e).css("paddingTop"),10)||0)-this.margins.top,i.left+(s?Math.max(e.scrollWidth,e.offsetWidth):e.offsetWidth)-(parseInt(t(e).css("borderLeftWidth"),10)||0)-(parseInt(t(e).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,i.top+(s?Math.max(e.scrollHeight,e.offsetHeight):e.offsetHeight)-(parseInt(t(e).css("borderTopWidth"),10)||0)-(parseInt(t(e).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(e,i){i||(i=this.position);var s="absolute"===e?1:-1,n="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,o=/(html|body)/i.test(n[0].tagName);return{top:i.top+this.offset.relative.top*s+this.offset.parent.top*s-("fixed"===this.cssPosition?-this.scrollParent.scrollTop():o?0:n.scrollTop())*s,left:i.left+this.offset.relative.left*s+this.offset.parent.left*s-("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():o?0:n.scrollLeft())*s}},_generatePosition:function(e){var i,s,n=this.options,o=e.pageX,a=e.pageY,r="absolute"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&t.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,h=/(html|body)/i.test(r[0].tagName);return"relative"!==this.cssPosition||this.scrollParent[0]!==this.document[0]&&this.scrollParent[0]!==this.offsetParent[0]||(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(e.pageX-this.offset.click.left<this.containment[0]&&(o=this.containment[0]+this.offset.click.left),e.pageY-this.offset.click.top<this.containment[1]&&(a=this.containment[1]+this.offset.click.top),e.pageX-this.offset.click.left>this.containment[2]&&(o=this.containment[2]+this.offset.click.left),e.pageY-this.offset.click.top>this.containment[3]&&(a=this.containment[3]+this.offset.click.top)),n.grid&&(i=this.originalPageY+Math.round((a-this.originalPageY)/n.grid[1])*n.grid[1],a=this.containment?i-this.offset.click.top>=this.containment[1]&&i-this.offset.click.top<=this.containment[3]?i:i-this.offset.click.top>=this.containment[1]?i-n.grid[1]:i+n.grid[1]:i,s=this.originalPageX+Math.round((o-this.originalPageX)/n.grid[0])*n.grid[0],o=this.containment?s-this.offset.click.left>=this.containment[0]&&s-this.offset.click.left<=this.containment[2]?s:s-this.offset.click.left>=this.containment[0]?s-n.grid[0]:s+n.grid[0]:s)),{top:a-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+("fixed"===this.cssPosition?-this.scrollParent.scrollTop():h?0:r.scrollTop()),left:o-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+("fixed"===this.cssPosition?-this.scrollParent.scrollLeft():h?0:r.scrollLeft())}},_rearrange:function(t,e,i,s){i?i[0].appendChild(this.placeholder[0]):e.item[0].parentNode.insertBefore(this.placeholder[0],"down"===this.direction?e.item[0]:e.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var n=this.counter; +this._delay(function(){n===this.counter&&this.refreshPositions(!s)})},_clear:function(t,e){function i(t,e,i){return function(s){i._trigger(t,s,e._uiHash(e))}}this.reverting=!1;var s,n=[];if(!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null,this.helper[0]===this.currentItem[0]){for(s in this._storedCSS)("auto"===this._storedCSS[s]||"static"===this._storedCSS[s])&&(this._storedCSS[s]="");this.currentItem.css(this._storedCSS),this._removeClass(this.currentItem,"ui-sortable-helper")}else this.currentItem.show();for(this.fromOutside&&!e&&n.push(function(t){this._trigger("receive",t,this._uiHash(this.fromOutside))}),!this.fromOutside&&this.domPosition.prev===this.currentItem.prev().not(".ui-sortable-helper")[0]&&this.domPosition.parent===this.currentItem.parent()[0]||e||n.push(function(t){this._trigger("update",t,this._uiHash())}),this!==this.currentContainer&&(e||(n.push(function(t){this._trigger("remove",t,this._uiHash())}),n.push(function(t){return function(e){t._trigger("receive",e,this._uiHash(this))}}.call(this,this.currentContainer)),n.push(function(t){return function(e){t._trigger("update",e,this._uiHash(this))}}.call(this,this.currentContainer)))),s=this.containers.length-1;s>=0;s--)e||n.push(i("deactivate",this,this.containers[s])),this.containers[s].containerCache.over&&(n.push(i("out",this,this.containers[s])),this.containers[s].containerCache.over=0);if(this.storedCursor&&(this.document.find("body").css("cursor",this.storedCursor),this.storedStylesheet.remove()),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex","auto"===this._storedZIndex?"":this._storedZIndex),this.dragging=!1,e||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.cancelHelperRemoval||(this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null),!e){for(s=0;n.length>s;s++)n[s].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!this.cancelHelperRemoval},_trigger:function(){t.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(e){var i=e||this;return{helper:i.helper,placeholder:i.placeholder||t([]),position:i.position,originalPosition:i.originalPosition,offset:i.positionAbs,item:i.currentItem,sender:e?e.element:null}}}),t.widget("ui.spinner",{version:"1.12.1",defaultElement:"<input>",widgetEventPrefix:"spin",options:{classes:{"ui-spinner":"ui-corner-all","ui-spinner-down":"ui-corner-br","ui-spinner-up":"ui-corner-tr"},culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),""!==this.value()&&this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var e=this._super(),i=this.element;return t.each(["min","max","step"],function(t,s){var n=i.attr(s);null!=n&&n.length&&(e[s]=n)}),e},_events:{keydown:function(t){this._start(t)&&this._keydown(t)&&t.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(this._stop(),this._refresh(),this.previous!==this.element.val()&&this._trigger("change",t),void 0)},mousewheel:function(t,e){if(e){if(!this.spinning&&!this._start(t))return!1;this._spin((e>0?1:-1)*this.options.step,t),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(t)},100),t.preventDefault()}},"mousedown .ui-spinner-button":function(e){function i(){var e=this.element[0]===t.ui.safeActiveElement(this.document[0]);e||(this.element.trigger("focus"),this.previous=s,this._delay(function(){this.previous=s}))}var s;s=this.element[0]===t.ui.safeActiveElement(this.document[0])?this.previous:this.element.val(),e.preventDefault(),i.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,i.call(this)}),this._start(e)!==!1&&this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(e){return t(e.currentTarget).hasClass("ui-state-active")?this._start(e)===!1?!1:(this._repeat(null,t(e.currentTarget).hasClass("ui-spinner-up")?1:-1,e),void 0):void 0},"mouseleave .ui-spinner-button":"_stop"},_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap("<span>").parent().append("<a></a><a></a>")},_draw:function(){this._enhance(),this._addClass(this.uiSpinner,"ui-spinner","ui-widget ui-widget-content"),this._addClass("ui-spinner-input"),this.element.attr("role","spinbutton"),this.buttons=this.uiSpinner.children("a").attr("tabIndex",-1).attr("aria-hidden",!0).button({classes:{"ui-button":""}}),this._removeClass(this.buttons,"ui-corner-all"),this._addClass(this.buttons.first(),"ui-spinner-button ui-spinner-up"),this._addClass(this.buttons.last(),"ui-spinner-button ui-spinner-down"),this.buttons.first().button({icon:this.options.icons.up,showLabel:!1}),this.buttons.last().button({icon:this.options.icons.down,showLabel:!1}),this.buttons.height()>Math.ceil(.5*this.uiSpinner.height())&&this.uiSpinner.height()>0&&this.uiSpinner.height(this.uiSpinner.height())},_keydown:function(e){var i=this.options,s=t.ui.keyCode;switch(e.keyCode){case s.UP:return this._repeat(null,1,e),!0;case s.DOWN:return this._repeat(null,-1,e),!0;case s.PAGE_UP:return this._repeat(null,i.page,e),!0;case s.PAGE_DOWN:return this._repeat(null,-i.page,e),!0}return!1},_start:function(t){return this.spinning||this._trigger("start",t)!==!1?(this.counter||(this.counter=1),this.spinning=!0,!0):!1},_repeat:function(t,e,i){t=t||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,e,i)},t),this._spin(e*this.options.step,i)},_spin:function(t,e){var i=this.value()||0;this.counter||(this.counter=1),i=this._adjustValue(i+t*this._increment(this.counter)),this.spinning&&this._trigger("spin",e,{value:i})===!1||(this._value(i),this.counter++)},_increment:function(e){var i=this.options.incremental;return i?t.isFunction(i)?i(e):Math.floor(e*e*e/5e4-e*e/500+17*e/200+1):1},_precision:function(){var t=this._precisionOf(this.options.step);return null!==this.options.min&&(t=Math.max(t,this._precisionOf(this.options.min))),t},_precisionOf:function(t){var e=""+t,i=e.indexOf(".");return-1===i?0:e.length-i-1},_adjustValue:function(t){var e,i,s=this.options;return e=null!==s.min?s.min:0,i=t-e,i=Math.round(i/s.step)*s.step,t=e+i,t=parseFloat(t.toFixed(this._precision())),null!==s.max&&t>s.max?s.max:null!==s.min&&s.min>t?s.min:t},_stop:function(t){this.spinning&&(clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",t))},_setOption:function(t,e){var i,s,n;return"culture"===t||"numberFormat"===t?(i=this._parse(this.element.val()),this.options[t]=e,this.element.val(this._format(i)),void 0):(("max"===t||"min"===t||"step"===t)&&"string"==typeof e&&(e=this._parse(e)),"icons"===t&&(s=this.buttons.first().find(".ui-icon"),this._removeClass(s,null,this.options.icons.up),this._addClass(s,null,e.up),n=this.buttons.last().find(".ui-icon"),this._removeClass(n,null,this.options.icons.down),this._addClass(n,null,e.down)),this._super(t,e),void 0)},_setOptionDisabled:function(t){this._super(t),this._toggleClass(this.uiSpinner,null,"ui-state-disabled",!!t),this.element.prop("disabled",!!t),this.buttons.button(t?"disable":"enable")},_setOptions:r(function(t){this._super(t)}),_parse:function(t){return"string"==typeof t&&""!==t&&(t=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(t,10,this.options.culture):+t),""===t||isNaN(t)?null:t},_format:function(t){return""===t?"":window.Globalize&&this.options.numberFormat?Globalize.format(t,this.options.numberFormat,this.options.culture):t},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},isValid:function(){var t=this.value();return null===t?!1:t===this._adjustValue(t)},_value:function(t,e){var i;""!==t&&(i=this._parse(t),null!==i&&(e||(i=this._adjustValue(i)),t=this._format(i))),this.element.val(t),this._refresh()},_destroy:function(){this.element.prop("disabled",!1).removeAttr("autocomplete role aria-valuemin aria-valuemax aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:r(function(t){this._stepUp(t)}),_stepUp:function(t){this._start()&&(this._spin((t||1)*this.options.step),this._stop())},stepDown:r(function(t){this._stepDown(t)}),_stepDown:function(t){this._start()&&(this._spin((t||1)*-this.options.step),this._stop())},pageUp:r(function(t){this._stepUp((t||1)*this.options.page)}),pageDown:r(function(t){this._stepDown((t||1)*this.options.page)}),value:function(t){return arguments.length?(r(this._value).call(this,t),void 0):this._parse(this.element.val())},widget:function(){return this.uiSpinner}}),t.uiBackCompat!==!1&&t.widget("ui.spinner",t.ui.spinner,{_enhance:function(){this.uiSpinner=this.element.attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml())},_uiSpinnerHtml:function(){return"<span>"},_buttonHtml:function(){return"<a></a><a></a>"}}),t.ui.spinner,t.widget("ui.tabs",{version:"1.12.1",delay:300,options:{active:null,classes:{"ui-tabs":"ui-corner-all","ui-tabs-nav":"ui-corner-all","ui-tabs-panel":"ui-corner-bottom","ui-tabs-tab":"ui-corner-top"},collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_isLocal:function(){var t=/#.*$/;return function(e){var i,s;i=e.href.replace(t,""),s=location.href.replace(t,"");try{i=decodeURIComponent(i)}catch(n){}try{s=decodeURIComponent(s)}catch(n){}return e.hash.length>1&&i===s}}(),_create:function(){var e=this,i=this.options;this.running=!1,this._addClass("ui-tabs","ui-widget ui-widget-content"),this._toggleClass("ui-tabs-collapsible",null,i.collapsible),this._processTabs(),i.active=this._initialActive(),t.isArray(i.disabled)&&(i.disabled=t.unique(i.disabled.concat(t.map(this.tabs.filter(".ui-state-disabled"),function(t){return e.tabs.index(t)}))).sort()),this.active=this.options.active!==!1&&this.anchors.length?this._findActive(i.active):t(),this._refresh(),this.active.length&&this.load(i.active)},_initialActive:function(){var e=this.options.active,i=this.options.collapsible,s=location.hash.substring(1);return null===e&&(s&&this.tabs.each(function(i,n){return t(n).attr("aria-controls")===s?(e=i,!1):void 0}),null===e&&(e=this.tabs.index(this.tabs.filter(".ui-tabs-active"))),(null===e||-1===e)&&(e=this.tabs.length?0:!1)),e!==!1&&(e=this.tabs.index(this.tabs.eq(e)),-1===e&&(e=i?!1:0)),!i&&e===!1&&this.anchors.length&&(e=0),e},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):t()}},_tabKeydown:function(e){var i=t(t.ui.safeActiveElement(this.document[0])).closest("li"),s=this.tabs.index(i),n=!0;if(!this._handlePageNav(e)){switch(e.keyCode){case t.ui.keyCode.RIGHT:case t.ui.keyCode.DOWN:s++;break;case t.ui.keyCode.UP:case t.ui.keyCode.LEFT:n=!1,s--;break;case t.ui.keyCode.END:s=this.anchors.length-1;break;case t.ui.keyCode.HOME:s=0;break;case t.ui.keyCode.SPACE:return e.preventDefault(),clearTimeout(this.activating),this._activate(s),void 0;case t.ui.keyCode.ENTER:return e.preventDefault(),clearTimeout(this.activating),this._activate(s===this.options.active?!1:s),void 0;default:return}e.preventDefault(),clearTimeout(this.activating),s=this._focusNextTab(s,n),e.ctrlKey||e.metaKey||(i.attr("aria-selected","false"),this.tabs.eq(s).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",s)},this.delay))}},_panelKeydown:function(e){this._handlePageNav(e)||e.ctrlKey&&e.keyCode===t.ui.keyCode.UP&&(e.preventDefault(),this.active.trigger("focus"))},_handlePageNav:function(e){return e.altKey&&e.keyCode===t.ui.keyCode.PAGE_UP?(this._activate(this._focusNextTab(this.options.active-1,!1)),!0):e.altKey&&e.keyCode===t.ui.keyCode.PAGE_DOWN?(this._activate(this._focusNextTab(this.options.active+1,!0)),!0):void 0},_findNextTab:function(e,i){function s(){return e>n&&(e=0),0>e&&(e=n),e}for(var n=this.tabs.length-1;-1!==t.inArray(s(),this.options.disabled);)e=i?e+1:e-1;return e},_focusNextTab:function(t,e){return t=this._findNextTab(t,e),this.tabs.eq(t).trigger("focus"),t},_setOption:function(t,e){return"active"===t?(this._activate(e),void 0):(this._super(t,e),"collapsible"===t&&(this._toggleClass("ui-tabs-collapsible",null,e),e||this.options.active!==!1||this._activate(0)),"event"===t&&this._setupEvents(e),"heightStyle"===t&&this._setupHeightStyle(e),void 0)},_sanitizeSelector:function(t){return t?t.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var e=this.options,i=this.tablist.children(":has(a[href])");e.disabled=t.map(i.filter(".ui-state-disabled"),function(t){return i.index(t)}),this._processTabs(),e.active!==!1&&this.anchors.length?this.active.length&&!t.contains(this.tablist[0],this.active[0])?this.tabs.length===e.disabled.length?(e.active=!1,this.active=t()):this._activate(this._findNextTab(Math.max(0,e.active-1),!1)):e.active=this.tabs.index(this.active):(e.active=!1,this.active=t()),this._refresh()},_refresh:function(){this._setOptionDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false","aria-expanded":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-hidden":"true"}),this.active.length?(this.active.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0}),this._addClass(this.active,"ui-tabs-active","ui-state-active"),this._getPanelForTab(this.active).show().attr({"aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var e=this,i=this.tabs,s=this.anchors,n=this.panels;this.tablist=this._getList().attr("role","tablist"),this._addClass(this.tablist,"ui-tabs-nav","ui-helper-reset ui-helper-clearfix ui-widget-header"),this.tablist.on("mousedown"+this.eventNamespace,"> li",function(e){t(this).is(".ui-state-disabled")&&e.preventDefault()}).on("focus"+this.eventNamespace,".ui-tabs-anchor",function(){t(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this.tabs=this.tablist.find("> li:has(a[href])").attr({role:"tab",tabIndex:-1}),this._addClass(this.tabs,"ui-tabs-tab","ui-state-default"),this.anchors=this.tabs.map(function(){return t("a",this)[0]}).attr({role:"presentation",tabIndex:-1}),this._addClass(this.anchors,"ui-tabs-anchor"),this.panels=t(),this.anchors.each(function(i,s){var n,o,a,r=t(s).uniqueId().attr("id"),h=t(s).closest("li"),l=h.attr("aria-controls");e._isLocal(s)?(n=s.hash,a=n.substring(1),o=e.element.find(e._sanitizeSelector(n))):(a=h.attr("aria-controls")||t({}).uniqueId()[0].id,n="#"+a,o=e.element.find(n),o.length||(o=e._createPanel(a),o.insertAfter(e.panels[i-1]||e.tablist)),o.attr("aria-live","polite")),o.length&&(e.panels=e.panels.add(o)),l&&h.data("ui-tabs-aria-controls",l),h.attr({"aria-controls":a,"aria-labelledby":r}),o.attr("aria-labelledby",r)}),this.panels.attr("role","tabpanel"),this._addClass(this.panels,"ui-tabs-panel","ui-widget-content"),i&&(this._off(i.not(this.tabs)),this._off(s.not(this.anchors)),this._off(n.not(this.panels)))},_getList:function(){return this.tablist||this.element.find("ol, ul").eq(0)},_createPanel:function(e){return t("<div>").attr("id",e).data("ui-tabs-destroy",!0)},_setOptionDisabled:function(e){var i,s,n;for(t.isArray(e)&&(e.length?e.length===this.anchors.length&&(e=!0):e=!1),n=0;s=this.tabs[n];n++)i=t(s),e===!0||-1!==t.inArray(n,e)?(i.attr("aria-disabled","true"),this._addClass(i,null,"ui-state-disabled")):(i.removeAttr("aria-disabled"),this._removeClass(i,null,"ui-state-disabled"));this.options.disabled=e,this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,e===!0)},_setupEvents:function(e){var i={};e&&t.each(e.split(" "),function(t,e){i[e]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(!0,this.anchors,{click:function(t){t.preventDefault()}}),this._on(this.anchors,i),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(e){var i,s=this.element.parent();"fill"===e?(i=s.height(),i-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var e=t(this),s=e.css("position");"absolute"!==s&&"fixed"!==s&&(i-=e.outerHeight(!0))}),this.element.children().not(this.panels).each(function(){i-=t(this).outerHeight(!0)}),this.panels.each(function(){t(this).height(Math.max(0,i-t(this).innerHeight()+t(this).height()))}).css("overflow","auto")):"auto"===e&&(i=0,this.panels.each(function(){i=Math.max(i,t(this).height("").height())}).height(i))},_eventHandler:function(e){var i=this.options,s=this.active,n=t(e.currentTarget),o=n.closest("li"),a=o[0]===s[0],r=a&&i.collapsible,h=r?t():this._getPanelForTab(o),l=s.length?this._getPanelForTab(s):t(),c={oldTab:s,oldPanel:l,newTab:r?t():o,newPanel:h};e.preventDefault(),o.hasClass("ui-state-disabled")||o.hasClass("ui-tabs-loading")||this.running||a&&!i.collapsible||this._trigger("beforeActivate",e,c)===!1||(i.active=r?!1:this.tabs.index(o),this.active=a?t():o,this.xhr&&this.xhr.abort(),l.length||h.length||t.error("jQuery UI Tabs: Mismatching fragment identifier."),h.length&&this.load(this.tabs.index(o),e),this._toggle(e,c))},_toggle:function(e,i){function s(){o.running=!1,o._trigger("activate",e,i)}function n(){o._addClass(i.newTab.closest("li"),"ui-tabs-active","ui-state-active"),a.length&&o.options.show?o._show(a,o.options.show,s):(a.show(),s())}var o=this,a=i.newPanel,r=i.oldPanel;this.running=!0,r.length&&this.options.hide?this._hide(r,this.options.hide,function(){o._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),n()}):(this._removeClass(i.oldTab.closest("li"),"ui-tabs-active","ui-state-active"),r.hide(),n()),r.attr("aria-hidden","true"),i.oldTab.attr({"aria-selected":"false","aria-expanded":"false"}),a.length&&r.length?i.oldTab.attr("tabIndex",-1):a.length&&this.tabs.filter(function(){return 0===t(this).attr("tabIndex")}).attr("tabIndex",-1),a.attr("aria-hidden","false"),i.newTab.attr({"aria-selected":"true","aria-expanded":"true",tabIndex:0})},_activate:function(e){var i,s=this._findActive(e);s[0]!==this.active[0]&&(s.length||(s=this.active),i=s.find(".ui-tabs-anchor")[0],this._eventHandler({target:i,currentTarget:i,preventDefault:t.noop}))},_findActive:function(e){return e===!1?t():this.tabs.eq(e)},_getIndex:function(e){return"string"==typeof e&&(e=this.anchors.index(this.anchors.filter("[href$='"+t.ui.escapeSelector(e)+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.tablist.removeAttr("role").off(this.eventNamespace),this.anchors.removeAttr("role tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){t.data(this,"ui-tabs-destroy")?t(this).remove():t(this).removeAttr("role tabIndex aria-live aria-busy aria-selected aria-labelledby aria-hidden aria-expanded")}),this.tabs.each(function(){var e=t(this),i=e.data("ui-tabs-aria-controls");i?e.attr("aria-controls",i).removeData("ui-tabs-aria-controls"):e.removeAttr("aria-controls")}),this.panels.show(),"content"!==this.options.heightStyle&&this.panels.css("height","")},enable:function(e){var i=this.options.disabled;i!==!1&&(void 0===e?i=!1:(e=this._getIndex(e),i=t.isArray(i)?t.map(i,function(t){return t!==e?t:null}):t.map(this.tabs,function(t,i){return i!==e?i:null})),this._setOptionDisabled(i))},disable:function(e){var i=this.options.disabled;if(i!==!0){if(void 0===e)i=!0;else{if(e=this._getIndex(e),-1!==t.inArray(e,i))return;i=t.isArray(i)?t.merge([e],i).sort():[e]}this._setOptionDisabled(i)}},load:function(e,i){e=this._getIndex(e);var s=this,n=this.tabs.eq(e),o=n.find(".ui-tabs-anchor"),a=this._getPanelForTab(n),r={tab:n,panel:a},h=function(t,e){"abort"===e&&s.panels.stop(!1,!0),s._removeClass(n,"ui-tabs-loading"),a.removeAttr("aria-busy"),t===s.xhr&&delete s.xhr};this._isLocal(o[0])||(this.xhr=t.ajax(this._ajaxSettings(o,i,r)),this.xhr&&"canceled"!==this.xhr.statusText&&(this._addClass(n,"ui-tabs-loading"),a.attr("aria-busy","true"),this.xhr.done(function(t,e,n){setTimeout(function(){a.html(t),s._trigger("load",i,r),h(n,e)},1)}).fail(function(t,e){setTimeout(function(){h(t,e)},1)})))},_ajaxSettings:function(e,i,s){var n=this;return{url:e.attr("href").replace(/#.*$/,""),beforeSend:function(e,o){return n._trigger("beforeLoad",i,t.extend({jqXHR:e,ajaxSettings:o},s))}}},_getPanelForTab:function(e){var i=t(e).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+i))}}),t.uiBackCompat!==!1&&t.widget("ui.tabs",t.ui.tabs,{_processTabs:function(){this._superApply(arguments),this._addClass(this.tabs,"ui-tab")}}),t.ui.tabs,t.widget("ui.tooltip",{version:"1.12.1",options:{classes:{"ui-tooltip":"ui-corner-all ui-widget-shadow"},content:function(){var e=t(this).attr("title")||"";return t("<a>").text(e).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,track:!1,close:null,open:null},_addDescribedBy:function(e,i){var s=(e.attr("aria-describedby")||"").split(/\s+/);s.push(i),e.data("ui-tooltip-id",i).attr("aria-describedby",t.trim(s.join(" ")))},_removeDescribedBy:function(e){var i=e.data("ui-tooltip-id"),s=(e.attr("aria-describedby")||"").split(/\s+/),n=t.inArray(i,s);-1!==n&&s.splice(n,1),e.removeData("ui-tooltip-id"),s=t.trim(s.join(" ")),s?e.attr("aria-describedby",s):e.removeAttr("aria-describedby")},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.liveRegion=t("<div>").attr({role:"log","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this.disabledTitles=t([])},_setOption:function(e,i){var s=this;this._super(e,i),"content"===e&&t.each(this.tooltips,function(t,e){s._updateContent(e.element)})},_setOptionDisabled:function(t){this[t?"_disable":"_enable"]()},_disable:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur");n.target=n.currentTarget=s.element[0],e.close(n,!0)}),this.disabledTitles=this.disabledTitles.add(this.element.find(this.options.items).addBack().filter(function(){var e=t(this);return e.is("[title]")?e.data("ui-tooltip-title",e.attr("title")).removeAttr("title"):void 0}))},_enable:function(){this.disabledTitles.each(function(){var e=t(this);e.data("ui-tooltip-title")&&e.attr("title",e.data("ui-tooltip-title"))}),this.disabledTitles=t([])},open:function(e){var i=this,s=t(e?e.target:this.element).closest(this.options.items);s.length&&!s.data("ui-tooltip-id")&&(s.attr("title")&&s.data("ui-tooltip-title",s.attr("title")),s.data("ui-tooltip-open",!0),e&&"mouseover"===e.type&&s.parents().each(function(){var e,s=t(this);s.data("ui-tooltip-open")&&(e=t.Event("blur"),e.target=e.currentTarget=this,i.close(e,!0)),s.attr("title")&&(s.uniqueId(),i.parents[this.id]={element:this,title:s.attr("title")},s.attr("title",""))}),this._registerCloseHandlers(e,s),this._updateContent(s,e))},_updateContent:function(t,e){var i,s=this.options.content,n=this,o=e?e.type:null;return"string"==typeof s||s.nodeType||s.jquery?this._open(e,t,s):(i=s.call(t[0],function(i){n._delay(function(){t.data("ui-tooltip-open")&&(e&&(e.type=o),this._open(e,t,i))})}),i&&this._open(e,t,i),void 0)},_open:function(e,i,s){function n(t){l.of=t,a.is(":hidden")||a.position(l)}var o,a,r,h,l=t.extend({},this.options.position);if(s){if(o=this._find(i))return o.tooltip.find(".ui-tooltip-content").html(s),void 0;i.is("[title]")&&(e&&"mouseover"===e.type?i.attr("title",""):i.removeAttr("title")),o=this._tooltip(i),a=o.tooltip,this._addDescribedBy(i,a.attr("id")),a.find(".ui-tooltip-content").html(s),this.liveRegion.children().hide(),h=t("<div>").html(a.find(".ui-tooltip-content").html()),h.removeAttr("name").find("[name]").removeAttr("name"),h.removeAttr("id").find("[id]").removeAttr("id"),h.appendTo(this.liveRegion),this.options.track&&e&&/^mouse/.test(e.type)?(this._on(this.document,{mousemove:n}),n(e)):a.position(t.extend({of:i},this.options.position)),a.hide(),this._show(a,this.options.show),this.options.track&&this.options.show&&this.options.show.delay&&(r=this.delayedShow=setInterval(function(){a.is(":visible")&&(n(l.of),clearInterval(r))},t.fx.interval)),this._trigger("open",e,{tooltip:a})}},_registerCloseHandlers:function(e,i){var s={keyup:function(e){if(e.keyCode===t.ui.keyCode.ESCAPE){var s=t.Event(e);s.currentTarget=i[0],this.close(s,!0)}}};i[0]!==this.element[0]&&(s.remove=function(){this._removeTooltip(this._find(i).tooltip)}),e&&"mouseover"!==e.type||(s.mouseleave="close"),e&&"focusin"!==e.type||(s.focusout="close"),this._on(!0,i,s)},close:function(e){var i,s=this,n=t(e?e.currentTarget:this.element),o=this._find(n);return o?(i=o.tooltip,o.closing||(clearInterval(this.delayedShow),n.data("ui-tooltip-title")&&!n.attr("title")&&n.attr("title",n.data("ui-tooltip-title")),this._removeDescribedBy(n),o.hiding=!0,i.stop(!0),this._hide(i,this.options.hide,function(){s._removeTooltip(t(this))}),n.removeData("ui-tooltip-open"),this._off(n,"mouseleave focusout keyup"),n[0]!==this.element[0]&&this._off(n,"remove"),this._off(this.document,"mousemove"),e&&"mouseleave"===e.type&&t.each(this.parents,function(e,i){t(i.element).attr("title",i.title),delete s.parents[e]}),o.closing=!0,this._trigger("close",e,{tooltip:i}),o.hiding||(o.closing=!1)),void 0):(n.removeData("ui-tooltip-open"),void 0)},_tooltip:function(e){var i=t("<div>").attr("role","tooltip"),s=t("<div>").appendTo(i),n=i.uniqueId().attr("id");return this._addClass(s,"ui-tooltip-content"),this._addClass(i,"ui-tooltip","ui-widget ui-widget-content"),i.appendTo(this._appendTo(e)),this.tooltips[n]={element:e,tooltip:i}},_find:function(t){var e=t.data("ui-tooltip-id");return e?this.tooltips[e]:null},_removeTooltip:function(t){t.remove(),delete this.tooltips[t.attr("id")]},_appendTo:function(t){var e=t.closest(".ui-front, dialog");return e.length||(e=this.document[0].body),e},_destroy:function(){var e=this;t.each(this.tooltips,function(i,s){var n=t.Event("blur"),o=s.element;n.target=n.currentTarget=o[0],e.close(n,!0),t("#"+i).remove(),o.data("ui-tooltip-title")&&(o.attr("title")||o.attr("title",o.data("ui-tooltip-title")),o.removeData("ui-tooltip-title"))}),this.liveRegion.remove()}}),t.uiBackCompat!==!1&&t.widget("ui.tooltip",t.ui.tooltip,{options:{tooltipClass:null},_tooltip:function(){var t=this._superApply(arguments);return this.options.tooltipClass&&t.tooltip.addClass(this.options.tooltipClass),t}}),t.ui.tooltip}); \ No newline at end of file diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/js/statistics.js b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/js/statistics.js new file mode 100644 index 0000000000000000000000000000000000000000..ddddc25b74f1962f4e05d719f299e423d6c4d320 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/assets/js/statistics.js @@ -0,0 +1,16 @@ +$(document).ready(function () { + // Render tabs + $("#tabdiv").tabs(); + $('ul.tabset_tabs li').click( + function () { + $("html, body").animate({ scrollTop: 0 }, "slow"); + } + ); + + // Add listeners to dropdowns + $('select').change( + function() { + $(this).parents("form").submit(); + } + ); +}); diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/showstats.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/showstats.php new file mode 100644 index 0000000000000000000000000000000000000000..37dc45a5cf0791d1e21521d533f0a20a2df57dd4 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/showstats.php @@ -0,0 +1,15 @@ +<?php + +namespace SimpleSAML\Module\statistics; + +use SimpleSAML\Configuration; +use SimpleSAML\Session; +use Symfony\Component\HttpFoundation\Request; + +$config = Configuration::getInstance(); +$session = Session::getSessionFromRequest(); +$request = Request::createFromGlobals(); + +$controller = new StatisticsController($config, $session); +$t = $controller->main($request); +$t->show(); diff --git a/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/statmeta.php b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/statmeta.php new file mode 100644 index 0000000000000000000000000000000000000000..336ac615bde7df616d22918970316b70fe86f930 --- /dev/null +++ b/vendor/simplesamlphp/simplesamlphp/modules/statistics/www/statmeta.php @@ -0,0 +1,15 @@ +<?php + +namespace SimpleSAML\Module\statistics; + +use SimpleSAML\Configuration; +use SimpleSAML\Session; +use Symfony\Component\HttpFoundation\Request; + +$config = Configuration::getInstance(); +$session = Session::getSessionFromRequest(); +$request = Request::createFromGlobals(); + +$controller = new StatisticsController($config, $session); +$t = $controller->metadata($request); +$t->show(); diff --git a/vendor/symfony/http-foundation/BinaryFileResponse.php b/vendor/symfony/http-foundation/BinaryFileResponse.php index f44eb6daf44e9257a3e0709dfac87e6eb345c461..2cd105c3bb0f380bfe9d9a140edddf29c2750fc7 100644 --- a/vendor/symfony/http-foundation/BinaryFileResponse.php +++ b/vendor/symfony/http-foundation/BinaryFileResponse.php @@ -201,15 +201,17 @@ public function setContentDisposition($disposition, $filename = '', $filenameFal */ public function prepare(Request $request) { - if (!$this->headers->has('Content-Type')) { - $this->headers->set('Content-Type', $this->file->getMimeType() ?: 'application/octet-stream'); - } + parent::prepare($request); - if ('HTTP/1.0' !== $request->server->get('SERVER_PROTOCOL')) { - $this->setProtocolVersion('1.1'); + if ($this->isInformational() || $this->isEmpty()) { + $this->maxlen = 0; + + return $this; } - $this->ensureIEOverSSLCompatibility($request); + if (!$this->headers->has('Content-Type')) { + $this->headers->set('Content-Type', $this->file->getMimeType() ?: 'application/octet-stream'); + } $this->offset = 0; $this->maxlen = -1; @@ -217,6 +219,7 @@ public function prepare(Request $request) if (false === $fileSize = $this->file->getSize()) { return $this; } + $this->headers->remove('Transfer-Encoding'); $this->headers->set('Content-Length', $fileSize); if (!$this->headers->has('Accept-Ranges')) { @@ -286,6 +289,10 @@ public function prepare(Request $request) } } + if ($request->isMethod('HEAD')) { + $this->maxlen = 0; + } + return $this; } @@ -309,40 +316,42 @@ private function hasValidIfRangeHeader(?string $header): bool */ public function sendContent() { - if (!$this->isSuccessful()) { - return parent::sendContent(); - } + try { + if (!$this->isSuccessful()) { + return parent::sendContent(); + } - if (0 === $this->maxlen) { - return $this; - } + if (0 === $this->maxlen) { + return $this; + } - $out = fopen('php://output', 'w'); - $file = fopen($this->file->getPathname(), 'r'); + $out = fopen('php://output', 'w'); + $file = fopen($this->file->getPathname(), 'r'); - ignore_user_abort(true); + ignore_user_abort(true); - if (0 !== $this->offset) { - fseek($file, $this->offset); - } + if (0 !== $this->offset) { + fseek($file, $this->offset); + } - $length = $this->maxlen; - while ($length && !feof($file)) { - $read = ($length > $this->chunkSize) ? $this->chunkSize : $length; - $length -= $read; + $length = $this->maxlen; + while ($length && !feof($file)) { + $read = ($length > $this->chunkSize) ? $this->chunkSize : $length; + $length -= $read; - stream_copy_to_stream($file, $out, $read); + stream_copy_to_stream($file, $out, $read); - if (connection_aborted()) { - break; + if (connection_aborted()) { + break; + } } - } - fclose($out); - fclose($file); - - if ($this->deleteFileAfterSend && file_exists($this->file->getPathname())) { - unlink($this->file->getPathname()); + fclose($out); + fclose($file); + } finally { + if ($this->deleteFileAfterSend && file_exists($this->file->getPathname())) { + unlink($this->file->getPathname()); + } } return $this; diff --git a/vendor/symfony/http-foundation/Request.php b/vendor/symfony/http-foundation/Request.php index 4b2c4d96752c48334944c6e0975595c723b4ecf6..32e07b532e379842edf3724cd165c78795c30bea 100644 --- a/vendor/symfony/http-foundation/Request.php +++ b/vendor/symfony/http-foundation/Request.php @@ -1646,7 +1646,8 @@ public function getLanguages() $languages = AcceptHeader::fromString($this->headers->get('Accept-Language'))->all(); $this->languages = []; - foreach ($languages as $lang => $acceptHeaderItem) { + foreach ($languages as $acceptHeaderItem) { + $lang = $acceptHeaderItem->getValue(); if (str_contains($lang, '-')) { $codes = explode('-', $lang); if ('i' === $codes[0]) { @@ -1684,7 +1685,7 @@ public function getCharsets() return $this->charsets; } - return $this->charsets = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Charset'))->all()); + return $this->charsets = array_map('strval', array_keys(AcceptHeader::fromString($this->headers->get('Accept-Charset'))->all())); } /** @@ -1698,7 +1699,7 @@ public function getEncodings() return $this->encodings; } - return $this->encodings = array_keys(AcceptHeader::fromString($this->headers->get('Accept-Encoding'))->all()); + return $this->encodings = array_map('strval', array_keys(AcceptHeader::fromString($this->headers->get('Accept-Encoding'))->all())); } /** @@ -1712,7 +1713,7 @@ public function getAcceptableContentTypes() return $this->acceptableContentTypes; } - return $this->acceptableContentTypes = array_keys(AcceptHeader::fromString($this->headers->get('Accept'))->all()); + return $this->acceptableContentTypes = array_map('strval', array_keys(AcceptHeader::fromString($this->headers->get('Accept'))->all())); } /** diff --git a/vendor/symfony/http-foundation/Response.php b/vendor/symfony/http-foundation/Response.php index c14a7bbfdfcb5bdf21abcec2b9c4ed41593a5936..75f64fa9eb90777ff2e3460ebae03acdbce311d1 100644 --- a/vendor/symfony/http-foundation/Response.php +++ b/vendor/symfony/http-foundation/Response.php @@ -384,6 +384,7 @@ public function send() fastcgi_finish_request(); } elseif (!\in_array(\PHP_SAPI, ['cli', 'phpdbg'], true)) { static::closeOutputBuffers(0, true); + flush(); } return $this; @@ -1236,7 +1237,6 @@ public static function closeOutputBuffers(int $targetLevel, bool $flush): void while ($level-- > $targetLevel && ($s = $status[$level]) && (!isset($s['del']) ? !isset($s['flags']) || ($s['flags'] & $flags) === $flags : $s['del'])) { if ($flush) { ob_end_flush(); - flush(); } else { ob_end_clean(); } diff --git a/vendor/symfony/http-kernel/Kernel.php b/vendor/symfony/http-kernel/Kernel.php index adb9a94727c5e94614c35388a4ebb5023ce8fabb..c6476b615d29aaf663bcab530388c2b6765d8b93 100644 --- a/vendor/symfony/http-kernel/Kernel.php +++ b/vendor/symfony/http-kernel/Kernel.php @@ -76,11 +76,11 @@ abstract class Kernel implements KernelInterface, RebootableInterface, Terminabl private static $freshCache = []; - public const VERSION = '4.4.45'; - public const VERSION_ID = 40445; + public const VERSION = '4.4.46'; + public const VERSION_ID = 40446; public const MAJOR_VERSION = 4; public const MINOR_VERSION = 4; - public const RELEASE_VERSION = 45; + public const RELEASE_VERSION = 46; public const EXTRA_VERSION = ''; public const END_OF_MAINTENANCE = '11/2022'; diff --git a/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php b/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php index d729994c1f0cce43ae97e89fa2dfd6553abf8d6b..aa494691d1fc188b48c853b527176f81474756d7 100644 --- a/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php +++ b/vendor/symfony/http-kernel/Profiler/FileProfilerStorage.php @@ -115,19 +115,7 @@ public function purge() */ public function read($token): ?Profile { - if (!$token || !file_exists($file = $this->getFilename($token))) { - return null; - } - - if (\function_exists('gzcompress')) { - $file = 'compress.zlib://'.$file; - } - - if (!$data = unserialize(file_get_contents($file))) { - return null; - } - - return $this->createProfileFromData($token, $data); + return $this->doRead($token); } /** @@ -169,14 +157,13 @@ public function write(Profile $profile): bool 'status_code' => $profile->getStatusCode(), ]; - $context = stream_context_create(); + $data = serialize($data); - if (\function_exists('gzcompress')) { - $file = 'compress.zlib://'.$file; - stream_context_set_option($context, 'zlib', 'level', 3); + if (\function_exists('gzencode')) { + $data = gzencode($data, 3); } - if (false === file_put_contents($file, serialize($data), 0, $context)) { + if (false === file_put_contents($file, $data, \LOCK_EX)) { return false; } @@ -293,21 +280,34 @@ protected function createProfileFromData($token, $data, $parent = null) } foreach ($data['children'] as $token) { - if (!$token || !file_exists($file = $this->getFilename($token))) { - continue; + if (null !== $childProfile = $this->doRead($token, $profile)) { + $profile->addChild($childProfile); } + } - if (\function_exists('gzcompress')) { - $file = 'compress.zlib://'.$file; - } + return $profile; + } - if (!$childData = unserialize(file_get_contents($file))) { - continue; - } + private function doRead($token, Profile $profile = null): ?Profile + { + if (!$token || !file_exists($file = $this->getFilename($token))) { + return null; + } + + $h = fopen($file, 'r'); + flock($h, \LOCK_SH); + $data = stream_get_contents($h); + flock($h, \LOCK_UN); + fclose($h); - $profile->addChild($this->createProfileFromData($token, $childData, $profile)); + if (\function_exists('gzdecode')) { + $data = @gzdecode($data) ?: $data; } - return $profile; + if (!$data = unserialize($data)) { + return null; + } + + return $this->createProfileFromData($token, $data, $profile); } } diff --git a/vendor/symfony/mime/Email.php b/vendor/symfony/mime/Email.php index a33dcb46188a31efeb08a17529642e30b4808530..bd0a476c4f778adcc9ae6a003d74bcabe2917a41 100644 --- a/vendor/symfony/mime/Email.php +++ b/vendor/symfony/mime/Email.php @@ -463,7 +463,7 @@ private function generateBody(): AbstractPart $this->ensureValidity(); - [$htmlPart, $attachmentParts, $inlineParts] = $this->prepareParts(); + [$htmlPart, $otherParts, $relatedParts] = $this->prepareParts(); $part = null === $this->text ? null : new TextPart($this->text, $this->textCharset); if (null !== $htmlPart) { @@ -474,15 +474,15 @@ private function generateBody(): AbstractPart } } - if ($inlineParts) { - $part = new RelatedPart($part, ...$inlineParts); + if ($relatedParts) { + $part = new RelatedPart($part, ...$relatedParts); } - if ($attachmentParts) { + if ($otherParts) { if ($part) { - $part = new MixedPart($part, ...$attachmentParts); + $part = new MixedPart($part, ...$otherParts); } else { - $part = new MixedPart(...$attachmentParts); + $part = new MixedPart(...$otherParts); } } @@ -502,42 +502,44 @@ private function prepareParts(): ?array } // usage of reflection is a temporary workaround for missing getters that will be added in 6.2 - $dispositionRef = new \ReflectionProperty(TextPart::class, 'disposition'); - $dispositionRef->setAccessible(true); $nameRef = new \ReflectionProperty(TextPart::class, 'name'); $nameRef->setAccessible(true); - $attachmentParts = $inlineParts = []; + $otherParts = $relatedParts = []; foreach ($this->attachments as $attachment) { $part = $this->createDataPart($attachment); if (isset($attachment['part'])) { $attachment['name'] = $nameRef->getValue($part); } + $related = false; foreach ($names as $name) { if ($name !== $attachment['name']) { continue; } - if (isset($inlineParts[$name])) { + if (isset($relatedParts[$name])) { continue 2; } $part->setDisposition('inline'); - $html = str_replace('cid:'.$name, 'cid:'.$part->getContentId(), $html); + $html = str_replace('cid:'.$name, 'cid:'.$part->getContentId(), $html, $count); + if ($count) { + $related = true; + } $part->setName($part->getContentId()); break; } - if ('inline' === $dispositionRef->getValue($part)) { - $inlineParts[$attachment['name']] = $part; + if ($related) { + $relatedParts[$attachment['name']] = $part; } else { - $attachmentParts[] = $part; + $otherParts[] = $part; } } if (null !== $htmlPart) { $htmlPart = new TextPart($html, $this->htmlCharset, 'html'); } - return [$htmlPart, $attachmentParts, array_values($inlineParts)]; + return [$htmlPart, $otherParts, array_values($relatedParts)]; } private function createDataPart(array $attachment): DataPart diff --git a/vendor/symfony/mime/Part/TextPart.php b/vendor/symfony/mime/Part/TextPart.php index 4afb6560aec0abba48040c02fed0490141a89279..bfe41c0aab2356c1d49c8b8739f0c7f20830130b 100644 --- a/vendor/symfony/mime/Part/TextPart.php +++ b/vendor/symfony/mime/Part/TextPart.php @@ -197,6 +197,7 @@ public function __sleep() // convert resources to strings for serialization if (null !== $this->seekable) { $this->body = $this->getBody(); + $this->seekable = null; } $this->_headers = $this->getHeaders(); diff --git a/vendor/symfony/validator/Constraints/DateTimeValidator.php b/vendor/symfony/validator/Constraints/DateTimeValidator.php index 1a3ae3784b4226b1b330c82f1442d64c58483645..5f2c7a8ef140ee743f77b6060c1e818189fa25d8 100644 --- a/vendor/symfony/validator/Constraints/DateTimeValidator.php +++ b/vendor/symfony/validator/Constraints/DateTimeValidator.php @@ -48,7 +48,7 @@ public function validate($value, Constraint $constraint) \DateTime::createFromFormat($constraint->format, $value); - $errors = \DateTime::getLastErrors(); + $errors = \DateTime::getLastErrors() ?: ['error_count' => 0, 'warnings' => []]; if (0 < $errors['error_count']) { $this->context->buildViolation($constraint->message) diff --git a/vendor/symfony/validator/Resources/translations/validators.nb.xlf b/vendor/symfony/validator/Resources/translations/validators.nb.xlf index 93132ec57cdfce76aaa899ff7da9f38953975ac0..5e1ebc189c350368c4247684c6b3b8cfbc7a7b81 100644 --- a/vendor/symfony/validator/Resources/translations/validators.nb.xlf +++ b/vendor/symfony/validator/Resources/translations/validators.nb.xlf @@ -386,6 +386,22 @@ <source>This value is not a valid International Securities Identification Number (ISIN).</source> <target>Denne verdien er ikke et gyldig International Securities Identification Number (ISIN).</target> </trans-unit> + <trans-unit id="100"> + <source>This value should be a valid expression.</source> + <target>Denne verdien skal være et gyldig uttrykk.</target> + </trans-unit> + <trans-unit id="101"> + <source>This value is not a valid CSS color.</source> + <target>Denne verdien er ikke en gyldig CSS-farge.</target> + </trans-unit> + <trans-unit id="102"> + <source>This value is not a valid CIDR notation.</source> + <target>Denne verdien er ikke en gyldig CIDR-notasjon.</target> + </trans-unit> + <trans-unit id="103"> + <source>The value of the netmask should be between {{ min }} and {{ max }}.</source> + <target>Verdien på nettmasken skal være mellom {{ min }} og {{ max }}.</target> + </trans-unit> </body> </file> </xliff> diff --git a/vendor/symfony/validator/Resources/translations/validators.no.xlf b/vendor/symfony/validator/Resources/translations/validators.no.xlf index 93132ec57cdfce76aaa899ff7da9f38953975ac0..5e1ebc189c350368c4247684c6b3b8cfbc7a7b81 100644 --- a/vendor/symfony/validator/Resources/translations/validators.no.xlf +++ b/vendor/symfony/validator/Resources/translations/validators.no.xlf @@ -386,6 +386,22 @@ <source>This value is not a valid International Securities Identification Number (ISIN).</source> <target>Denne verdien er ikke et gyldig International Securities Identification Number (ISIN).</target> </trans-unit> + <trans-unit id="100"> + <source>This value should be a valid expression.</source> + <target>Denne verdien skal være et gyldig uttrykk.</target> + </trans-unit> + <trans-unit id="101"> + <source>This value is not a valid CSS color.</source> + <target>Denne verdien er ikke en gyldig CSS-farge.</target> + </trans-unit> + <trans-unit id="102"> + <source>This value is not a valid CIDR notation.</source> + <target>Denne verdien er ikke en gyldig CIDR-notasjon.</target> + </trans-unit> + <trans-unit id="103"> + <source>The value of the netmask should be between {{ min }} and {{ max }}.</source> + <target>Verdien på nettmasken skal være mellom {{ min }} og {{ max }}.</target> + </trans-unit> </body> </file> </xliff> diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/ckeditor5-dll.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/ckeditor5-dll.js index 07d7dd6d5b02c88a92ff69146eeb4fb0616ebc53..82722fe6784d24dc6a2929d6625359a1e64d6abc 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/ckeditor5-dll.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/ckeditor5-dll.js @@ -1,5 +1,5 @@ -!function(e){const t=e.en=e.en||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Aquamarine",Black:"Black",Blue:"Blue",Cancel:"Cancel","Cannot upload file:":"Cannot upload file:","Dim grey":"Dim grey","Dropdown toolbar":"Dropdown toolbar","Edit block":"Edit block","Editor editing area: %0":"Editor editing area: %0","Editor toolbar":"Editor toolbar",Green:"Green",Grey:"Grey","Insert paragraph after block":"Insert paragraph after block","Insert paragraph before block":"Insert paragraph before block","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Next:"Next",Orange:"Orange",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove color","Restore default":"Restore default","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"Rich Text Editor. Editing area: %0",Save:"Save","Select all":"Select all","Show more items":"Show more items",Turquoise:"Turquoise",Undo:"Undo","Upload in progress":"Upload in progress",White:"White","Widget toolbar":"Widget toolbar",Yellow:"Yellow"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})), +!function(e){const t=e.en=e.en||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Aquamarine",Black:"Black",Blue:"Blue",Cancel:"Cancel","Cannot upload file:":"Cannot upload file:","Dim grey":"Dim grey","Dropdown toolbar":"Dropdown toolbar","Edit block":"Edit block","Editor block content toolbar":"Editor block content toolbar","Editor contextual toolbar":"Editor contextual toolbar","Editor editing area: %0":"Editor editing area: %0","Editor toolbar":"Editor toolbar",Green:"Green",Grey:"Grey","Insert paragraph after block":"Insert paragraph after block","Insert paragraph before block":"Insert paragraph before block","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Next:"Next",Orange:"Orange",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove color","Restore default":"Restore default","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"Rich Text Editor. Editing area: %0",Save:"Save","Select all":"Select all","Show more items":"Show more items",Turquoise:"Turquoise",Undo:"Undo","Upload in progress":"Upload in progress",White:"White","Widget toolbar":"Widget toolbar",Yellow:"Yellow"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})), /*! * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md. - */(()=>{var e={"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-clipboard/theme/clipboard.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,'.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position{display:inline;pointer-events:none;position:relative}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{position:absolute;width:0}.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__selection-handle,.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__type-around{display:none}:root{--ck-clipboard-drop-target-dot-width:12px;--ck-clipboard-drop-target-dot-height:8px;--ck-clipboard-drop-target-color:var(--ck-color-focus-border)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{background:var(--ck-clipboard-drop-target-color);border:1px solid var(--ck-clipboard-drop-target-color);bottom:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);margin-left:-1px;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span:after{border-color:var(--ck-clipboard-drop-target-color) transparent transparent transparent;border-style:solid;border-width:calc(var(--ck-clipboard-drop-target-dot-height)) calc(var(--ck-clipboard-drop-target-dot-width)*.5) 0 calc(var(--ck-clipboard-drop-target-dot-width)*.5);content:"";display:block;height:0;left:50%;position:absolute;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);transform:translateX(-50%);width:0}.ck.ck-editor__editable .ck-widget.ck-clipboard-drop-target-range{outline:var(--ck-widget-outline-thickness) solid var(--ck-clipboard-drop-target-color)!important}.ck.ck-editor__editable .ck-widget:-webkit-drag{zoom:.6;outline:none!important}',""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-engine/theme/placeholder.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck .ck-placeholder,.ck.ck-placeholder{position:relative}.ck .ck-placeholder:before,.ck.ck-placeholder:before{content:attr(data-placeholder);left:0;pointer-events:none;position:absolute;right:0}.ck.ck-read-only .ck-placeholder:before{display:none}.ck.ck-reset_all .ck-placeholder{position:relative}.ck .ck-placeholder:before,.ck.ck-placeholder:before{color:var(--ck-color-engine-placeholder-text);cursor:text}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-engine/theme/renderer.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-editor__editable span[data-ck-unsafe-element]{display:none}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/button/button.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-button,a.ck.ck-button{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-button .ck-tooltip,a.ck.ck-button .ck-tooltip{display:block}@media (hover:none){.ck.ck-button .ck-tooltip,a.ck.ck-button .ck-tooltip{display:none}}.ck.ck-button,a.ck.ck-button{align-items:center;display:inline-flex;justify-content:left;position:relative}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{display:none}.ck.ck-button.ck-button_with-text .ck-button__label,a.ck.ck-button.ck-button_with-text .ck-button__label{display:inline-block}.ck.ck-button:not(.ck-button_with-text),a.ck.ck-button:not(.ck-button_with-text){justify-content:center}.ck.ck-button:hover .ck-tooltip,a.ck.ck-button:hover .ck-tooltip{opacity:1;visibility:visible}.ck.ck-button:focus:not(:hover) .ck-tooltip,a.ck.ck-button:focus:not(:hover) .ck-tooltip{display:none}.ck.ck-button,a.ck.ck-button{background:var(--ck-color-button-default-background)}.ck.ck-button:not(.ck-disabled):hover,a.ck.ck-button:not(.ck-disabled):hover{background:var(--ck-color-button-default-hover-background)}.ck.ck-button:not(.ck-disabled):active,a.ck.ck-button:not(.ck-disabled):active{background:var(--ck-color-button-default-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-default-active-shadow)}.ck.ck-button.ck-disabled,a.ck.ck-button.ck-disabled{background:var(--ck-color-button-default-disabled-background)}.ck.ck-button,a.ck.ck-button{border-radius:0}.ck-rounded-corners .ck.ck-button,.ck-rounded-corners a.ck.ck-button,.ck.ck-button.ck-rounded-corners,a.ck.ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-button,a.ck.ck-button{-webkit-appearance:none;border:1px solid transparent;cursor:default;font-size:inherit;line-height:1;min-height:var(--ck-ui-component-min-height);min-width:var(--ck-ui-component-min-height);padding:var(--ck-spacing-tiny);text-align:center;transition:box-shadow .2s ease-in-out,border .2s ease-in-out;vertical-align:middle;white-space:nowrap}.ck.ck-button:active,.ck.ck-button:focus,a.ck.ck-button:active,a.ck.ck-button:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-button .ck-button__icon use,.ck.ck-button .ck-button__icon use *,a.ck.ck-button .ck-button__icon use,a.ck.ck-button .ck-button__icon use *{color:inherit}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{color:inherit;cursor:inherit;font-size:inherit;font-weight:inherit;vertical-align:middle}[dir=ltr] .ck.ck-button .ck-button__label,[dir=ltr] a.ck.ck-button .ck-button__label{text-align:left}[dir=rtl] .ck.ck-button .ck-button__label,[dir=rtl] a.ck.ck-button .ck-button__label{text-align:right}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{color:inherit}[dir=ltr] .ck.ck-button .ck-button__keystroke,[dir=ltr] a.ck.ck-button .ck-button__keystroke{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-button .ck-button__keystroke,[dir=rtl] a.ck.ck-button .ck-button__keystroke{margin-right:var(--ck-spacing-large)}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{font-weight:700;opacity:.7}.ck.ck-button.ck-disabled:active,.ck.ck-button.ck-disabled:focus,a.ck.ck-button.ck-disabled:active,a.ck.ck-button.ck-disabled:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-button.ck-disabled .ck-button__icon,.ck.ck-button.ck-disabled .ck-button__label,a.ck.ck-button.ck-disabled .ck-button__icon,a.ck.ck-button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-disabled .ck-button__keystroke,a.ck.ck-button.ck-disabled .ck-button__keystroke{opacity:.3}.ck.ck-button.ck-button_with-text,a.ck.ck-button.ck-button_with-text{padding:var(--ck-spacing-tiny) var(--ck-spacing-standard)}[dir=ltr] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=ltr] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:calc(var(--ck-spacing-small)*-1);margin-right:var(--ck-spacing-small)}[dir=rtl] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=rtl] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:var(--ck-spacing-small);margin-right:calc(var(--ck-spacing-small)*-1)}.ck.ck-button.ck-button_with-keystroke .ck-button__label,a.ck.ck-button.ck-button_with-keystroke .ck-button__label{flex-grow:1}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{background:var(--ck-color-button-on-background)}.ck.ck-button.ck-on:not(.ck-disabled):hover,a.ck.ck-button.ck-on:not(.ck-disabled):hover{background:var(--ck-color-button-on-hover-background)}.ck.ck-button.ck-on:not(.ck-disabled):active,a.ck.ck-button.ck-on:not(.ck-disabled):active{background:var(--ck-color-button-on-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-on-active-shadow)}.ck.ck-button.ck-on.ck-disabled,a.ck.ck-button.ck-on.ck-disabled{background:var(--ck-color-button-on-disabled-background)}.ck.ck-button.ck-button-save,a.ck.ck-button.ck-button-save{color:var(--ck-color-button-save)}.ck.ck-button.ck-button-cancel,a.ck.ck-button.ck-button-cancel{color:var(--ck-color-button-cancel)}.ck.ck-button-action,a.ck.ck-button-action{background:var(--ck-color-button-action-background)}.ck.ck-button-action:not(.ck-disabled):hover,a.ck.ck-button-action:not(.ck-disabled):hover{background:var(--ck-color-button-action-hover-background)}.ck.ck-button-action:not(.ck-disabled):active,a.ck.ck-button-action:not(.ck-disabled):active{background:var(--ck-color-button-action-active-background);box-shadow:inset 0 2px 2px var(--ck-color-button-action-active-shadow)}.ck.ck-button-action.ck-disabled,a.ck.ck-button-action.ck-disabled{background:var(--ck-color-button-action-disabled-background)}.ck.ck-button-action,a.ck.ck-button-action{color:var(--ck-color-button-action-text)}.ck.ck-button-bold,a.ck.ck-button-bold{font-weight:700}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/button/switchbutton.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{display:block}:root{--ck-switch-button-toggle-width:2.6153846154em;--ck-switch-button-toggle-inner-size:1.0769230769em;--ck-switch-button-toggle-spacing:1px;--ck-switch-button-translation:calc(var(--ck-switch-button-toggle-width) - var(--ck-switch-button-toggle-inner-size) - var(--ck-switch-button-toggle-spacing)*2)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__label{margin-right:calc(var(--ck-spacing-large)*2)}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__label{margin-left:calc(var(--ck-spacing-large)*2)}.ck.ck-button.ck-switchbutton .ck-button__toggle{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle.ck-rounded-corners{border-radius:var(--ck-border-radius)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-left:auto}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-right:auto}.ck.ck-button.ck-switchbutton .ck-button__toggle{background:var(--ck-color-switch-button-off-background);transition:background .4s ease;width:var(--ck-switch-button-toggle-width)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:calc(var(--ck-border-radius)*.5)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{background:var(--ck-color-switch-button-inner-background);height:var(--ck-switch-button-toggle-inner-size);margin:var(--ck-switch-button-toggle-spacing);transition:all .3s ease;width:var(--ck-switch-button-toggle-inner-size)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover{background:var(--ck-color-switch-button-off-hover-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover .ck-button__toggle__inner{box-shadow:0 0 0 5px var(--ck-color-switch-button-inner-shadow)}.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle{background:var(--ck-color-switch-button-on-background)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle:hover{background:var(--ck-color-switch-button-on-hover-background)}[dir=ltr] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(var( --ck-switch-button-translation ))}[dir=rtl] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(calc(var( --ck-switch-button-translation )*-1))}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/colorgrid/colorgrid.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-color-grid{display:grid}:root{--ck-color-grid-tile-size:24px;--ck-color-color-grid-check-icon:#000}.ck.ck-color-grid{grid-gap:5px;padding:8px}.ck.ck-color-grid__tile{border:0;height:var(--ck-color-grid-tile-size);min-height:var(--ck-color-grid-tile-size);min-width:var(--ck-color-grid-tile-size);padding:0;transition:box-shadow .2s ease;width:var(--ck-color-grid-tile-size)}.ck.ck-color-grid__tile.ck-disabled{cursor:unset;transition:unset}.ck.ck-color-grid__tile.ck-color-table__color-tile_bordered{box-shadow:0 0 0 1px var(--ck-color-base-border)}.ck.ck-color-grid__tile .ck.ck-icon{color:var(--ck-color-color-grid-check-icon);display:none}.ck.ck-color-grid__tile.ck-on{box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-base-text)}.ck.ck-color-grid__tile.ck-on .ck.ck-icon{display:block}.ck.ck-color-grid__tile.ck-on,.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){border:0}.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-color-grid__label{padding:0 var(--ck-spacing-standard)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/dropdown.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-dropdown-max-width:75vw}.ck.ck-dropdown{display:inline-block;position:relative}.ck.ck-dropdown .ck-dropdown__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-dropdown .ck-button.ck-dropdown__button{width:100%}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on .ck-tooltip{display:none}.ck.ck-dropdown .ck-dropdown__panel{-webkit-backface-visibility:hidden;display:none;max-width:var(--ck-dropdown-max-width);position:absolute;z-index:var(--ck-z-modal)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel-visible{display:inline-block}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw{bottom:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{bottom:auto;top:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se{left:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{right:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s{left:50%;transform:translateX(-50%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw{left:75%;transform:translateX(-75%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme{left:25%;transform:translateX(-25%)}.ck.ck-toolbar .ck-dropdown__panel{z-index:calc(var(--ck-z-modal) + 1)}:root{--ck-dropdown-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-dropdown{font-size:inherit}.ck.ck-dropdown .ck-dropdown__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-dropdown .ck-dropdown__arrow{margin-left:var(--ck-spacing-standard);right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-dropdown .ck-dropdown__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}.ck.ck-dropdown.ck-disabled .ck-dropdown__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{overflow:hidden;text-overflow:ellipsis;width:7em}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-dropdown__button_label-width_auto .ck-button__label{width:auto}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active{box-shadow:none}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active:focus,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active:focus{box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-dropdown__panel{border-radius:0}.ck-rounded-corners .ck.ck-dropdown__panel,.ck.ck-dropdown__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dropdown__panel{background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;box-shadow:var(--ck-drop-shadow),0 0;min-width:100%}.ck.ck-dropdown__panel.ck-dropdown__panel_se{border-top-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_sw{border-top-right-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_ne{border-bottom-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_nw{border-bottom-right-radius:0}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/listdropdown.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-dropdown .ck-dropdown__panel .ck-list{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list,.ck.ck-dropdown .ck-dropdown__panel .ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/splitbutton.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,'.ck.ck-splitbutton{font-size:inherit}.ck.ck-splitbutton .ck-splitbutton__action:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button .ck-tooltip{display:none}:root{--ck-color-split-button-hover-background:#ebebeb;--ck-color-split-button-hover-border:#b3b3b3}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-bottom-right-radius:unset;border-top-right-radius:unset}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-bottom-left-radius:unset;border-top-left-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow{min-width:unset}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-left-radius:unset;border-top-left-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-right-radius:unset;border-top-right-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow svg{width:var(--ck-dropdown-arrow-size)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover),.ck.ck-splitbutton:hover>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover){background:var(--ck-color-split-button-hover-background)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{background-color:var(--ck-color-split-button-hover-border);content:"";height:100%;position:absolute;width:1px}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{left:-1px}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{right:-1px}.ck.ck-splitbutton.ck-splitbutton_open{border-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__action{border-bottom-left-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__arrow{border-bottom-right-radius:0}',""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-toolbar-dropdown-max-width:60vw}.ck.ck-toolbar-dropdown>.ck-dropdown__panel{max-width:var(--ck-toolbar-dropdown-max-width);width:max-content}.ck.ck-toolbar-dropdown>.ck-dropdown__panel .ck-button:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-toolbar-dropdown .ck-toolbar{border:0}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/editorui/editorui.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-editable-blur-selection:#d9d9d9}.ck.ck-editor__editable:not(.ck-editor__nested-editable){border-radius:0}.ck-rounded-corners .ck.ck-editor__editable:not(.ck-editor__nested-editable),.ck.ck-editor__editable.ck-rounded-corners:not(.ck-editor__nested-editable){border-radius:var(--ck-border-radius)}.ck.ck-editor__editable.ck-focused:not(.ck-editor__nested-editable){border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck.ck-editor__editable_inline{border:1px solid transparent;overflow:auto;padding:0 var(--ck-spacing-standard)}.ck.ck-editor__editable_inline[dir=ltr]{text-align:left}.ck.ck-editor__editable_inline[dir=rtl]{text-align:right}.ck.ck-editor__editable_inline>:first-child{margin-top:var(--ck-spacing-large)}.ck.ck-editor__editable_inline>:last-child{margin-bottom:var(--ck-spacing-large)}.ck.ck-editor__editable_inline.ck-blurred ::selection{background:var(--ck-color-editable-blur-selection)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_n]:after{border-bottom-color:var(--ck-color-base-foreground)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_s]:after{border-top-color:var(--ck-color-base-foreground)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/formheader/formheader.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-form__header{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}:root{--ck-form-header-height:38px}.ck.ck-form__header{border-bottom:1px solid var(--ck-color-base-border);height:var(--ck-form-header-height);line-height:var(--ck-form-header-height);padding:var(--ck-spacing-small) var(--ck-spacing-large)}.ck.ck-form__header .ck-form__header__label{font-weight:700}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/icon/icon.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-icon{vertical-align:middle}:root{--ck-icon-size:calc(var(--ck-line-height-base)*var(--ck-font-size-normal))}.ck.ck-icon{font-size:.8333350694em;height:var(--ck-icon-size);width:var(--ck-icon-size);will-change:transform}.ck.ck-icon,.ck.ck-icon *{color:inherit;cursor:inherit}.ck.ck-icon :not([fill]){fill:currentColor}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/input/input.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-input-width:18em;--ck-input-text-width:var(--ck-input-width)}.ck.ck-input{border-radius:0}.ck-rounded-corners .ck.ck-input,.ck.ck-input.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input{background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);min-height:var(--ck-ui-component-min-height);min-width:var(--ck-input-width);padding:var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);transition:box-shadow .1s ease-in-out,border .1s ease-in-out}.ck.ck-input:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-input[readonly]{background:var(--ck-color-input-disabled-background);border:1px solid var(--ck-color-input-disabled-border);color:var(--ck-color-input-disabled-text)}.ck.ck-input[readonly]:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-input.ck-error{animation:ck-input-shake .3s ease both;border-color:var(--ck-color-input-error-border)}.ck.ck-input.ck-error:focus{box-shadow:var(--ck-focus-error-outer-shadow),0 0}@keyframes ck-input-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/label/label.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{display:flex;position:relative}.ck.ck-labeled-field-view .ck.ck-label{display:block;position:absolute}:root{--ck-labeled-field-view-transition:.1s cubic-bezier(0,0,0.24,0.95);--ck-labeled-field-empty-unfocused-max-width:100% - 2 * var(--ck-spacing-medium);--ck-color-labeled-field-label-background:var(--ck-color-base-background)}.ck.ck-labeled-field-view{border-radius:0}.ck-rounded-corners .ck.ck-labeled-field-view,.ck.ck-labeled-field-view.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{width:100%}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{top:0}[dir=ltr] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{left:0}[dir=rtl] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{right:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{background:var(--ck-color-labeled-field-label-background);font-weight:400;line-height:normal;max-width:100%;overflow:hidden;padding:0 calc(var(--ck-font-size-tiny)*.5);pointer-events:none;text-overflow:ellipsis;transform:translate(var(--ck-spacing-medium),-6px) scale(.75);transform-origin:0 0;transition:transform var(--ck-labeled-field-view-transition),padding var(--ck-labeled-field-view-transition),background var(--ck-labeled-field-view-transition)}.ck.ck-labeled-field-view.ck-error .ck-input:not([readonly])+.ck.ck-label,.ck.ck-labeled-field-view.ck-error>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view .ck-labeled-field-view__status{font-size:var(--ck-font-size-small);margin-top:var(--ck-spacing-small);white-space:normal}.ck.ck-labeled-field-view .ck-labeled-field-view__status.ck-labeled-field-view__status_error{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view.ck-disabled>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-input-disabled-text)}[dir=ltr] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=ltr] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(var(--ck-spacing-medium),calc(var(--ck-font-size-base)*.6)) scale(1)}[dir=rtl] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=rtl] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(calc(var(--ck-spacing-medium)*-1),calc(var(--ck-font-size-base)*.6)) scale(1)}.ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{background:transparent;max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width));padding:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck.ck-button{background:transparent}.ck.ck-labeled-field-view.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck-button>.ck-button__label{opacity:0}.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown+.ck-label{max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard))}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/list/list.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-list{display:flex;flex-direction:column;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-list .ck-list__item,.ck.ck-list .ck-list__separator{display:block}.ck.ck-list .ck-list__item>:focus{position:relative;z-index:var(--ck-z-default)}.ck.ck-list{border-radius:0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list{background:var(--ck-color-list-background);list-style-type:none}.ck.ck-list__item{cursor:default;min-width:12em}.ck.ck-list__item .ck-button{border-radius:0;min-height:unset;padding:calc(var(--ck-line-height-base)*.2*var(--ck-font-size-base)) calc(var(--ck-line-height-base)*.4*var(--ck-font-size-base));text-align:left;width:100%}.ck.ck-list__item .ck-button .ck-button__label{line-height:calc(var(--ck-line-height-base)*1.2*var(--ck-font-size-base))}.ck.ck-list__item .ck-button:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on{background:var(--ck-color-list-button-on-background);color:var(--ck-color-list-button-on-text)}.ck.ck-list__item .ck-button.ck-on:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-on-background-focus)}.ck.ck-list__item .ck-button.ck-on:focus:not(.ck-disabled){border-color:var(--ck-color-base-background)}.ck.ck-list__item .ck-button:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-list__item .ck-switchbutton.ck-on{background:var(--ck-color-list-background);color:inherit}.ck.ck-list__item .ck-switchbutton.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background);color:inherit}.ck.ck-list__separator{background:var(--ck-color-base-border);height:1px;width:100%}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/balloonpanel.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,':root{--ck-balloon-panel-arrow-z-index:calc(var(--ck-z-default) - 3)}.ck.ck-balloon-panel{display:none;position:absolute;z-index:var(--ck-z-modal)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{content:"";position:absolute}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_n]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_n]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_s]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_s]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel.ck-balloon-panel_visible{display:block}:root{--ck-balloon-arrow-offset:2px;--ck-balloon-arrow-height:10px;--ck-balloon-arrow-half-width:8px;--ck-balloon-arrow-drop-shadow:0 2px 2px var(--ck-color-shadow-drop)}.ck.ck-balloon-panel{border-radius:0}.ck-rounded-corners .ck.ck-balloon-panel,.ck.ck-balloon-panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-balloon-panel{background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);box-shadow:var(--ck-drop-shadow),0 0;min-height:15px}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{border-style:solid;height:0;width:0}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-width:0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_n]:before{border-color:transparent transparent var(--ck-color-panel-border) transparent}.ck.ck-balloon-panel[class*=arrow_n]:after{border-color:transparent transparent var(--ck-color-panel-background) transparent;margin-top:var(--ck-balloon-arrow-offset)}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-width:var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_s]:before{border-color:var(--ck-color-panel-border) transparent transparent;filter:drop-shadow(var(--ck-balloon-arrow-drop-shadow))}.ck.ck-balloon-panel[class*=arrow_s]:after{border-color:var(--ck-color-panel-background) transparent transparent transparent;margin-bottom:var(--ck-balloon-arrow-offset)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:before{left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:before{left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:before{right:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);right:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:before{margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%;top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:before{left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}',""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/balloonrotator.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck .ck-balloon-rotator__navigation{align-items:center;display:flex;justify-content:center}.ck .ck-balloon-rotator__content .ck-toolbar{justify-content:center}.ck .ck-balloon-rotator__navigation{background:var(--ck-color-toolbar-background);border-bottom:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation>*{margin-bottom:var(--ck-spacing-small);margin-right:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter{margin-left:var(--ck-spacing-small);margin-right:var(--ck-spacing-standard)}.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper{box-shadow:none}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/fakepanel.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck .ck-fake-panel{position:absolute;z-index:calc(var(--ck-z-modal) - 1)}.ck .ck-fake-panel div{position:absolute}.ck .ck-fake-panel div:first-child{z-index:2}.ck .ck-fake-panel div:nth-child(2){z-index:1}:root{--ck-balloon-fake-panel-offset-horizontal:6px;--ck-balloon-fake-panel-offset-vertical:6px}.ck .ck-fake-panel div{background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);border-radius:var(--ck-border-radius);box-shadow:var(--ck-drop-shadow),0 0;height:100%;min-height:15px;width:100%}.ck .ck-fake-panel div:first-child{margin-left:var(--ck-balloon-fake-panel-offset-horizontal);margin-top:var(--ck-balloon-fake-panel-offset-vertical)}.ck .ck-fake-panel div:nth-child(2){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*2);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*2)}.ck .ck-fake-panel div:nth-child(3){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*3);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*3)}.ck .ck-balloon-panel_arrow_s+.ck-fake-panel,.ck .ck-balloon-panel_arrow_se+.ck-fake-panel,.ck .ck-balloon-panel_arrow_sw+.ck-fake-panel{--ck-balloon-fake-panel-offset-vertical:-6px}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/stickypanel.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-sticky-panel .ck-sticky-panel__content_sticky{position:fixed;top:0;z-index:var(--ck-z-modal)}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky_bottom-limit{position:absolute;top:auto}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky{border-top-left-radius:0;border-top-right-radius:0;border-width:0 1px 1px;box-shadow:var(--ck-drop-shadow),0 0}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-block-toolbar-button{position:absolute;z-index:var(--ck-z-default)}:root{--ck-color-block-toolbar-button:var(--ck-color-text);--ck-block-toolbar-button-size:var(--ck-font-size-normal)}.ck.ck-block-toolbar-button{color:var(--ck-color-block-toolbar-button);font-size:var(--ck-block-toolbar-size)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/toolbar/toolbar.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-toolbar{align-items:center;display:flex;flex-flow:row nowrap;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-toolbar>.ck-toolbar__items{align-items:center;display:flex;flex-flow:row wrap;flex-grow:1}.ck.ck-toolbar .ck.ck-toolbar__separator{display:inline-block}.ck.ck-toolbar .ck.ck-toolbar__separator:first-child,.ck.ck-toolbar .ck.ck-toolbar__separator:last-child{display:none}.ck.ck-toolbar .ck-toolbar__line-break{flex-basis:100%}.ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items{flex-direction:column}.ck.ck-toolbar.ck-toolbar_floating>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck-dropdown__button .ck-dropdown__arrow{display:none}.ck.ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar{background:var(--ck-color-toolbar-background);border:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck.ck-toolbar .ck.ck-toolbar__separator{align-self:stretch;background:var(--ck-color-toolbar-border);margin-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small);min-width:1px;width:1px}.ck.ck-toolbar .ck-toolbar__line-break{height:0}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break){margin-right:var(--ck-spacing-small)}.ck.ck-toolbar>.ck-toolbar__items:empty+.ck.ck-toolbar__separator{display:none}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break),.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown{margin-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck.ck-toolbar.ck-toolbar_vertical{padding:0}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items>.ck{border:0;border-radius:0;margin:0;width:100%}.ck.ck-toolbar.ck-toolbar_compact{padding:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>*{margin:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>:not(:first-child):not(:last-child){border-radius:0}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck.ck-button.ck-dropdown__button{padding-left:var(--ck-spacing-tiny)}.ck-toolbar-container .ck.ck-toolbar{border:0}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck{margin-right:0}.ck.ck-toolbar[dir=rtl]:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-left:0}.ck.ck-toolbar.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:first-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=rtl]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__separator,[dir=rtl] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-right:0}.ck.ck-toolbar.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:first-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=ltr]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__separator,[dir=ltr] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-right:var(--ck-spacing-small)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/tooltip/tooltip.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,'.ck.ck-tooltip,.ck.ck-tooltip .ck-tooltip__text:after{-webkit-backface-visibility:hidden;pointer-events:none;position:absolute}.ck.ck-tooltip{display:none;opacity:0;visibility:hidden;z-index:var(--ck-z-modal)}.ck.ck-tooltip .ck-tooltip__text{display:inline-block}.ck.ck-tooltip .ck-tooltip__text:after{content:"";height:0;width:0}:root{--ck-tooltip-arrow-size:5px}.ck.ck-tooltip{left:50%;top:0;transition:opacity .2s ease-in-out .2s}.ck.ck-tooltip .ck-tooltip__text{border-radius:0}.ck-rounded-corners .ck.ck-tooltip .ck-tooltip__text,.ck.ck-tooltip .ck-tooltip__text.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-tooltip .ck-tooltip__text{background:var(--ck-color-tooltip-background);color:var(--ck-color-tooltip-text);font-size:.9em;left:-50%;line-height:1.5;padding:var(--ck-spacing-small) var(--ck-spacing-medium);position:relative}.ck.ck-tooltip .ck-tooltip__text:after{border-style:solid;left:50%;transition:opacity .2s ease-in-out .2s}.ck.ck-tooltip.ck-tooltip_s,.ck.ck-tooltip.ck-tooltip_se,.ck.ck-tooltip.ck-tooltip_sw{bottom:calc(var(--ck-tooltip-arrow-size)*-1);transform:translateY(100%)}.ck.ck-tooltip.ck-tooltip_s .ck-tooltip__text:after,.ck.ck-tooltip.ck-tooltip_se .ck-tooltip__text:after,.ck.ck-tooltip.ck-tooltip_sw .ck-tooltip__text:after{border-color:transparent transparent var(--ck-color-tooltip-background) transparent;border-width:0 var(--ck-tooltip-arrow-size) var(--ck-tooltip-arrow-size) var(--ck-tooltip-arrow-size);top:calc(var(--ck-tooltip-arrow-size)*-1 + 1px);transform:translateX(-50%)}.ck.ck-tooltip.ck-tooltip_sw{left:auto;right:50%}.ck.ck-tooltip.ck-tooltip_sw .ck-tooltip__text{left:auto;right:calc(var(--ck-tooltip-arrow-size)*-2)}.ck.ck-tooltip.ck-tooltip_sw .ck-tooltip__text:after{left:auto;right:0}.ck.ck-tooltip.ck-tooltip_se{left:50%;right:auto}.ck.ck-tooltip.ck-tooltip_se .ck-tooltip__text{left:calc(var(--ck-tooltip-arrow-size)*-2);right:auto}.ck.ck-tooltip.ck-tooltip_se .ck-tooltip__text:after{left:0;right:auto;transform:translateX(50%)}.ck.ck-tooltip.ck-tooltip_n{top:calc(var(--ck-tooltip-arrow-size)*-1);transform:translateY(-100%)}.ck.ck-tooltip.ck-tooltip_n .ck-tooltip__text:after{border-color:var(--ck-color-tooltip-background) transparent transparent transparent;border-width:var(--ck-tooltip-arrow-size) var(--ck-tooltip-arrow-size) 0 var(--ck-tooltip-arrow-size);bottom:calc(var(--ck-tooltip-arrow-size)*-1);transform:translateX(-50%)}.ck.ck-tooltip.ck-tooltip_e{left:calc(100% + var(--ck-tooltip-arrow-size));top:50%}.ck.ck-tooltip.ck-tooltip_e .ck-tooltip__text{left:0;transform:translateY(-50%)}.ck.ck-tooltip.ck-tooltip_e .ck-tooltip__text:after{border-color:transparent var(--ck-color-tooltip-background) transparent transparent;border-width:var(--ck-tooltip-arrow-size) var(--ck-tooltip-arrow-size) var(--ck-tooltip-arrow-size) 0;left:calc(var(--ck-tooltip-arrow-size)*-1);top:calc(50% - var(--ck-tooltip-arrow-size)*1)}.ck.ck-tooltip.ck-tooltip_w{left:auto;right:calc(100% + var(--ck-tooltip-arrow-size));top:50%}.ck.ck-tooltip.ck-tooltip_w .ck-tooltip__text{left:0;transform:translateY(-50%)}.ck.ck-tooltip.ck-tooltip_w .ck-tooltip__text:after{border-color:transparent transparent transparent var(--ck-color-tooltip-background);border-width:var(--ck-tooltip-arrow-size) 0 var(--ck-tooltip-arrow-size) var(--ck-tooltip-arrow-size);left:100%;top:calc(50% - var(--ck-tooltip-arrow-size)*1)}',""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/globals/globals.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck-hidden{display:none!important}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset,.ck.ck-reset_all{box-sizing:border-box;height:auto;position:static;width:auto}:root{--ck-z-default:1;--ck-z-modal:calc(var(--ck-z-default) + 999)}.ck-transitions-disabled,.ck-transitions-disabled *{transition:none!important}:root{--ck-color-base-foreground:#fafafa;--ck-color-base-background:#fff;--ck-color-base-border:#c4c4c4;--ck-color-base-action:#61b045;--ck-color-base-focus:#6cb5f9;--ck-color-base-text:#333;--ck-color-base-active:#198cf0;--ck-color-base-active-focus:#0e7fe1;--ck-color-base-error:#db3700;--ck-color-focus-border-coordinates:208,79%,51%;--ck-color-focus-border:hsl(var(--ck-color-focus-border-coordinates));--ck-color-focus-outer-shadow:#bcdefb;--ck-color-focus-disabled-shadow:rgba(119,186,248,.3);--ck-color-focus-error-shadow:rgba(255,64,31,.3);--ck-color-text:var(--ck-color-base-text);--ck-color-shadow-drop:rgba(0,0,0,.15);--ck-color-shadow-drop-active:rgba(0,0,0,.2);--ck-color-shadow-inner:rgba(0,0,0,.1);--ck-color-button-default-background:transparent;--ck-color-button-default-hover-background:#e6e6e6;--ck-color-button-default-active-background:#d9d9d9;--ck-color-button-default-active-shadow:#bfbfbf;--ck-color-button-default-disabled-background:transparent;--ck-color-button-on-background:#dedede;--ck-color-button-on-hover-background:#c4c4c4;--ck-color-button-on-active-background:#bababa;--ck-color-button-on-active-shadow:#a1a1a1;--ck-color-button-on-disabled-background:#dedede;--ck-color-button-action-background:var(--ck-color-base-action);--ck-color-button-action-hover-background:#579e3d;--ck-color-button-action-active-background:#53973b;--ck-color-button-action-active-shadow:#498433;--ck-color-button-action-disabled-background:#7ec365;--ck-color-button-action-text:var(--ck-color-base-background);--ck-color-button-save:#008a00;--ck-color-button-cancel:#db3700;--ck-color-switch-button-off-background:#b0b0b0;--ck-color-switch-button-off-hover-background:#a3a3a3;--ck-color-switch-button-on-background:var(--ck-color-button-action-background);--ck-color-switch-button-on-hover-background:#579e3d;--ck-color-switch-button-inner-background:var(--ck-color-base-background);--ck-color-switch-button-inner-shadow:rgba(0,0,0,.1);--ck-color-dropdown-panel-background:var(--ck-color-base-background);--ck-color-dropdown-panel-border:var(--ck-color-base-border);--ck-color-input-background:var(--ck-color-base-background);--ck-color-input-border:#c7c7c7;--ck-color-input-error-border:var(--ck-color-base-error);--ck-color-input-text:var(--ck-color-base-text);--ck-color-input-disabled-background:#f2f2f2;--ck-color-input-disabled-border:#c7c7c7;--ck-color-input-disabled-text:#757575;--ck-color-list-background:var(--ck-color-base-background);--ck-color-list-button-hover-background:var(--ck-color-button-default-hover-background);--ck-color-list-button-on-background:var(--ck-color-base-active);--ck-color-list-button-on-background-focus:var(--ck-color-base-active-focus);--ck-color-list-button-on-text:var(--ck-color-base-background);--ck-color-panel-background:var(--ck-color-base-background);--ck-color-panel-border:var(--ck-color-base-border);--ck-color-toolbar-background:var(--ck-color-base-foreground);--ck-color-toolbar-border:var(--ck-color-base-border);--ck-color-tooltip-background:var(--ck-color-base-text);--ck-color-tooltip-text:var(--ck-color-base-background);--ck-color-engine-placeholder-text:#707070;--ck-color-upload-bar-background:#6cb5f9;--ck-color-link-default:#0000f0;--ck-color-link-selected-background:rgba(31,176,255,.1);--ck-color-link-fake-selection:rgba(31,176,255,.3);--ck-disabled-opacity:.5;--ck-focus-outer-shadow-geometry:0 0 0 3px;--ck-focus-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-outer-shadow);--ck-focus-disabled-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-disabled-shadow);--ck-focus-error-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-error-shadow);--ck-focus-ring:1px solid var(--ck-color-focus-border);--ck-font-size-base:13px;--ck-line-height-base:1.84615;--ck-font-face:Helvetica,Arial,Tahoma,Verdana,Sans-Serif;--ck-font-size-tiny:0.7em;--ck-font-size-small:0.75em;--ck-font-size-normal:1em;--ck-font-size-big:1.4em;--ck-font-size-large:1.8em;--ck-ui-component-min-height:2.3em}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset,.ck.ck-reset_all{word-wrap:break-word;background:transparent;border:0;margin:0;padding:0;text-decoration:none;transition:none;vertical-align:middle}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset_all{border-collapse:collapse;color:var(--ck-color-text);cursor:auto;float:none;font:normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);text-align:left;white-space:nowrap}.ck-reset_all .ck-rtl :not(.ck-reset_all-excluded *){text-align:right}.ck-reset_all iframe:not(.ck-reset_all-excluded *){vertical-align:inherit}.ck-reset_all textarea:not(.ck-reset_all-excluded *){white-space:pre-wrap}.ck-reset_all input[type=password]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text]:not(.ck-reset_all-excluded *),.ck-reset_all textarea:not(.ck-reset_all-excluded *){cursor:text}.ck-reset_all input[type=password][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all textarea[disabled]:not(.ck-reset_all-excluded *){cursor:default}.ck-reset_all fieldset:not(.ck-reset_all-excluded *){border:2px groove #dfdee3;padding:10px}.ck-reset_all button:not(.ck-reset_all-excluded *)::-moz-focus-inner{border:0;padding:0}.ck[dir=rtl],.ck[dir=rtl] .ck{text-align:right}:root{--ck-border-radius:2px;--ck-inner-shadow:2px 2px 3px var(--ck-color-shadow-inner) inset;--ck-drop-shadow:0 1px 2px 1px var(--ck-color-shadow-drop);--ck-drop-shadow-active:0 3px 6px 1px var(--ck-color-shadow-drop-active);--ck-spacing-unit:0.6em;--ck-spacing-large:calc(var(--ck-spacing-unit)*1.5);--ck-spacing-standard:var(--ck-spacing-unit);--ck-spacing-medium:calc(var(--ck-spacing-unit)*0.8);--ck-spacing-small:calc(var(--ck-spacing-unit)*0.5);--ck-spacing-tiny:calc(var(--ck-spacing-unit)*0.3);--ck-spacing-extra-tiny:calc(var(--ck-spacing-unit)*0.16)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widget.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-resizer:var(--ck-color-focus-border);--ck-color-resizer-tooltip-background:#262626;--ck-color-resizer-tooltip-text:#f2f2f2;--ck-resizer-border-radius:var(--ck-border-radius);--ck-resizer-tooltip-offset:10px;--ck-resizer-tooltip-height:calc(var(--ck-spacing-small)*2 + 10px)}.ck .ck-widget,.ck .ck-widget.ck-widget_with-selection-handle{position:relative}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{position:absolute}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{display:block}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{visibility:visible}.ck .ck-size-view{background:var(--ck-color-resizer-tooltip-background);border:1px solid var(--ck-color-resizer-tooltip-text);border-radius:var(--ck-resizer-border-radius);color:var(--ck-color-resizer-tooltip-text);display:block;font-size:var(--ck-font-size-tiny);height:var(--ck-resizer-tooltip-height);line-height:var(--ck-resizer-tooltip-height);padding:0 var(--ck-spacing-small)}.ck .ck-size-view.ck-orientation-above-center,.ck .ck-size-view.ck-orientation-bottom-left,.ck .ck-size-view.ck-orientation-bottom-right,.ck .ck-size-view.ck-orientation-top-left,.ck .ck-size-view.ck-orientation-top-right{position:absolute}.ck .ck-size-view.ck-orientation-top-left{left:var(--ck-resizer-tooltip-offset);top:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-top-right{right:var(--ck-resizer-tooltip-offset);top:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-right{bottom:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-left{bottom:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-above-center{left:50%;top:calc(var(--ck-resizer-tooltip-height)*-1);transform:translate(-50%)}:root{--ck-widget-outline-thickness:3px;--ck-widget-handler-icon-size:16px;--ck-widget-handler-animation-duration:200ms;--ck-widget-handler-animation-curve:ease;--ck-color-widget-blurred-border:#dedede;--ck-color-widget-hover-border:#ffc83d;--ck-color-widget-editable-focus-background:var(--ck-color-base-background);--ck-color-widget-drag-handler-icon-color:var(--ck-color-base-background)}.ck .ck-widget{outline-color:transparent;outline-style:solid;outline-width:var(--ck-widget-outline-thickness);transition:outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_selected,.ck .ck-widget.ck-widget_selected:hover{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border)}.ck .ck-widget:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-editor__nested-editable{border:1px solid transparent}.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{background-color:var(--ck-color-widget-editable-focus-background);border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{background-color:transparent;border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0;box-sizing:border-box;left:calc(0px - var(--ck-widget-outline-thickness));opacity:0;padding:4px;top:0;transform:translateY(-100%);transition:background-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),visibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{color:var(--ck-color-widget-drag-handler-icon-color);height:var(--ck-widget-handler-icon-size);width:var(--ck-widget-handler-icon-size)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:0;transition:opacity .3s var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover .ck-icon .ck-icon__selected-indicator{opacity:1}.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{background-color:var(--ck-color-widget-hover-border);opacity:1}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{background-color:var(--ck-color-focus-border);opacity:1}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:1}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{left:auto;right:calc(0px - var(--ck-widget-outline-thickness))}.ck.ck-editor__editable.ck-read-only .ck-widget{transition:none}.ck.ck-editor__editable.ck-read-only .ck-widget:not(.ck-widget_selected){--ck-widget-outline-thickness:0px}.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover{outline-color:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle:hover,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable blockquote>.ck-widget.ck-widget_with-selection-handle:first-child,.ck.ck-editor__editable>.ck-widget.ck-widget_with-selection-handle:first-child{margin-top:calc(1em + var(--ck-widget-handler-icon-size))}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widgetresize.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck .ck-widget_with-resizer{position:relative}.ck .ck-widget__resizer{display:none;left:0;pointer-events:none;position:absolute;top:0}.ck-focused .ck-widget_with-resizer.ck-widget_selected>.ck-widget__resizer{display:block}.ck .ck-widget__resizer__handle{pointer-events:all;position:absolute}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{cursor:nwse-resize}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{cursor:nesw-resize}:root{--ck-resizer-size:10px;--ck-resizer-offset:calc(var(--ck-resizer-size)/-2 - 2px);--ck-resizer-border-width:1px}.ck .ck-widget__resizer{outline:1px solid var(--ck-color-resizer)}.ck .ck-widget__resizer__handle{background:var(--ck-color-focus-border);border:var(--ck-resizer-border-width) solid #fff;border-radius:var(--ck-resizer-border-radius);height:var(--ck-resizer-size);width:var(--ck-resizer-size)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{left:var(--ck-resizer-offset);top:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{right:var(--ck-resizer-offset);top:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right{bottom:var(--ck-resizer-offset);right:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left{bottom:var(--ck-resizer-offset);left:var(--ck-resizer-offset)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widgettypearound.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,'.ck .ck-widget .ck-widget__type-around__button{display:block;overflow:hidden;position:absolute;z-index:var(--ck-z-default)}.ck .ck-widget .ck-widget__type-around__button svg{left:50%;position:absolute;top:50%;z-index:calc(var(--ck-z-default) + 2)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_before{left:min(10%,30px);top:calc(var(--ck-widget-outline-thickness)*-.5);transform:translateY(-50%)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_after{bottom:calc(var(--ck-widget-outline-thickness)*-.5);right:min(10%,30px);transform:translateY(50%)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{content:"";display:block;left:1px;position:absolute;top:1px;z-index:calc(var(--ck-z-default) + 1)}.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:none;left:0;position:absolute;right:0}.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__fake-caret{left:calc(var(--ck-widget-outline-thickness)*-1);right:calc(var(--ck-widget-outline-thickness)*-1)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:block;top:calc(var(--ck-widget-outline-thickness)*-1 - 1px)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__fake-caret{bottom:calc(var(--ck-widget-outline-thickness)*-1 - 1px);display:block}.ck.ck-editor__editable.ck-read-only .ck-widget__type-around,.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around,.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around{display:none}:root{--ck-widget-type-around-button-size:20px;--ck-color-widget-type-around-button-active:var(--ck-color-focus-border);--ck-color-widget-type-around-button-hover:var(--ck-color-widget-hover-border);--ck-color-widget-type-around-button-blurred-editable:var(--ck-color-widget-blurred-border);--ck-color-widget-type-around-button-radar-start-alpha:0;--ck-color-widget-type-around-button-radar-end-alpha:.3;--ck-color-widget-type-around-button-icon:var(--ck-color-base-background)}.ck .ck-widget .ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button);border-radius:100px;height:var(--ck-widget-type-around-button-size);opacity:0;pointer-events:none;transition:opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);width:var(--ck-widget-type-around-button-size)}.ck .ck-widget .ck-widget__type-around__button svg{height:8px;margin-top:1px;transform:translate(-50%,-50%);transition:transform .5s ease;width:10px}.ck .ck-widget .ck-widget__type-around__button svg *{stroke-dasharray:10;stroke-dashoffset:0;fill:none;stroke:var(--ck-color-widget-type-around-button-icon);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.ck .ck-widget .ck-widget__type-around__button svg line{stroke-dasharray:7}.ck .ck-widget .ck-widget__type-around__button:hover{animation:ck-widget-type-around-button-sonar 1s ease infinite}.ck .ck-widget .ck-widget__type-around__button:hover svg polyline{animation:ck-widget-type-around-arrow-dash 2s linear}.ck .ck-widget .ck-widget__type-around__button:hover svg line{animation:ck-widget-type-around-arrow-tip-dash 2s linear}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:1;pointer-events:auto}.ck .ck-widget:not(.ck-widget_selected)>.ck-widget__type-around>.ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button-hover)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover{background:var(--ck-color-widget-type-around-button-active)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{background:linear-gradient(135deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.3));border-radius:100px;height:calc(var(--ck-widget-type-around-button-size) - 2px);width:calc(var(--ck-widget-type-around-button-size) - 2px)}.ck .ck-widget.ck-widget_with-selection-handle>.ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:20px}.ck .ck-widget .ck-widget__type-around__fake-caret{animation:ck-widget-type-around-fake-caret-pulse 1s linear infinite normal forwards;background:var(--ck-color-base-text);height:1px;outline:1px solid hsla(0,0%,100%,.5);pointer-events:none}.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_after,.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_before{outline-color:transparent}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected:hover,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{opacity:0}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:0;margin-right:20px}.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover){background:var(--ck-color-widget-type-around-button-blurred-editable)}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover) svg *{stroke:#999}@keyframes ck-widget-type-around-arrow-dash{0%{stroke-dashoffset:10}20%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-arrow-tip-dash{0%,20%{stroke-dashoffset:7}40%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-button-sonar{0%{box-shadow:0 0 0 0 hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}50%{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-end-alpha))}to{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}}@keyframes ck-widget-type-around-fake-caret-pulse{0%{opacity:1}49%{opacity:1}50%{opacity:0}99%{opacity:0}to{opacity:1}}',""]);const r=i},"./node_modules/css-loader/dist/runtime/api.js":e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var s=e(t);return t[2]?"@media ".concat(t[2]," {").concat(s,"}"):s})).join("")},t.i=function(e,s,o){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(o)for(var r=0;r<this.length;r++){var n=this[r][0];null!=n&&(i[n]=!0)}for(var a=0;a<e.length;a++){var c=[].concat(e[a]);o&&i[c[0]]||(s&&(c[2]?c[2]="".concat(s," and ").concat(c[2]):c[2]=s),t.push(c))}},t}},"./packages/ckeditor5-core/theme/icons/pilcrow.svg":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.999 2H15a1 1 0 0 1 0 2h-1.004v13a1 1 0 1 1-2 0V4H8.999v13a1 1 0 1 1-2 0v-7A4 4 0 0 1 3 6a4 4 0 0 1 3.999-4z"/></svg>'},"./packages/ckeditor5-core/theme/icons/three-vertical-dots.svg":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle cx="9.5" cy="4.5" r="1.5"/><circle cx="9.5" cy="10.5" r="1.5"/><circle cx="9.5" cy="16.5" r="1.5"/></svg>'},"./packages/ckeditor5-ui/theme/icons/dropdown-arrow.svg":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o='<svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg"><path d="M.941 4.523a.75.75 0 1 1 1.06-1.06l3.006 3.005 3.005-3.005a.75.75 0 1 1 1.06 1.06l-3.549 3.55a.75.75 0 0 1-1.168-.136L.941 4.523z"/></svg>'},"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":(e,t,s)=>{"use strict";var o,i=function(){return void 0===o&&(o=Boolean(window&&document&&document.all&&!window.atob)),o},r=function(){var e={};return function(t){if(void 0===e[t]){var s=document.querySelector(t);if(window.HTMLIFrameElement&&s instanceof window.HTMLIFrameElement)try{s=s.contentDocument.head}catch(e){s=null}e[t]=s}return e[t]}}(),n=[];function a(e){for(var t=-1,s=0;s<n.length;s++)if(n[s].identifier===e){t=s;break}return t}function c(e,t){for(var s={},o=[],i=0;i<e.length;i++){var r=e[i],c=t.base?r[0]+t.base:r[0],l=s[c]||0,d="".concat(c," ").concat(l);s[c]=l+1;var h=a(d),u={css:r[1],media:r[2],sourceMap:r[3]};-1!==h?(n[h].references++,n[h].updater(u)):n.push({identifier:d,updater:f(u,t),references:1}),o.push(d)}return o}function l(e){var t=document.createElement("style"),o=e.attributes||{};if(void 0===o.nonce){var i=s.nc;i&&(o.nonce=i)}if(Object.keys(o).forEach((function(e){t.setAttribute(e,o[e])})),"function"==typeof e.insert)e.insert(t);else{var n=r(e.insert||"head");if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(t)}return t}var d,h=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function u(e,t,s,o){var i=s?"":o.media?"@media ".concat(o.media," {").concat(o.css,"}"):o.css;if(e.styleSheet)e.styleSheet.cssText=h(t,i);else{var r=document.createTextNode(i),n=e.childNodes;n[t]&&e.removeChild(n[t]),n.length?e.insertBefore(r,n[t]):e.appendChild(r)}}function p(e,t,s){var o=s.css,i=s.media,r=s.sourceMap;if(i?e.setAttribute("media",i):e.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),e.styleSheet)e.styleSheet.cssText=o;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(o))}}var g=null,m=0;function f(e,t){var s,o,i;if(t.singleton){var r=m++;s=g||(g=l(t)),o=u.bind(null,s,r,!1),i=u.bind(null,s,r,!0)}else s=l(t),o=p.bind(null,s,t),i=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(s)};return o(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;o(e=t)}else i()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=i());var s=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var o=0;o<s.length;o++){var i=a(s[o]);n[i].references--}for(var r=c(e,t),l=0;l<s.length;l++){var d=a(s[l]);0===n[d].references&&(n[d].updater(),n.splice(d,1))}s=r}}}},"./packages/ckeditor5-utils/src/ckeditorerror.ts":(e,t,s)=>{"use strict";s.d(t,{H:()=>r,KE:()=>i,ZP:()=>o});class o extends Error{constructor(e,t,s){super(function(e,t){const s=new WeakSet,o=(e,t)=>{if("object"==typeof t&&null!==t){if(s.has(t))return`[object ${t.constructor.name}]`;s.add(t)}return t},i=t?` ${JSON.stringify(t,o)}`:"",r=n(e);return e+i+r}(e,s)),this.name="CKEditorError",this.context=t,this.data=s}is(e){return"CKEditorError"===e}static rethrowUnexpectedError(e,t){if(e.is&&e.is("CKEditorError"))throw e;const s=new o(e.message,t);throw s.stack=e.stack,s}}function i(e,t){console.warn(...a(e,t))}function r(e,t){console.error(...a(e,t))}function n(e){return`\nRead more: https://ckeditor.com/docs/ckeditor5/latest/support/error-codes.html#error-${e}`}function a(e,t){const s=n(e);return t?[e,t,s]:[e,s]}},"./packages/ckeditor5-utils/src/collection.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-utils/src/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-utils/src/uid.ts"),n=s("./packages/ckeditor5-utils/src/isiterable.ts"),a=s("./packages/ckeditor5-utils/src/mix.ts");class c{constructor(e={},t={}){const s=(0,n.Z)(e);if(s||(t=e),this._items=[],this._itemMap=new Map,this._idProperty=t.idProperty||"id",this._bindToExternalToInternalMap=new WeakMap,this._bindToInternalToExternalMap=new WeakMap,this._skippedIndexesFromExternal=[],s)for(const t of e)this._items.push(t),this._itemMap.set(this._getItemIdBeforeAdding(t),t)}get length(){return this._items.length}get first(){return this._items[0]||null}get last(){return this._items[this.length-1]||null}add(e,t){return this.addMany([e],t)}addMany(e,t){if(void 0===t)t=this._items.length;else if(t>this._items.length||t<0)throw new i.ZP("collection-add-item-invalid-index",this);let s=0;for(const o of e){const e=this._getItemIdBeforeAdding(o),i=t+s;this._items.splice(i,0,o),this._itemMap.set(e,o),this.fire("add",o,i),s++}return this.fire("change",{added:e,removed:[],index:t}),this}get(e){let t;if("string"==typeof e)t=this._itemMap.get(e);else{if("number"!=typeof e)throw new i.ZP("collection-get-invalid-arg",this);t=this._items[e]}return t||null}has(e){if("string"==typeof e)return this._itemMap.has(e);{const t=e[this._idProperty];return t&&this._itemMap.has(t)}}getIndex(e){let t;return t="string"==typeof e?this._itemMap.get(e):e,t?this._items.indexOf(t):-1}remove(e){const[t,s]=this._remove(e);return this.fire("change",{added:[],removed:[t],index:s}),t}map(e,t){return this._items.map(e,t)}find(e,t){return this._items.find(e,t)}filter(e,t){return this._items.filter(e,t)}clear(){this._bindToCollection&&(this.stopListening(this._bindToCollection),this._bindToCollection=null);const e=Array.from(this._items);for(;this.length;)this._remove(0);this.fire("change",{added:[],removed:e,index:0})}bindTo(e){if(this._bindToCollection)throw new i.ZP("collection-bind-to-rebind",this);return this._bindToCollection=e,{as:e=>{this._setUpBindToBinding((t=>new e(t)))},using:e=>{"function"==typeof e?this._setUpBindToBinding(e):this._setUpBindToBinding((t=>t[e]))}}}_setUpBindToBinding(e){const t=this._bindToCollection,s=(s,o,i)=>{const r=t._bindToCollection==this,n=t._bindToInternalToExternalMap.get(o);if(r&&n)this._bindToExternalToInternalMap.set(o,n),this._bindToInternalToExternalMap.set(n,o);else{const s=e(o);if(!s)return void this._skippedIndexesFromExternal.push(i);let r=i;for(const e of this._skippedIndexesFromExternal)i>e&&r--;for(const e of t._skippedIndexesFromExternal)r>=e&&r++;this._bindToExternalToInternalMap.set(o,s),this._bindToInternalToExternalMap.set(s,o),this.add(s,r);for(let e=0;e<t._skippedIndexesFromExternal.length;e++)r<=t._skippedIndexesFromExternal[e]&&t._skippedIndexesFromExternal[e]++}};for(const e of t)s(0,e,t.getIndex(e));this.listenTo(t,"add",s),this.listenTo(t,"remove",((e,t,s)=>{const o=this._bindToExternalToInternalMap.get(t);o&&this.remove(o),this._skippedIndexesFromExternal=this._skippedIndexesFromExternal.reduce(((e,t)=>(s<t&&e.push(t-1),s>t&&e.push(t),e)),[])}))}_getItemIdBeforeAdding(e){const t=this._idProperty;let s;if(t in e){if(s=e[t],"string"!=typeof s)throw new i.ZP("collection-add-invalid-id",this);if(this.get(s))throw new i.ZP("collection-add-item-already-exists",this)}else e[t]=s=(0,r.Z)();return s}_remove(e){let t,s,o,r=!1;const n=this._idProperty;if("string"==typeof e?(s=e,o=this._itemMap.get(s),r=!o,o&&(t=this._items.indexOf(o))):"number"==typeof e?(t=e,o=this._items[t],r=!o,o&&(s=o[n])):(o=e,s=o[n],t=this._items.indexOf(o),r=-1==t||!this._itemMap.get(s)),r)throw new i.ZP("collection-remove-404",this);this._items.splice(t,1),this._itemMap.delete(s);const a=this._bindToInternalToExternalMap.get(o);return this._bindToInternalToExternalMap.delete(o),this._bindToExternalToInternalMap.delete(a),this.fire("remove",o,t),[o,t]}[Symbol.iterator](){return this._items[Symbol.iterator]()}}(0,a.Z)(c,o.ZP);const l=c},"./packages/ckeditor5-utils/src/comparearrays.ts":(e,t,s)=>{"use strict";function o(e,t){const s=Math.min(e.length,t.length);for(let o=0;o<s;o++)if(e[o]!=t[o])return o;return e.length==t.length?"same":e.length<t.length?"prefix":"extension"}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/count.ts":(e,t,s)=>{"use strict";function o(e){let t=0;for(const s of e)t++;return t}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/diff.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/fastdiff.ts");function i(e,t,s){s=s||function(e,t){return e===t};const o=e.length,r=t.length;if(o>200||r>200||o+r>300)return i.fastDiff(e,t,s,!0);let n,a;if(r<o){const s=e;e=t,t=s,n="delete",a="insert"}else n="insert",a="delete";const c=e.length,l=t.length,d=l-c,h={},u={};function p(o){const i=(void 0!==u[o-1]?u[o-1]:-1)+1,r=void 0!==u[o+1]?u[o+1]:-1,d=i>r?-1:1;h[o+d]&&(h[o]=h[o+d].slice(0)),h[o]||(h[o]=[]),h[o].push(i>r?n:a);let p=Math.max(i,r),g=p-o;for(;g<c&&p<l&&s(e[g],t[p]);)g++,p++,h[o].push("equal");return p}let g,m=0;do{for(g=-m;g<d;g++)u[g]=p(g);for(g=d+m;g>d;g--)u[g]=p(g);u[d]=p(d),m++}while(u[d]!==l);return h[d].slice(1)}i.fastDiff=o.Z},"./packages/ckeditor5-utils/src/dom/createelement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-utils/src/isiterable.ts"),i=s("./node_modules/lodash-es/_baseGetTag.js"),r=s("./node_modules/lodash-es/isArray.js"),n=s("./node_modules/lodash-es/isObjectLike.js");const a=function(e){return"string"==typeof e||!(0,r.Z)(e)&&(0,n.Z)(e)&&"[object String]"==(0,i.Z)(e)};function c(e,t,s={},i=[]){const r=s&&s.xmlns,n=r?e.createElementNS(r,t):e.createElement(t);for(const e in s)n.setAttribute(e,s[e]);!a(i)&&(0,o.Z)(i)||(i=[i]);for(let t of i)a(t)&&(t=e.createTextNode(t)),n.appendChild(t);return n}},"./packages/ckeditor5-utils/src/dom/emittermixin.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-utils/src/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/uid.ts"),r=s("./packages/ckeditor5-utils/src/dom/isnode.ts"),n=s("./packages/ckeditor5-utils/src/dom/iswindow.ts"),a=s("./node_modules/lodash-es/assignIn.js"),c=s("./packages/ckeditor5-utils/src/mix.ts");const l=(0,a.Z)({},o.ZP,{listenTo(e,t,s,i={}){if((0,r.Z)(e)||(0,n.Z)(e)){const o={capture:!!i.useCapture,passive:!!i.usePassive},r=this._getProxyEmitter(e,o)||new d(e,o);this.listenTo(r,t,s,i)}else o.ZP.listenTo.call(this,e,t,s,i)},stopListening(e,t,s){if((0,r.Z)(e)||(0,n.Z)(e)){const o=this._getAllProxyEmitters(e);for(const e of o)this.stopListening(e,t,s)}else o.ZP.stopListening.call(this,e,t,s)},_getProxyEmitter(e,t){return(0,o.Rl)(this,h(e,t))},_getAllProxyEmitters(e){return[{capture:!1,passive:!1},{capture:!1,passive:!0},{capture:!0,passive:!1},{capture:!0,passive:!0}].map((t=>this._getProxyEmitter(e,t))).filter((e=>!!e))}});class d{constructor(e,t){(0,o.Hv)(this,h(e,t)),this._domNode=e,this._options=t}attach(e){if(this._domListeners&&this._domListeners[e])return;const t=this._createDomListener(e);this._domNode.addEventListener(e,t,this._options),this._domListeners||(this._domListeners={}),this._domListeners[e]=t}detach(e){let t;!this._domListeners[e]||(t=this._events[e])&&t.callbacks.length||this._domListeners[e].removeListener()}_addEventListener(e,t,s){this.attach(e),o.ZP._addEventListener.call(this,e,t,s)}_removeEventListener(e,t){o.ZP._removeEventListener.call(this,e,t),this.detach(e)}_createDomListener(e){const t=t=>{this.fire(e,t)};return t.removeListener=()=>{this._domNode.removeEventListener(e,t,this._options),delete this._domListeners[e]},t}}function h(e,t){let s=function(e){return e["data-ck-expando"]||(e["data-ck-expando"]=(0,i.Z)())}(e);for(const e of Object.keys(t).sort())t[e]&&(s+="-"+e);return s}(0,c.Z)(d,o.ZP)},"./packages/ckeditor5-utils/src/dom/getborderwidths.ts":(e,t,s)=>{"use strict";function o(e){const t=e.ownerDocument.defaultView.getComputedStyle(e);return{top:parseInt(t.borderTopWidth,10),right:parseInt(t.borderRightWidth,10),bottom:parseInt(t.borderBottomWidth,10),left:parseInt(t.borderLeftWidth,10)}}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/global.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o={window,document}},"./packages/ckeditor5-utils/src/dom/iscomment.ts":(e,t,s)=>{"use strict";function o(e){return e&&e.nodeType===Node.COMMENT_NODE}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/isnode.ts":(e,t,s)=>{"use strict";function o(e){if(e){if(e.defaultView)return e instanceof e.defaultView.Document;if(e.ownerDocument&&e.ownerDocument.defaultView)return e instanceof e.ownerDocument.defaultView.Node}return!1}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/isrange.ts":(e,t,s)=>{"use strict";function o(e){return"[object Range]"==Object.prototype.toString.apply(e)}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/istext.ts":(e,t,s)=>{"use strict";function o(e){return"[object Text]"==Object.prototype.toString.call(e)}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/isvisible.ts":(e,t,s)=>{"use strict";function o(e){return!!(e&&e.getClientRects&&e.getClientRects().length)}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/iswindow.ts":(e,t,s)=>{"use strict";function o(e){const t=Object.prototype.toString.apply(e);return"[object Window]"==t||"[object global]"==t}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/position.ts":(e,t,s)=>{"use strict";s.d(t,{x:()=>a});var o=s("./packages/ckeditor5-utils/src/dom/global.ts"),i=s("./packages/ckeditor5-utils/src/dom/rect.ts");var r=s("./packages/ckeditor5-utils/src/dom/getborderwidths.ts"),n=s("./node_modules/lodash-es/isFunction.js");function a({element:e,target:t,positions:s,limiter:r,fitInViewport:a,viewportOffsetConfig:c}){(0,n.Z)(t)&&(t=t()),(0,n.Z)(r)&&(r=r());const d=function(e){return e&&e.parentNode?e.offsetParent===o.Z.document.body?null:e.offsetParent:null}(e),h=new i.Z(e),u=new i.Z(t);let p;const g=a&&function(e){e=Object.assign({top:0,bottom:0,left:0,right:0},e);const t=new i.Z(o.Z.window);return t.top+=e.top,t.height-=e.top,t.bottom-=e.bottom,t.height-=e.bottom,t}(c)||null,m={targetRect:u,elementRect:h,positionedElementAncestor:d,viewportRect:g};if(r||a){const e=r&&new i.Z(r).getVisible();Object.assign(m,{limiterRect:e,viewportRect:g}),p=function(e,t){const{elementRect:s}=t,o=s.getArea(),i=e.map((e=>new l(e,t))).filter((e=>!!e.name));let r=0,n=null;for(const e of i){const{limiterIntersectionArea:t,viewportIntersectionArea:s}=e;if(t===o)return e;const i=s**2+t**2;i>r&&(r=i,n=e)}return n}(s,m)||new l(s[0],m)}else p=new l(s[0],m);return p}function c(e){const{scrollX:t,scrollY:s}=o.Z.window;return e.clone().moveBy(t,s)}class l{constructor(e,t){const s=e(t.targetRect,t.elementRect,t.viewportRect);if(!s)return;const{left:o,top:i,name:r,config:n}=s;this.name=r,this.config=n,this._positioningFunctionCorrdinates={left:o,top:i},this._options=t}get left(){return this._absoluteRect.left}get top(){return this._absoluteRect.top}get limiterIntersectionArea(){const e=this._options.limiterRect;if(e){const t=this._options.viewportRect;if(!t)return e.getIntersectionArea(this._rect);{const s=e.getIntersection(t);if(s)return s.getIntersectionArea(this._rect)}}return 0}get viewportIntersectionArea(){const e=this._options.viewportRect;return e?e.getIntersectionArea(this._rect):0}get _rect(){return this._cachedRect||(this._cachedRect=this._options.elementRect.clone().moveTo(this._positioningFunctionCorrdinates.left,this._positioningFunctionCorrdinates.top)),this._cachedRect}get _absoluteRect(){return this._cachedAbsoluteRect||(this._cachedAbsoluteRect=c(this._rect),this._options.positionedElementAncestor&&function(e,t){const s=c(new i.Z(t)),o=(0,r.Z)(t);let n=0,a=0;n-=s.left,a-=s.top,n+=t.scrollLeft,a+=t.scrollTop,n-=o.left,a-=o.top,e.moveBy(n,a)}(this._cachedAbsoluteRect,this._options.positionedElementAncestor)),this._cachedAbsoluteRect}}},"./packages/ckeditor5-utils/src/dom/rect.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-utils/src/dom/isrange.ts"),i=s("./packages/ckeditor5-utils/src/dom/iswindow.ts"),r=s("./packages/ckeditor5-utils/src/dom/getborderwidths.ts"),n=s("./packages/ckeditor5-utils/src/dom/istext.ts"),a=s("./node_modules/lodash-es/isElement.js");const c=["top","right","bottom","left","width","height"];class l{constructor(e){const t=(0,o.Z)(e);if(Object.defineProperty(this,"_source",{value:e._source||e,writable:!0,enumerable:!1}),u(e)||t)if(t){const t=l.getDomRangeRects(e);d(this,l.getBoundingRect(t))}else d(this,e.getBoundingClientRect());else if((0,i.Z)(e)){const{innerWidth:t,innerHeight:s}=e;d(this,{top:0,right:t,bottom:s,left:0,width:t,height:s})}else d(this,e)}clone(){return new l(this)}moveTo(e,t){return this.top=t,this.right=e+this.width,this.bottom=t+this.height,this.left=e,this}moveBy(e,t){return this.top+=t,this.right+=e,this.left+=e,this.bottom+=t,this}getIntersection(e){const t={top:Math.max(this.top,e.top),right:Math.min(this.right,e.right),bottom:Math.min(this.bottom,e.bottom),left:Math.max(this.left,e.left),width:0,height:0};return t.width=t.right-t.left,t.height=t.bottom-t.top,t.width<0||t.height<0?null:new l(t)}getIntersectionArea(e){const t=this.getIntersection(e);return t?t.getArea():0}getArea(){return this.width*this.height}getVisible(){const e=this._source;let t=this.clone();if(!h(e)){let s=e.parentNode||e.commonAncestorContainer;for(;s&&!h(s);){const e=new l(s),o=t.getIntersection(e);if(!o)return null;o.getArea()<t.getArea()&&(t=o),s=s.parentNode}}return t}isEqual(e){for(const t of c)if(this[t]!==e[t])return!1;return!0}contains(e){const t=this.getIntersection(e);return!(!t||!t.isEqual(e))}excludeScrollbarsAndBorders(){const e=this._source;let t,s,o;if((0,i.Z)(e))t=e.innerWidth-e.document.documentElement.clientWidth,s=e.innerHeight-e.document.documentElement.clientHeight,o=e.getComputedStyle(e.document.documentElement).direction;else{const i=(0,r.Z)(e);t=e.offsetWidth-e.clientWidth-i.left-i.right,s=e.offsetHeight-e.clientHeight-i.top-i.bottom,o=e.ownerDocument.defaultView.getComputedStyle(e).direction,this.left+=i.left,this.top+=i.top,this.right-=i.right,this.bottom-=i.bottom,this.width=this.right-this.left,this.height=this.bottom-this.top}return this.width-=t,"ltr"===o?this.right-=t:this.left+=t,this.height-=s,this.bottom-=s,this}static getDomRangeRects(e){const t=[],s=Array.from(e.getClientRects());if(s.length)for(const e of s)t.push(new l(e));else{let s=e.startContainer;(0,n.Z)(s)&&(s=s.parentNode);const o=new l(s.getBoundingClientRect());o.right=o.left,o.width=0,t.push(o)}return t}static getBoundingRect(e){const t={left:Number.POSITIVE_INFINITY,top:Number.POSITIVE_INFINITY,right:Number.NEGATIVE_INFINITY,bottom:Number.NEGATIVE_INFINITY,width:0,height:0};let s=0;for(const o of e)s++,t.left=Math.min(t.left,o.left),t.top=Math.min(t.top,o.top),t.right=Math.max(t.right,o.right),t.bottom=Math.max(t.bottom,o.bottom);return 0==s?null:(t.width=t.right-t.left,t.height=t.bottom-t.top,new l(t))}}function d(e,t){for(const s of c)e[s]=t[s]}function h(e){return!!u(e)&&e===e.ownerDocument.body}function u(e){return(0,a.Z)(e)}},"./packages/ckeditor5-utils/src/dom/resizeobserver.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/dom/global.ts");class i{constructor(e,t){i._observerInstance||i._createObserver(),this._element=e,this._callback=t,i._addElementCallback(e,t),i._observerInstance.observe(e)}destroy(){i._deleteElementCallback(this._element,this._callback)}static _addElementCallback(e,t){i._elementCallbacks||(i._elementCallbacks=new Map);let s=i._elementCallbacks.get(e);s||(s=new Set,i._elementCallbacks.set(e,s)),s.add(t)}static _deleteElementCallback(e,t){const s=i._getElementCallbacks(e);s&&(s.delete(t),s.size||(i._elementCallbacks.delete(e),i._observerInstance.unobserve(e))),i._elementCallbacks&&!i._elementCallbacks.size&&(i._observerInstance=null,i._elementCallbacks=null)}static _getElementCallbacks(e){return i._elementCallbacks?i._elementCallbacks.get(e):null}static _createObserver(){i._observerInstance=new o.Z.window.ResizeObserver((e=>{for(const t of e){const e=i._getElementCallbacks(t.target);if(e)for(const s of e)s(t)}}))}}i._observerInstance=null,i._elementCallbacks=null},"./packages/ckeditor5-utils/src/dom/scroll.ts":(e,t,s)=>{"use strict";s.d(t,{F:()=>a,m:()=>n});var o=s("./packages/ckeditor5-utils/src/dom/isrange.ts"),i=s("./packages/ckeditor5-utils/src/dom/rect.ts"),r=s("./packages/ckeditor5-utils/src/dom/istext.ts");function n({target:e,viewportOffset:t=0}){const s=g(e);let o=s,i=null;for(;o;){let r;r=m(o==s?e:i),l(r,(()=>f(e,o)));const n=f(e,o);if(c(o,n,t),o.parent!=o){if(i=o.frameElement,o=o.parent,!i)return}else o=null}}function a(e){l(m(e),(()=>new i.Z(e)))}function c(e,t,s){const o=t.clone().moveBy(0,s),r=t.clone().moveBy(0,-s),n=new i.Z(e).excludeScrollbarsAndBorders();if(![r,o].every((e=>n.contains(e)))){let{scrollX:i,scrollY:a}=e;h(r,n)?a-=n.top-t.top+s:d(o,n)&&(a+=t.bottom-n.bottom+s),u(t,n)?i-=n.left-t.left+s:p(t,n)&&(i+=t.right-n.right+s),e.scrollTo(i,a)}}function l(e,t){const s=g(e);let o,r;for(;e!=s.document.body;)r=t(),o=new i.Z(e).excludeScrollbarsAndBorders(),o.contains(r)||(h(r,o)?e.scrollTop-=o.top-r.top:d(r,o)&&(e.scrollTop+=r.bottom-o.bottom),u(r,o)?e.scrollLeft-=o.left-r.left:p(r,o)&&(e.scrollLeft+=r.right-o.right)),e=e.parentNode}function d(e,t){return e.bottom>t.bottom}function h(e,t){return e.top<t.top}function u(e,t){return e.left<t.left}function p(e,t){return e.right>t.right}function g(e){return(0,o.Z)(e)?e.startContainer.ownerDocument.defaultView:e.ownerDocument.defaultView}function m(e){if((0,o.Z)(e)){let t=e.commonAncestorContainer;return(0,r.Z)(t)&&(t=t.parentNode),t}return e.parentNode}function f(e,t){const s=g(e),o=new i.Z(e);if(s===t)return o;{let e=s;for(;e!=t;){const t=e.frameElement,s=new i.Z(t).excludeScrollbarsAndBorders();o.moveBy(s.left,s.top),e=e.parent}}return o}},"./packages/ckeditor5-utils/src/dom/setdatainelement.ts":(e,t,s)=>{"use strict";function o(e,t){e instanceof HTMLTextAreaElement&&(e.value=t),e.innerHTML=t}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/tounit.ts":(e,t,s)=>{"use strict";function o(e){return t=>t+e}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/emittermixin.ts":(e,t,s)=>{"use strict";s.d(t,{Hv:()=>p,Rl:()=>u,ZP:()=>h});var o=s("./packages/ckeditor5-utils/src/eventinfo.ts"),i=s("./packages/ckeditor5-utils/src/uid.ts"),r=s("./packages/ckeditor5-utils/src/priorities.ts"),n=s("./packages/ckeditor5-utils/src/inserttopriorityarray.ts"),a=(s("./packages/ckeditor5-utils/src/version.ts"),s("./packages/ckeditor5-utils/src/ckeditorerror.ts"));const c=Symbol("listeningTo"),l=Symbol("emitterId"),d=Symbol("delegations"),h={on(e,t,s={}){this.listenTo(this,e,t,s)},once(e,t,s){let o=!1;this.listenTo(this,e,((e,...s)=>{o||(o=!0,e.off(),t.call(this,e,...s))}),s)},off(e,t){this.stopListening(this,e,t)},listenTo(e,t,s,o={}){let i,r;this[c]||(this[c]={});const n=this[c];g(e)||p(e);const a=g(e);(i=n[a])||(i=n[a]={emitter:e,callbacks:{}}),(r=i.callbacks[t])||(r=i.callbacks[t]=[]),r.push(s),function(e,t,s,o,i){t._addEventListener?t._addEventListener(s,o,i):e._addEventListener.call(t,s,o,i)}(this,e,t,s,o)},stopListening(e,t,s){const o=this[c];let i=e&&g(e);const r=o&&i?o[i]:void 0,n=r&&t?r.callbacks[t]:void 0;if(!(!o||e&&!r||t&&!n))if(s){b(this,e,t,s);-1!==n.indexOf(s)&&(1===n.length?delete r.callbacks[t]:b(this,e,t,s))}else if(n){for(;s=n.pop();)b(this,e,t,s);delete r.callbacks[t]}else if(r){for(t in r.callbacks)this.stopListening(e,t);delete o[i]}else{for(i in o)this.stopListening(o[i].emitter);delete this[c]}},fire(e,...t){try{const s=e instanceof o.Z?e:new o.Z(this,e),i=s.name;let r=k(this,i);if(s.path.push(this),r){const e=[s,...t];r=Array.from(r);for(let t=0;t<r.length&&(r[t].callback.apply(this,e),s.off.called&&(delete s.off.called,this._removeEventListener(i,r[t].callback)),!s.stop.called);t++);}const n=this[d];if(n){const e=n.get(i),o=n.get("*");e&&_(e,s,t),o&&_(o,s,t)}return s.return}catch(e){a.ZP.rethrowUnexpectedError(e,this)}},delegate(...e){return{to:(t,s)=>{this[d]||(this[d]=new Map),e.forEach((e=>{const o=this[d].get(e);o?o.set(t,s):this[d].set(e,new Map([[t,s]]))}))}}},stopDelegating(e,t){if(this[d])if(e)if(t){const s=this[d].get(e);s&&s.delete(t)}else this[d].delete(e);else this[d].clear()},_addEventListener(e,t,s){!function(e,t){const s=m(e);if(s[t])return;let o=t,i=null;const r=[];for(;""!==o&&!s[o];)s[o]={callbacks:[],childEvents:[]},r.push(s[o]),i&&s[o].childEvents.push(i),i=o,o=o.substr(0,o.lastIndexOf(":"));if(""!==o){for(const e of r)e.callbacks=s[o].callbacks.slice();s[o].childEvents.push(i)}}(this,e);const o=f(this,e),i={callback:t,priority:r.Z.get(s.priority)};for(const e of o)(0,n.Z)(e,i)},_removeEventListener(e,t){const s=f(this,e);for(const e of s)for(let s=0;s<e.length;s++)e[s].callback==t&&(e.splice(s,1),s--)}};function u(e,t){const s=e[c];return s&&s[t]?s[t].emitter:null}function p(e,t){e[l]||(e[l]=t||(0,i.Z)())}function g(e){return e[l]}function m(e){return e._events||Object.defineProperty(e,"_events",{value:{}}),e._events}function f(e,t){const s=m(e)[t];if(!s)return[];let o=[s.callbacks];for(let t=0;t<s.childEvents.length;t++){const i=f(e,s.childEvents[t]);o=o.concat(i)}return o}function k(e,t){let s;return e._events&&(s=e._events[t])&&s.callbacks.length?s.callbacks:t.indexOf(":")>-1?k(e,t.substr(0,t.lastIndexOf(":"))):null}function _(e,t,s){for(let[i,r]of e){r?"function"==typeof r&&(r=r(t.name)):r=t.name;const e=new o.Z(t.source,r);e.path=[...t.path],i.fire(e,...s)}}function b(e,t,s,o){t._removeEventListener?t._removeEventListener(s,o):e._removeEventListener.call(t,s,o)}},"./packages/ckeditor5-utils/src/env.ts":(e,t,s)=>{"use strict";s.d(t,{ZP:()=>r});const o=navigator.userAgent.toLowerCase(),i={isMac:n(o),isWindows:function(e){return e.indexOf("windows")>-1}(o),isGecko:function(e){return!!e.match(/gecko\/\d+/)}(o),isSafari:function(e){return e.indexOf(" applewebkit/")>-1&&-1===e.indexOf("chrome")}(o),isiOS:function(e){return!!e.match(/iphone|ipad/i)||n(e)&&navigator.maxTouchPoints>0}(o),isAndroid:function(e){return e.indexOf("android")>-1}(o),isBlink:function(e){return e.indexOf("chrome/")>-1&&e.indexOf("edge/")<0}(o),features:{isRegExpUnicodePropertySupported:function(){let e=!1;try{e=0==="ć".search(new RegExp("[\\p{L}]","u"))}catch(e){}return e}()}},r=i;function n(e){return e.indexOf("macintosh")>-1}},"./packages/ckeditor5-utils/src/eventinfo.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});const o=function(){return function e(){e.called=!0}};class i{constructor(e,t){this.source=e,this.name=t,this.path=[],this.stop=o(),this.off=o()}}},"./packages/ckeditor5-utils/src/fastdiff.ts":(e,t,s)=>{"use strict";function o(e,t,s,o=!1){s=s||function(e,t){return e===t};const n=Array.isArray(e)?e:Array.prototype.slice.call(e),a=Array.isArray(t)?t:Array.prototype.slice.call(t),c=function(e,t,s){const o=i(e,t,s);if(-1===o)return{firstIndex:-1,lastIndexOld:-1,lastIndexNew:-1};const n=r(e,o),a=r(t,o),c=i(n,a,s),l=e.length-c,d=t.length-c;return{firstIndex:o,lastIndexOld:l,lastIndexNew:d}}(n,a,s);return o?function(e,t){const{firstIndex:s,lastIndexOld:o,lastIndexNew:i}=e;if(-1===s)return Array(t).fill("equal");let r=[];s>0&&(r=r.concat(Array(s).fill("equal")));i-s>0&&(r=r.concat(Array(i-s).fill("insert")));o-s>0&&(r=r.concat(Array(o-s).fill("delete")));i<t&&(r=r.concat(Array(t-i).fill("equal")));return r}(c,a.length):function(e,t){const s=[],{firstIndex:o,lastIndexOld:i,lastIndexNew:r}=t;r-o>0&&s.push({index:o,type:"insert",values:e.slice(o,r)});i-o>0&&s.push({index:o+(r-o),type:"delete",howMany:i-o});return s}(a,c)}function i(e,t,s){for(let o=0;o<Math.max(e.length,t.length);o++)if(void 0===e[o]||void 0===t[o]||!s(e[o],t[o]))return o;return-1}function r(e,t){return e.slice(t).reverse()}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/first.ts":(e,t,s)=>{"use strict";function o(e){const t=e.next();return t.done?null:t.value}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/focustracker.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/observablemixin.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-utils/src/mix.ts");class a{constructor(){this.set("isFocused",!1),this.set("focusedElement",null),this._elements=new Set,this._nextEventLoopTimeout=null}add(e){if(this._elements.has(e))throw new r.ZP("focustracker-add-element-already-exist",this);this.listenTo(e,"focus",(()=>this._focus(e)),{useCapture:!0}),this.listenTo(e,"blur",(()=>this._blur()),{useCapture:!0}),this._elements.add(e)}remove(e){e===this.focusedElement&&this._blur(),this._elements.has(e)&&(this.stopListening(e),this._elements.delete(e))}destroy(){this.stopListening()}_focus(e){clearTimeout(this._nextEventLoopTimeout),this.focusedElement=e,this.isFocused=!0}_blur(){clearTimeout(this._nextEventLoopTimeout),this._nextEventLoopTimeout=setTimeout((()=>{this.focusedElement=null,this.isFocused=!1}),0)}}(0,n.Z)(a,o.Z),(0,n.Z)(a,i.Z);const c=a},"./packages/ckeditor5-utils/src/index.ts":(e,t,s)=>{"use strict";s.d(t,{Bb:()=>c.ZP,FE:()=>Z.Z,Xu:()=>h.Z,a6:()=>l,ln:()=>n.ZP,Rh:()=>x.Z,VD:()=>A.Z,go:()=>y.Z,Re:()=>a.Z,UL:()=>g.Z,do:()=>m.Z,az:()=>d.Z,Hg:()=>i.Z,OB:()=>o.ZP,Ps:()=>P.Z,Cq:()=>w.Cq,yy:()=>p,XU:()=>w.XU,j9:()=>v.j,mA:()=>w.mA,CO:()=>u.Z,dj:()=>w.dj,Zt:()=>w.Zt,pn:()=>_.Z,Do:()=>w.Do,H:()=>c.H,KE:()=>c.KE,CD:()=>r.Z,Zz:()=>w.Zz,tA:()=>C.Z,F0:()=>b.F,mR:()=>b.m,jS:()=>f.Z,qo:()=>j.Z,qL:()=>T.Z,nn:()=>k.Z,hQ:()=>E.Z,i8:()=>S.Z});var o=s("./packages/ckeditor5-utils/src/env.ts"),i=s("./packages/ckeditor5-utils/src/diff.ts"),r=s("./packages/ckeditor5-utils/src/mix.ts"),n=s("./packages/ckeditor5-utils/src/emittermixin.ts"),a=s("./packages/ckeditor5-utils/src/observablemixin.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class l{constructor(){this._replacedElements=[]}replace(e,t){this._replacedElements.push({element:e,newElement:t}),e.style.display="none",t&&e.parentNode.insertBefore(t,e.nextSibling)}restore(){this._replacedElements.forEach((({element:e,newElement:t})=>{e.style.display="",t&&t.remove()})),this._replacedElements=[]}}var d=s("./packages/ckeditor5-utils/src/dom/createelement.ts"),h=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),u=s("./packages/ckeditor5-utils/src/dom/global.ts");function p(e){return e instanceof HTMLTextAreaElement?e.value:e.innerHTML}var g=s("./packages/ckeditor5-utils/src/dom/rect.ts"),m=s("./packages/ckeditor5-utils/src/dom/resizeobserver.ts"),f=s("./packages/ckeditor5-utils/src/dom/setdatainelement.ts"),k=s("./packages/ckeditor5-utils/src/dom/tounit.ts"),_=s("./packages/ckeditor5-utils/src/dom/isvisible.ts"),b=s("./packages/ckeditor5-utils/src/dom/scroll.ts"),w=s("./packages/ckeditor5-utils/src/keyboard.ts"),v=s("./packages/ckeditor5-utils/src/language.ts"),y=s("./packages/ckeditor5-utils/src/locale.ts"),Z=s("./packages/ckeditor5-utils/src/collection.ts"),P=s("./packages/ckeditor5-utils/src/first.ts"),x=s("./packages/ckeditor5-utils/src/focustracker.ts"),A=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),j=s("./packages/ckeditor5-utils/src/toarray.ts"),T=s("./packages/ckeditor5-utils/src/tomap.ts"),C=s("./packages/ckeditor5-utils/src/priorities.ts"),E=s("./packages/ckeditor5-utils/src/uid.ts"),S=s("./packages/ckeditor5-utils/src/version.ts")},"./packages/ckeditor5-utils/src/inserttopriorityarray.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/priorities.ts");function i(e,t){const s=o.Z.get(t.priority);for(let i=0;i<e.length;i++)if(o.Z.get(e[i].priority)<s)return void e.splice(i,0,t);e.push(t)}},"./packages/ckeditor5-utils/src/isiterable.ts":(e,t,s)=>{"use strict";function o(e){return!(!e||!e[Symbol.iterator])}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/keyboard.ts":(e,t,s)=>{"use strict";s.d(t,{Cq:()=>l,Do:()=>a,XU:()=>h,Zt:()=>g,Zz:()=>d,dj:()=>u,mA:()=>p});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/env.ts");const r={ctrl:"⌃",cmd:"⌘",alt:"⌥",shift:"⇧"},n={ctrl:"Ctrl+",alt:"Alt+",shift:"Shift+"},a=function(){const e={arrowleft:37,arrowup:38,arrowright:39,arrowdown:40,backspace:8,delete:46,enter:13,space:32,esc:27,tab:9,ctrl:1114112,shift:2228224,alt:4456448,cmd:8912896};for(let t=65;t<=90;t++){const s=String.fromCharCode(t);e[s.toLowerCase()]=t}for(let t=48;t<=57;t++)e[t-48]=t;for(let t=112;t<=123;t++)e["f"+(t-111)]=t;for(const t of"`-=[];',./\\")e[t]=t.charCodeAt(0);return e}(),c=Object.fromEntries(Object.entries(a).map((([e,t])=>[t,e.charAt(0).toUpperCase()+e.slice(1)])));function l(e){let t;if("string"==typeof e){if(t=a[e.toLowerCase()],!t)throw new o.ZP("keyboard-unknown-key",null,{key:e})}else t=e.keyCode+(e.altKey?a.alt:0)+(e.ctrlKey?a.ctrl:0)+(e.shiftKey?a.shift:0)+(e.metaKey?a.cmd:0);return t}function d(e){return"string"==typeof e&&(e=function(e){return e.split("+").map((e=>e.trim()))}(e)),e.map((e=>"string"==typeof e?function(e){if(e.endsWith("!"))return l(e.slice(0,-1));const t=l(e);return i.ZP.isMac&&t==a.ctrl?a.cmd:t}(e):e)).reduce(((e,t)=>t+e),0)}function h(e){let t=d(e);return Object.entries(i.ZP.isMac?r:n).reduce(((e,[s,o])=>(0!=(t&a[s])&&(t&=~a[s],e+=o),e)),"")+(t?c[t]:"")}function u(e){return e==a.arrowright||e==a.arrowleft||e==a.arrowup||e==a.arrowdown}function p(e,t){const s="ltr"===t;switch(e){case a.arrowleft:return s?"left":"right";case a.arrowright:return s?"right":"left";case a.arrowup:return"up";case a.arrowdown:return"down"}}function g(e,t){const s=p(e,t);return"down"===s||"right"===s}},"./packages/ckeditor5-utils/src/keystrokehandler.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/keyboard.ts");class r{constructor(){this._listener=Object.create(o.Z)}listenTo(e){this._listener.listenTo(e,"keydown",((e,t)=>{this._listener.fire("_keydown:"+(0,i.Cq)(t),t)}))}set(e,t,s={}){const o=(0,i.Zz)(e),r=s.priority;this._listener.listenTo(this._listener,"_keydown:"+o,((e,s)=>{t(s,(()=>{s.preventDefault(),s.stopPropagation(),e.stop()})),e.return=!0}),{priority:r})}press(e){return!!this._listener.fire("_keydown:"+(0,i.Cq)(e),e)}destroy(){this._listener.stopListening()}}},"./packages/ckeditor5-utils/src/language.ts":(e,t,s)=>{"use strict";s.d(t,{j:()=>i});const o=["ar","ara","fa","per","fas","he","heb","ku","kur","ug","uig"];function i(e){return o.includes(e)?"rtl":"ltr"}},"./packages/ckeditor5-utils/src/locale.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-utils/src/toarray.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");function r(e,t,s=1){if("number"!=typeof s)throw new i.ZP("translation-service-quantity-not-a-number",null,{quantity:s});const o=Object.keys(window.CKEDITOR_TRANSLATIONS).length;1===o&&(e=Object.keys(window.CKEDITOR_TRANSLATIONS)[0]);const r=t.id||t.string;if(0===o||!function(e,t){return!!window.CKEDITOR_TRANSLATIONS[e]&&!!window.CKEDITOR_TRANSLATIONS[e].dictionary[t]}(e,r))return 1!==s?t.plural:t.string;const n=window.CKEDITOR_TRANSLATIONS[e].dictionary,a=window.CKEDITOR_TRANSLATIONS[e].getPluralForm||(e=>1===e?0:1),c=n[r];if("string"==typeof c)return c;return c[Number(a(s))]}window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={});var n=s("./packages/ckeditor5-utils/src/language.ts");class a{constructor(e={}){this.uiLanguage=e.uiLanguage||"en",this.contentLanguage=e.contentLanguage||this.uiLanguage,this.uiLanguageDirection=(0,n.j)(this.uiLanguage),this.contentLanguageDirection=(0,n.j)(this.contentLanguage),this.t=(e,t)=>this._t(e,t)}get language(){return console.warn("locale-deprecated-language-property: The Locale#language property has been deprecated and will be removed in the near future. Please use #uiLanguage and #contentLanguage properties instead."),this.uiLanguage}_t(e,t=[]){t=(0,o.Z)(t),"string"==typeof e&&(e={string:e});const s=!!e.plural?t[0]:1;return function(e,t){return e.replace(/%(\d+)/g,((e,s)=>s<t.length?t[s]:e))}(r(this.uiLanguage,e,s),t)}}},"./packages/ckeditor5-utils/src/mix.ts":(e,t,s)=>{"use strict";function o(e,...t){t.forEach((t=>{const s=Object.getOwnPropertyNames(t),o=Object.getOwnPropertySymbols(t);s.concat(o).forEach((s=>{if(s in e.prototype)return;const o=Object.getOwnPropertyDescriptor(t,s);o.enumerable=!1,Object.defineProperty(e.prototype,s,o)}))}))}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/observablemixin.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./packages/ckeditor5-utils/src/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./node_modules/lodash-es/isObject.js");const n=Symbol("observableProperties"),a=Symbol("boundObservables"),c=Symbol("boundProperties"),l=Symbol("decoratedMethods"),d=Symbol("decoratedOriginal"),h={set(e,t){if((0,r.Z)(e))return void Object.keys(e).forEach((t=>{this.set(t,e[t])}),this);p(this);const s=this[n];if(e in this&&!s.has(e))throw new i.ZP("observable-set-cannot-override",this);Object.defineProperty(this,e,{enumerable:!0,configurable:!0,get:()=>s.get(e),set(t){const o=s.get(e);let i=this.fire("set:"+e,e,t,o);void 0===i&&(i=t),o===i&&s.has(e)||(s.set(e,i),this.fire("change:"+e,e,i,o))}}),this[e]=t},bind(...e){if(!e.length||!f(e))throw new i.ZP("observable-bind-wrong-properties",this);if(new Set(e).size!==e.length)throw new i.ZP("observable-bind-duplicate-properties",this);p(this);const t=this[c];e.forEach((e=>{if(t.has(e))throw new i.ZP("observable-bind-rebind",this)}));const s=new Map;return e.forEach((e=>{const o={property:e,to:[]};t.set(e,o),s.set(e,o)})),{to:g,toMany:m,_observable:this,_bindProperties:e,_to:[],_bindings:s}},unbind(...e){if(!this[n])return;const t=this[c],s=this[a];if(e.length){if(!f(e))throw new i.ZP("observable-unbind-wrong-properties",this);e.forEach((e=>{const o=t.get(e);o&&(o.to.forEach((([e,t])=>{const i=s.get(e),r=i[t];r.delete(o),r.size||delete i[t],Object.keys(i).length||(s.delete(e),this.stopListening(e,"change"))})),t.delete(e))}))}else s.forEach(((e,t)=>{this.stopListening(t,"change")})),s.clear(),t.clear()},decorate(e){p(this);const t=this[e];if(!t)throw new i.ZP("observablemixin-cannot-decorate-undefined",this,{object:this,methodName:e});this.on(e,((e,s)=>{e.return=t.apply(this,s)})),this[e]=function(...t){return this.fire(e,t)},this[e][d]=t,this[l]||(this[l]=[]),this[l].push(e)},...o.ZP};h.stopListening=function(e,t,s){if(!e&&this[l]){for(const e of this[l])this[e]=this[e][d];delete this[l]}o.ZP.stopListening.call(this,e,t,s)};const u=h;function p(e){e[n]||(Object.defineProperty(e,n,{value:new Map}),Object.defineProperty(e,a,{value:new Map}),Object.defineProperty(e,c,{value:new Map}))}function g(...e){const t=function(...e){if(!e.length)throw new i.ZP("observable-bind-to-parse-error",null);const t={to:[]};let s;"function"==typeof e[e.length-1]&&(t.callback=e.pop());return e.forEach((e=>{if("string"==typeof e)s.properties.push(e);else{if("object"!=typeof e)throw new i.ZP("observable-bind-to-parse-error",null);s={observable:e,properties:[]},t.to.push(s)}})),t}(...e),s=Array.from(this._bindings.keys()),o=s.length;if(!t.callback&&t.to.length>1)throw new i.ZP("observable-bind-to-no-callback",this);if(o>1&&t.callback)throw new i.ZP("observable-bind-to-extra-callback",this);var r;t.to.forEach((e=>{if(e.properties.length&&e.properties.length!==o)throw new i.ZP("observable-bind-to-properties-length",this);e.properties.length||(e.properties=this._bindProperties)})),this._to=t.to,t.callback&&(this._bindings.get(s[0]).callback=t.callback),r=this._observable,this._to.forEach((e=>{const t=r[a];let s;t.get(e.observable)||r.listenTo(e.observable,"change",((o,i)=>{s=t.get(e.observable)[i],s&&s.forEach((e=>{k(r,e.property)}))}))})),function(e){let t;e._bindings.forEach(((s,o)=>{e._to.forEach((i=>{t=i.properties[s.callback?0:e._bindProperties.indexOf(o)],s.to.push([i.observable,t]),function(e,t,s,o){const i=e[a],r=i.get(s),n=r||{};n[o]||(n[o]=new Set);n[o].add(t),r||i.set(s,n)}(e._observable,s,i.observable,t)}))}))}(this),this._bindProperties.forEach((e=>{k(this._observable,e)}))}function m(e,t,s){if(this._bindings.size>1)throw new i.ZP("observable-bind-to-many-not-one-binding",this);this.to(...function(e,t){const s=e.map((e=>[e,t]));return Array.prototype.concat.apply([],s)}(e,t),s)}function f(e){return e.every((e=>"string"==typeof e))}function k(e,t){const s=e[c].get(t);let o;s.callback?o=s.callback.apply(e,s.to.map((e=>e[0][e[1]]))):(o=s.to[0],o=o[0][o[1]]),Object.prototype.hasOwnProperty.call(e,t)?e[t]=o:e.set(t,o)}},"./packages/ckeditor5-utils/src/priorities.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o={get(e="normal"){return"number"!=typeof e?this[e]||this.normal:e},highest:1e5,high:1e3,normal:0,low:-1e3,lowest:-1e5}},"./packages/ckeditor5-utils/src/toarray.ts":(e,t,s)=>{"use strict";function o(e){return Array.isArray(e)?e:[e]}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/tomap.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/isiterable.ts");function i(e){return(0,o.Z)(e)?new Map(e):function(e){const t=new Map;for(const s in e)t.set(s,e[s]);return t}(e)}},"./packages/ckeditor5-utils/src/uid.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});const o=new Array(256).fill("").map(((e,t)=>("0"+t.toString(16)).slice(-2)));function i(){const e=4294967296*Math.random()>>>0,t=4294967296*Math.random()>>>0,s=4294967296*Math.random()>>>0,i=4294967296*Math.random()>>>0;return"e"+o[e>>0&255]+o[e>>8&255]+o[e>>16&255]+o[e>>24&255]+o[t>>0&255]+o[t>>8&255]+o[t>>16&255]+o[t>>24&255]+o[s>>0&255]+o[s>>8&255]+o[s>>16&255]+o[s>>24&255]+o[i>>0&255]+o[i>>8&255]+o[i>>16&255]+o[i>>24&255]}},"./packages/ckeditor5-utils/src/version.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");const i="35.0.1",r=i,n="object"==typeof window?window:s.g;if(n.CKEDITOR_VERSION)throw new o.ZP("ckeditor-duplicated-modules",null);n.CKEDITOR_VERSION=i},"./packages/ckeditor5-core/src/command.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/observablemixin.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts");class r{constructor(e){this.editor=e,this.set("value",void 0),this.set("isEnabled",!1),this.affectsData=!0,this._disableStack=new Set,this.decorate("execute"),this.listenTo(this.editor.model.document,"change",(()=>{this.refresh()})),this.on("execute",(e=>{this.isEnabled||e.stop()}),{priority:"high"}),this.listenTo(e,"change:isReadOnly",((e,t,s)=>{s&&this.affectsData?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")}))}refresh(){this.isEnabled=!0}forceDisabled(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",n,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",n),this.refresh())}execute(){}destroy(){this.stopListening()}}function n(e){e.return=!1,e.stop()}(0,i.Z)(r,o.Z)},"./packages/ckeditor5-core/src/contextplugin.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/observablemixin.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts");class r{constructor(e){this.context=e}destroy(){this.stopListening()}static get isContextPlugin(){return!0}}(0,i.Z)(r,o.Z)},"./packages/ckeditor5-core/src/pendingactions.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-core/src/contextplugin.js"),i=s("./packages/ckeditor5-utils/src/observablemixin.ts"),r=s("./packages/ckeditor5-utils/src/collection.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class a extends o.Z{static get pluginName(){return"PendingActions"}init(){this.set("hasAny",!1),this._actions=new r.Z({idProperty:"_id"}),this._actions.delegate("add","remove").to(this)}add(e){if("string"!=typeof e)throw new n.ZP("pendingactions-add-invalid-message",this);const t=Object.create(i.Z);return t.set("message",e),this._actions.add(t),this.hasAny=!0,t}remove(e){this._actions.remove(e),this.hasAny=!!this._actions.length}get first(){return this._actions.get(0)}[Symbol.iterator](){return this._actions[Symbol.iterator]()}}},"./packages/ckeditor5-core/src/plugin.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/observablemixin.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts");class r{constructor(e){this.editor=e,this.set("isEnabled",!0),this._disableStack=new Set}forceDisabled(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",n,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",n),this.isEnabled=!0)}destroy(){this.stopListening()}static get isContextPlugin(){return!1}}function n(e){e.return=!1,e.stop()}(0,i.Z)(r,o.Z)},"./packages/ckeditor5-engine/src/controller/datacontroller.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Z});var o=s("./packages/ckeditor5-utils/src/mix.ts"),i=s("./packages/ckeditor5-utils/src/observablemixin.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-engine/src/conversion/mapper.js"),a=s("./packages/ckeditor5-engine/src/conversion/downcastdispatcher.js"),c=s("./packages/ckeditor5-engine/src/conversion/downcasthelpers.js"),l=s("./node_modules/lodash-es/isArray.js");class d{constructor(){this._consumables=new Map}add(e,t){let s;e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!0):(this._consumables.has(e)?s=this._consumables.get(e):(s=new h(e),this._consumables.set(e,s)),s.add(t))}test(e,t){const s=this._consumables.get(e);return void 0===s?null:e.is("$text")||e.is("documentFragment")?s:s.test(t)}consume(e,t){return!!this.test(e,t)&&(e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!1):this._consumables.get(e).consume(t),!0)}revert(e,t){const s=this._consumables.get(e);void 0!==s&&(e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!0):s.revert(t))}static consumablesFromElement(e){const t={element:e,name:!0,attributes:[],classes:[],styles:[]},s=e.getAttributeKeys();for(const e of s)"style"!=e&&"class"!=e&&t.attributes.push(e);const o=e.getClassNames();for(const e of o)t.classes.push(e);const i=e.getStyleNames();for(const e of i)t.styles.push(e);return t}static createFrom(e,t){if(t||(t=new d(e)),e.is("$text"))return t.add(e),t;e.is("element")&&t.add(e,d.consumablesFromElement(e)),e.is("documentFragment")&&t.add(e);for(const s of e.getChildren())t=d.createFrom(s,t);return t}}class h{constructor(e){this.element=e,this._canConsumeName=null,this._consumables={attributes:new Map,styles:new Map,classes:new Map}}add(e){e.name&&(this._canConsumeName=!0);for(const t in this._consumables)t in e&&this._add(t,e[t])}test(e){if(e.name&&!this._canConsumeName)return this._canConsumeName;for(const t in this._consumables)if(t in e){const s=this._test(t,e[t]);if(!0!==s)return s}return!0}consume(e){e.name&&(this._canConsumeName=!1);for(const t in this._consumables)t in e&&this._consume(t,e[t])}revert(e){e.name&&(this._canConsumeName=!0);for(const t in this._consumables)t in e&&this._revert(t,e[t])}_add(e,t){const s=(0,l.Z)(t)?t:[t],o=this._consumables[e];for(const t of s){if("attributes"===e&&("class"===t||"style"===t))throw new r.ZP("viewconsumable-invalid-attribute",this);if(o.set(t,!0),"styles"===e)for(const e of this.element.document.stylesProcessor.getRelatedStyles(t))o.set(e,!0)}}_test(e,t){const s=(0,l.Z)(t)?t:[t],o=this._consumables[e];for(const t of s)if("attributes"!==e||"class"!==t&&"style"!==t){const e=o.get(t);if(void 0===e)return null;if(!e)return!1}else{const e="class"==t?"classes":"styles",s=this._test(e,[...this._consumables[e].keys()]);if(!0!==s)return s}return!0}_consume(e,t){const s=(0,l.Z)(t)?t:[t],o=this._consumables[e];for(const t of s)if("attributes"!==e||"class"!==t&&"style"!==t){if(o.set(t,!1),"styles"==e)for(const e of this.element.document.stylesProcessor.getRelatedStyles(t))o.set(e,!1)}else{const e="class"==t?"classes":"styles";this._consume(e,[...this._consumables[e].keys()])}}_revert(e,t){const s=(0,l.Z)(t)?t:[t],o=this._consumables[e];for(const t of s)if("attributes"!==e||"class"!==t&&"style"!==t){!1===o.get(t)&&o.set(t,!0)}else{const e="class"==t?"classes":"styles";this._revert(e,[...this._consumables[e].keys()])}}}var u=s("./packages/ckeditor5-engine/src/model/range.js"),p=s("./packages/ckeditor5-engine/src/model/position.js"),g=s("./packages/ckeditor5-engine/src/model/schema.js"),m=s("./packages/ckeditor5-engine/src/model/utils/autoparagraphing.js"),f=s("./packages/ckeditor5-utils/src/emittermixin.ts");class k{constructor(e={}){this._splitParts=new Map,this._cursorParents=new Map,this._modelCursor=null,this._emptyElementsToKeep=new Set,this.conversionApi=Object.assign({},e),this.conversionApi.convertItem=this._convertItem.bind(this),this.conversionApi.convertChildren=this._convertChildren.bind(this),this.conversionApi.safeInsert=this._safeInsert.bind(this),this.conversionApi.updateConversionResult=this._updateConversionResult.bind(this),this.conversionApi.splitToAllowedParent=this._splitToAllowedParent.bind(this),this.conversionApi.getSplitParts=this._getSplitParts.bind(this),this.conversionApi.keepEmptyElement=this._keepEmptyElement.bind(this)}convert(e,t,s=["$root"]){this.fire("viewCleanup",e),this._modelCursor=function(e,t){let s;for(const o of new g.G(e)){const e={};for(const t of o.getAttributeKeys())e[t]=o.getAttribute(t);const i=t.createElement(o.name,e);s&&t.append(i,s),s=p.ZP._createAt(i,0)}return s}(s,t),this.conversionApi.writer=t,this.conversionApi.consumable=d.createFrom(e),this.conversionApi.store={};const{modelRange:o}=this._convertItem(e,this._modelCursor),i=t.createDocumentFragment();if(o){this._removeEmptyElements();for(const e of Array.from(this._modelCursor.parent.getChildren()))t.append(e,i);i.markers=function(e,t){const s=new Set,o=new Map,i=u.Z._createIn(e).getItems();for(const e of i)"$marker"==e.name&&s.add(e);for(const e of s){const s=e.getAttribute("data-name"),i=t.createPositionBefore(e);o.has(s)?o.get(s).end=i.clone():o.set(s,new u.Z(i.clone())),t.remove(e)}return o}(i,t)}return this._modelCursor=null,this._splitParts.clear(),this._cursorParents.clear(),this._emptyElementsToKeep.clear(),this.conversionApi.writer=null,this.conversionApi.store=null,i}_convertItem(e,t){const s=Object.assign({viewItem:e,modelCursor:t,modelRange:null});if(e.is("element")?this.fire("element:"+e.name,s,this.conversionApi):e.is("$text")?this.fire("text",s,this.conversionApi):this.fire("documentFragment",s,this.conversionApi),s.modelRange&&!(s.modelRange instanceof u.Z))throw new r.ZP("view-conversion-dispatcher-incorrect-result",this);return{modelRange:s.modelRange,modelCursor:s.modelCursor}}_convertChildren(e,t){let s=t.is("position")?t:p.ZP._createAt(t,0);const o=new u.Z(s);for(const t of Array.from(e.getChildren())){const e=this._convertItem(t,s);e.modelRange instanceof u.Z&&(o.end=e.modelRange.end,s=e.modelCursor)}return{modelRange:o,modelCursor:s}}_safeInsert(e,t){const s=this._splitToAllowedParent(e,t);return!!s&&(this.conversionApi.writer.insert(e,s.position),!0)}_updateConversionResult(e,t){const s=this._getSplitParts(e),o=this.conversionApi.writer;t.modelRange||(t.modelRange=o.createRange(o.createPositionBefore(e),o.createPositionAfter(s[s.length-1])));const i=this._cursorParents.get(e);t.modelCursor=i?o.createPositionAt(i,0):t.modelRange.end}_splitToAllowedParent(e,t){const{schema:s,writer:o}=this.conversionApi;let i=s.findAllowedParent(t,e);if(i){if(i===t.parent)return{position:t};this._modelCursor.parent.getAncestors().includes(i)&&(i=null)}if(!i)return(0,m.gg)(t,e,s)?{position:(0,m.zX)(t,o)}:null;const r=this.conversionApi.writer.split(t,i),n=[];for(const e of r.range.getWalker())if("elementEnd"==e.type)n.push(e.item);else{const t=n.pop(),s=e.item;this._registerSplitPair(t,s)}const a=r.range.end.parent;return this._cursorParents.set(e,a),{position:r.position,cursorParent:a}}_registerSplitPair(e,t){this._splitParts.has(e)||this._splitParts.set(e,[e]);const s=this._splitParts.get(e);this._splitParts.set(t,s),s.push(t)}_getSplitParts(e){let t;return t=this._splitParts.has(e)?this._splitParts.get(e):[e],t}_keepEmptyElement(e){this._emptyElementsToKeep.add(e)}_removeEmptyElements(){let e=!1;for(const t of this._splitParts.keys())t.isEmpty&&!this._emptyElementsToKeep.has(t)&&(this.conversionApi.writer.remove(t),this._splitParts.delete(t),e=!0);e&&this._removeEmptyElements()}}(0,o.Z)(k,f.ZP);var _=s("./packages/ckeditor5-engine/src/conversion/upcasthelpers.js"),b=s("./packages/ckeditor5-engine/src/view/documentfragment.js"),w=s("./packages/ckeditor5-engine/src/view/document.js"),v=s("./packages/ckeditor5-engine/src/view/downcastwriter.js"),y=s("./packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.js");class Z{constructor(e,t){this.model=e,this.mapper=new n.Z,this.downcastDispatcher=new a.Z({mapper:this.mapper,schema:e.schema}),this.downcastDispatcher.on("insert:$text",(0,c.Om)(),{priority:"lowest"}),this.downcastDispatcher.on("insert",(0,c.o6)(),{priority:"lowest"}),this.upcastDispatcher=new k({schema:e.schema}),this.viewDocument=new w.Z(t),this.stylesProcessor=t,this.htmlProcessor=new y.Z(this.viewDocument),this.processor=this.htmlProcessor,this._viewWriter=new v.Z(this.viewDocument),this.upcastDispatcher.on("text",(0,_.s8)(),{priority:"lowest"}),this.upcastDispatcher.on("element",(0,_._p)(),{priority:"lowest"}),this.upcastDispatcher.on("documentFragment",(0,_._p)(),{priority:"lowest"}),this.decorate("init"),this.decorate("set"),this.decorate("get"),this.on("init",(()=>{this.fire("ready")}),{priority:"lowest"}),this.on("ready",(()=>{this.model.enqueueChange({isUndoable:!1},m._m)}),{priority:"lowest"})}get(e={}){const{rootName:t="main",trim:s="empty"}=e;if(!this._checkIfRootsExists([t]))throw new r.ZP("datacontroller-get-non-existent-root",this);const o=this.model.document.getRoot(t);return"empty"!==s||this.model.hasContent(o,{ignoreWhitespaces:!0})?this.stringify(o,e):""}stringify(e,t={}){const s=this.toView(e,t);return this.processor.toData(s)}toView(e,t={}){const s=this.viewDocument,o=this._viewWriter;this.mapper.clearBindings();const i=u.Z._createIn(e),r=new b.Z(s);this.mapper.bindElements(e,r);const n=e.is("documentFragment")?e.markers:function(e){const t=[],s=e.root.document;if(!s)return new Map;const o=u.Z._createIn(e);for(const e of s.model.markers){const s=e.getRange(),i=s.isCollapsed,r=s.start.isEqual(o.start)||s.end.isEqual(o.end);if(i&&r)t.push([e.name,s]);else{const i=o.getIntersection(s);i&&t.push([e.name,i])}}return t.sort((([e,t],[s,o])=>{if("after"!==t.end.compareWith(o.start))return 1;if("before"!==t.start.compareWith(o.end))return-1;switch(t.start.compareWith(o.start)){case"before":return 1;case"after":return-1;default:switch(t.end.compareWith(o.end)){case"before":return 1;case"after":return-1;default:return s.localeCompare(e)}}})),new Map(t)}(e);return this.downcastDispatcher.convert(i,n,o,t),r}init(e){if(this.model.document.version)throw new r.ZP("datacontroller-init-document-not-empty",this);let t={};if("string"==typeof e?t.main=e:t=e,!this._checkIfRootsExists(Object.keys(t)))throw new r.ZP("datacontroller-init-non-existent-root",this);return this.model.enqueueChange({isUndoable:!1},(e=>{for(const s of Object.keys(t)){const o=this.model.document.getRoot(s);e.insert(this.parse(t[s],o),o,0)}})),Promise.resolve()}set(e,t={}){let s={};if("string"==typeof e?s.main=e:s=e,!this._checkIfRootsExists(Object.keys(s)))throw new r.ZP("datacontroller-set-non-existent-root",this);this.model.enqueueChange(t.batchType||{},(e=>{e.setSelection(null),e.removeSelectionAttribute(this.model.document.selection.getAttributeKeys());for(const t of Object.keys(s)){const o=this.model.document.getRoot(t);e.remove(e.createRangeIn(o)),e.insert(this.parse(s[t],o),o,0)}}))}parse(e,t="$root"){const s=this.processor.toView(e);return this.toModel(s,t)}toModel(e,t="$root"){return this.model.change((s=>this.upcastDispatcher.convert(e,s,t)))}addStyleProcessorRules(e){e(this.stylesProcessor)}registerRawContentMatcher(e){this.processor&&this.processor!==this.htmlProcessor&&this.processor.registerRawContentMatcher(e),this.htmlProcessor.registerRawContentMatcher(e)}destroy(){this.stopListening()}_checkIfRootsExists(e){for(const t of e)if(!this.model.document.getRootNames().includes(t))return!1;return!0}}(0,o.Z)(Z,i.Z)},"./packages/ckeditor5-engine/src/controller/editingcontroller.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>L});var o=s("./packages/ckeditor5-engine/src/view/editableelement.js");const i=Symbol("rootName");class r extends o.Z{constructor(e,t){super(e,t),this.rootName="main"}is(e,t=null){return t?t===this.name&&("rootElement"===e||"view:rootElement"===e||"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"rootElement"===e||"view:rootElement"===e||"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}get rootName(){return this.getCustomProperty(i)}set rootName(e){this._setCustomProperty(i,e)}set _name(e){this.name=e}}var n=s("./packages/ckeditor5-engine/src/view/document.js"),a=s("./packages/ckeditor5-engine/src/view/downcastwriter.js"),c=s("./packages/ckeditor5-engine/src/view/renderer.js"),l=s("./packages/ckeditor5-engine/src/view/domconverter.js"),d=s("./packages/ckeditor5-engine/src/view/position.js"),h=s("./packages/ckeditor5-engine/src/view/range.js"),u=s("./packages/ckeditor5-engine/src/view/selection.js"),p=s("./packages/ckeditor5-engine/src/view/observer/observer.js"),g=s("./packages/ckeditor5-engine/src/view/filler.js"),m=s("./node_modules/lodash-es/_baseIsEqual.js");const f=function(e,t,s){var o=(s="function"==typeof s?s:void 0)?s(e,t):void 0;return void 0===o?(0,m.Z)(e,t,void 0,s):!!o};class k extends p.Z{constructor(e){super(e),this._config={childList:!0,characterData:!0,characterDataOldValue:!0,subtree:!0},this.domConverter=e.domConverter,this.renderer=e._renderer,this._domElements=[],this._mutationObserver=new window.MutationObserver(this._onMutations.bind(this))}flush(){this._onMutations(this._mutationObserver.takeRecords())}observe(e){this._domElements.push(e),this.isEnabled&&this._mutationObserver.observe(e,this._config)}enable(){super.enable();for(const e of this._domElements)this._mutationObserver.observe(e,this._config)}disable(){super.disable(),this._mutationObserver.disconnect()}destroy(){super.destroy(),this._mutationObserver.disconnect()}_onMutations(e){if(0===e.length)return;const t=this.domConverter,s=new Map,o=new Set;for(const s of e)if("childList"===s.type){const e=t.mapDomToView(s.target);if(e&&(e.is("uiElement")||e.is("rawElement")))continue;e&&!this._isBogusBrMutation(s)&&o.add(e)}for(const i of e){const e=t.mapDomToView(i.target);if((!e||!e.is("uiElement")&&!e.is("rawElement"))&&"characterData"===i.type){const e=t.findCorrespondingViewText(i.target);e&&!o.has(e.parent)?s.set(e,{type:"text",oldText:e.data,newText:(0,g.th)(i.target),node:e}):!e&&(0,g.Sw)(i.target)&&o.add(t.mapDomToView(i.target.parentNode))}}const i=[];for(const e of s.values())this.renderer.markToSync("text",e.node),i.push(e);for(const e of o){const s=t.mapViewToDom(e),o=Array.from(e.getChildren()),r=Array.from(t.domChildrenToView(s,{withChildren:!1}));f(o,r,a)||(this.renderer.markToSync("children",e),i.push({type:"children",oldChildren:o,newChildren:r,node:e}))}const r=e[0].target.ownerDocument.getSelection();let n=null;if(r&&r.anchorNode){const e=t.domPositionToView(r.anchorNode,r.anchorOffset),s=t.domPositionToView(r.focusNode,r.focusOffset);e&&s&&(n=new u.Z(e),n.setFocus(s))}function a(e,t){if(!Array.isArray(e))return e===t||!(!e.is("$text")||!t.is("$text"))&&e.data===t.data}i.length&&(this.document.fire("mutations",i,n),this.view.forceRender())}_isBogusBrMutation(e){let t=null;return null===e.nextSibling&&0===e.removedNodes.length&&1==e.addedNodes.length&&(t=this.domConverter.domToView(e.addedNodes[0],{withChildren:!1})),t&&t.is("element","br")}}var _=s("./packages/ckeditor5-engine/src/view/observer/domeventobserver.js"),b=s("./packages/ckeditor5-utils/src/keyboard.ts");class w extends _.Z{constructor(e){super(e),this.domEventType=["keydown","keyup"]}onDomEvent(e){this.fire(e.type,e,{keyCode:e.keyCode,altKey:e.altKey,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,metaKey:e.metaKey,get keystroke(){return(0,b.Cq)(this)}})}}var v=s("./node_modules/lodash-es/debounce.js");class y extends p.Z{constructor(e){super(e),this._fireSelectionChangeDoneDebounced=(0,v.Z)((e=>this.document.fire("selectionChangeDone",e)),200)}observe(){const e=this.document;e.on("arrowKey",((t,s)=>{e.selection.isFake&&this.isEnabled&&s.preventDefault()}),{context:"$capture"}),e.on("arrowKey",((t,s)=>{e.selection.isFake&&this.isEnabled&&this._handleSelectionMove(s.keyCode)}),{priority:"lowest"})}destroy(){super.destroy(),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionMove(e){const t=this.document.selection,s=new u.Z(t.getRanges(),{backward:t.isBackward,fake:!1});e!=b.Do.arrowleft&&e!=b.Do.arrowup||s.setTo(s.getFirstPosition()),e!=b.Do.arrowright&&e!=b.Do.arrowdown||s.setTo(s.getLastPosition());const o={oldSelection:t,newSelection:s,domSelection:null};this.document.fire("selectionChange",o),this._fireSelectionChangeDoneDebounced(o)}}class Z extends p.Z{constructor(e){super(e),this.mutationObserver=e.getObserver(k),this.selection=this.document.selection,this.domConverter=e.domConverter,this._documents=new WeakSet,this._fireSelectionChangeDoneDebounced=(0,v.Z)((e=>this.document.fire("selectionChangeDone",e)),200),this._clearInfiniteLoopInterval=setInterval((()=>this._clearInfiniteLoop()),1e3),this._documentIsSelectingInactivityTimeoutDebounced=(0,v.Z)((()=>this.document.isSelecting=!1),5e3),this._loopbackCounter=0}observe(e){const t=e.ownerDocument,s=()=>{this.document.isSelecting=!1,this._documentIsSelectingInactivityTimeoutDebounced.cancel()};this.listenTo(e,"selectstart",(()=>{this.document.isSelecting=!0,this._documentIsSelectingInactivityTimeoutDebounced()}),{priority:"highest"}),this.listenTo(e,"keydown",s,{priority:"highest"}),this.listenTo(e,"keyup",s,{priority:"highest"}),this._documents.has(t)||(this.listenTo(t,"mouseup",s,{priority:"highest"}),this.listenTo(t,"selectionchange",((e,s)=>{this._handleSelectionChange(s,t),this._documentIsSelectingInactivityTimeoutDebounced()})),this._documents.add(t))}destroy(){super.destroy(),clearInterval(this._clearInfiniteLoopInterval),this._fireSelectionChangeDoneDebounced.cancel(),this._documentIsSelectingInactivityTimeoutDebounced.cancel()}_handleSelectionChange(e,t){if(!this.isEnabled)return;const s=t.defaultView.getSelection();if(this.checkShouldIgnoreEventFromTarget(s.anchorNode))return;this.mutationObserver.flush();const o=this.domConverter.domSelectionToView(s);if(0!=o.rangeCount){if(this.view.hasDomSelection=!0,!(this.selection.isEqual(o)&&this.domConverter.isDomSelectionCorrect(s)||++this._loopbackCounter>60))if(this.selection.isSimilar(o))this.view.forceRender();else{const e={oldSelection:this.selection,newSelection:o,domSelection:s};this.document.fire("selectionChange",e),this._fireSelectionChangeDoneDebounced(e)}}else this.view.hasDomSelection=!1}_clearInfiniteLoop(){this._loopbackCounter=0}}class P extends _.Z{constructor(e){super(e),this.domEventType=["focus","blur"],this.useCapture=!0;const t=this.document;t.on("focus",(()=>{t.isFocused=!0,this._renderTimeoutId=setTimeout((()=>e.change((()=>{}))),50)})),t.on("blur",((s,o)=>{const i=t.selection.editableElement;null!==i&&i!==o.target||(t.isFocused=!1,e.change((()=>{})))}))}onDomEvent(e){this.fire(e.type,e)}destroy(){this._renderTimeoutId&&clearTimeout(this._renderTimeoutId),super.destroy()}}class x extends _.Z{constructor(e){super(e),this.domEventType=["compositionstart","compositionupdate","compositionend"];const t=this.document;t.on("compositionstart",(()=>{t.isComposing=!0})),t.on("compositionend",(()=>{t.isComposing=!1}))}onDomEvent(e){this.fire(e.type,e)}}class A extends _.Z{constructor(e){super(e),this.domEventType=["beforeinput"]}onDomEvent(e){this.fire(e.type,e)}}var j=s("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.js"),T=s("./packages/ckeditor5-utils/src/index.ts");class C extends p.Z{constructor(e){super(e),this.document.on("keydown",((e,t)=>{if(this.isEnabled&&(0,T.dj)(t.keyCode)){const s=new j.Z(this.document,"arrowKey",this.document.selection.getFirstRange());this.document.fire(s,t),s.stop.called&&e.stop()}}))}observe(){}}class E extends p.Z{constructor(e){super(e);const t=this.document;t.on("keydown",((e,s)=>{if(!this.isEnabled||s.keyCode!=b.Do.tab||s.ctrlKey)return;const o=new j.Z(t,"tab",t.selection.getFirstRange());t.fire(o,s),o.stop.called&&e.stop()}))}observe(){}}var S=s("./packages/ckeditor5-utils/src/observablemixin.ts"),O=s("./packages/ckeditor5-utils/src/mix.ts"),R=s("./packages/ckeditor5-utils/src/dom/scroll.ts"),M=s("./packages/ckeditor5-engine/src/view/uielement.js"),N=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),I=s("./packages/ckeditor5-utils/src/env.ts");class V{constructor(e){this.document=new n.Z(e),this.domConverter=new l.Z(this.document),this.domRoots=new Map,this.set("isRenderingInProgress",!1),this.set("hasDomSelection",!1),this._renderer=new c.Z(this.domConverter,this.document.selection),this._renderer.bind("isFocused","isSelecting").to(this.document),this._initialDomRootAttributes=new WeakMap,this._observers=new Map,this._ongoingChange=!1,this._postFixersInProgress=!1,this._renderingDisabled=!1,this._hasChangedSinceTheLastRendering=!1,this._writer=new a.Z(this.document),this.addObserver(k),this.addObserver(Z),this.addObserver(P),this.addObserver(w),this.addObserver(y),this.addObserver(x),this.addObserver(C),this.addObserver(E),I.ZP.isAndroid&&this.addObserver(A),(0,g.mm)(this),(0,M.h)(this),this.on("render",(()=>{this._render(),this.document.fire("layoutChanged"),this._hasChangedSinceTheLastRendering=!1})),this.listenTo(this.document.selection,"change",(()=>{this._hasChangedSinceTheLastRendering=!0})),this.listenTo(this.document,"change:isFocused",(()=>{this._hasChangedSinceTheLastRendering=!0}))}attachDomRoot(e,t="main"){const s=this.document.getRoot(t);s._name=e.tagName.toLowerCase();const o={};for(const{name:t,value:i}of Array.from(e.attributes))o[t]=i,"class"===t?this._writer.addClass(i.split(" "),s):this._writer.setAttribute(t,i,s);this._initialDomRootAttributes.set(e,o);const i=()=>{this._writer.setAttribute("contenteditable",!s.isReadOnly,s),s.isReadOnly?this._writer.addClass("ck-read-only",s):this._writer.removeClass("ck-read-only",s)};i(),this.domRoots.set(t,e),this.domConverter.bindElements(e,s),this._renderer.markToSync("children",s),this._renderer.markToSync("attributes",s),this._renderer.domDocuments.add(e.ownerDocument),s.on("change:children",((e,t)=>this._renderer.markToSync("children",t))),s.on("change:attributes",((e,t)=>this._renderer.markToSync("attributes",t))),s.on("change:text",((e,t)=>this._renderer.markToSync("text",t))),s.on("change:isReadOnly",(()=>this.change(i))),s.on("change",(()=>{this._hasChangedSinceTheLastRendering=!0}));for(const s of this._observers.values())s.observe(e,t)}detachDomRoot(e){const t=this.domRoots.get(e);Array.from(t.attributes).forEach((({name:e})=>t.removeAttribute(e)));const s=this._initialDomRootAttributes.get(t);for(const e in s)t.setAttribute(e,s[e]);this.domRoots.delete(e),this.domConverter.unbindDomElement(t)}getDomRoot(e="main"){return this.domRoots.get(e)}addObserver(e){let t=this._observers.get(e);if(t)return t;t=new e(this),this._observers.set(e,t);for(const[e,s]of this.domRoots)t.observe(s,e);return t.enable(),t}getObserver(e){return this._observers.get(e)}disableObservers(){for(const e of this._observers.values())e.disable()}enableObservers(){for(const e of this._observers.values())e.enable()}scrollToTheSelection(){const e=this.document.selection.getFirstRange();e&&(0,R.m)({target:this.domConverter.viewRangeToDom(e),viewportOffset:20})}focus(){if(!this.document.isFocused){const e=this.document.selection.editableElement;e&&(this.domConverter.focus(e),this.forceRender())}}change(e){if(this.isRenderingInProgress||this._postFixersInProgress)throw new N.ZP("cannot-change-view-tree",this);try{if(this._ongoingChange)return e(this._writer);this._ongoingChange=!0;const t=e(this._writer);return this._ongoingChange=!1,!this._renderingDisabled&&this._hasChangedSinceTheLastRendering&&(this._postFixersInProgress=!0,this.document._callPostFixers(this._writer),this._postFixersInProgress=!1,this.fire("render")),t}catch(e){N.ZP.rethrowUnexpectedError(e,this)}}forceRender(){this._hasChangedSinceTheLastRendering=!0,this.change((()=>{}))}destroy(){for(const e of this._observers.values())e.destroy();this.document.destroy(),this.stopListening()}createPositionAt(e,t){return d.Z._createAt(e,t)}createPositionAfter(e){return d.Z._createAfter(e)}createPositionBefore(e){return d.Z._createBefore(e)}createRange(e,t){return new h.Z(e,t)}createRangeOn(e){return h.Z._createOn(e)}createRangeIn(e){return h.Z._createIn(e)}createSelection(e,t,s){return new u.Z(e,t,s)}_disableRendering(e){this._renderingDisabled=e,0==e&&this.change((()=>{}))}_render(){this.isRenderingInProgress=!0,this.disableObservers(),this._renderer.render(),this.enableObservers(),this.isRenderingInProgress=!1}}(0,O.Z)(V,S.Z);var z=s("./packages/ckeditor5-engine/src/conversion/mapper.js"),D=s("./packages/ckeditor5-engine/src/conversion/downcastdispatcher.js"),B=s("./packages/ckeditor5-engine/src/conversion/downcasthelpers.js"),F=s("./packages/ckeditor5-engine/src/conversion/upcasthelpers.js");class L{constructor(e,t){this.model=e,this.view=new V(t),this.mapper=new z.Z,this.downcastDispatcher=new D.Z({mapper:this.mapper,schema:e.schema});const s=this.model.document,o=s.selection,i=this.model.markers;this.listenTo(this.model,"_beforeChanges",(()=>{this.view._disableRendering(!0)}),{priority:"highest"}),this.listenTo(this.model,"_afterChanges",(()=>{this.view._disableRendering(!1)}),{priority:"lowest"}),this.listenTo(s,"change",(()=>{this.view.change((e=>{this.downcastDispatcher.convertChanges(s.differ,i,e),this.downcastDispatcher.convertSelection(o,i,e)}))}),{priority:"low"}),this.listenTo(this.view.document,"selectionChange",(0,F.Fo)(this.model,this.mapper)),this.downcastDispatcher.on("insert:$text",(0,B.Om)(),{priority:"lowest"}),this.downcastDispatcher.on("insert",(0,B.o6)(),{priority:"lowest"}),this.downcastDispatcher.on("remove",(0,B.Od)(),{priority:"low"}),this.downcastDispatcher.on("selection",(0,B.iO)(),{priority:"high"}),this.downcastDispatcher.on("selection",(0,B.k3)(),{priority:"low"}),this.downcastDispatcher.on("selection",(0,B.GM)(),{priority:"low"}),this.view.document.roots.bindTo(this.model.document.roots).using((e=>{if("$graveyard"==e.rootName)return null;const t=new r(this.view.document,e.name);return t.rootName=e.rootName,this.mapper.bindElements(e,t),t}))}destroy(){this.view.destroy(),this.stopListening()}reconvertMarker(e){const t="string"==typeof e?e:e.name,s=this.model.markers.get(t);if(!s)throw new N.ZP("editingcontroller-reconvertmarker-marker-not-exist",this,{markerName:t});this.model.change((()=>{this.model.markers._refresh(s)}))}reconvertItem(e){this.model.change((()=>{this.model.document.differ._refreshItem(e)}))}}(0,O.Z)(L,S.Z)},"./packages/ckeditor5-engine/src/conversion/conversion.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-engine/src/conversion/upcasthelpers.js"),r=s("./packages/ckeditor5-engine/src/conversion/downcasthelpers.js"),n=s("./packages/ckeditor5-utils/src/toarray.ts");class a{constructor(e,t){this._helpers=new Map,this._downcast=(0,n.Z)(e),this._createConversionHelpers({name:"downcast",dispatchers:this._downcast,isDowncast:!0}),this._upcast=(0,n.Z)(t),this._createConversionHelpers({name:"upcast",dispatchers:this._upcast,isDowncast:!1})}addAlias(e,t){const s=this._downcast.includes(t);if(!this._upcast.includes(t)&&!s)throw new o.ZP("conversion-add-alias-dispatcher-not-registered",this);this._createConversionHelpers({name:e,dispatchers:[t],isDowncast:s})}for(e){if(!this._helpers.has(e))throw new o.ZP("conversion-for-unknown-group",this);return this._helpers.get(e)}elementToElement(e){this.for("downcast").elementToElement(e);for(const{model:t,view:s}of c(e))this.for("upcast").elementToElement({model:t,view:s,converterPriority:e.converterPriority})}attributeToElement(e){this.for("downcast").attributeToElement(e);for(const{model:t,view:s}of c(e))this.for("upcast").elementToAttribute({view:s,model:t,converterPriority:e.converterPriority})}attributeToAttribute(e){this.for("downcast").attributeToAttribute(e);for(const{model:t,view:s}of c(e))this.for("upcast").attributeToAttribute({view:s,model:t})}_createConversionHelpers({name:e,dispatchers:t,isDowncast:s}){if(this._helpers.has(e))throw new o.ZP("conversion-group-exists",this);const n=s?new r.ZP(t):new i.ZP(t);this._helpers.set(e,n)}}function*c(e){if(e.model.values)for(const t of e.model.values){const s={key:e.model.key,value:t},o=e.view[t],i=e.upcastAlso?e.upcastAlso[t]:void 0;yield*l(s,o,i)}else yield*l(e.model,e.view,e.upcastAlso)}function*l(e,t,s){if(yield{model:e,view:t},s)for(const t of(0,n.Z)(s))yield{model:e,view:t}}},"./packages/ckeditor5-engine/src/conversion/conversionhelpers.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{constructor(e){this._dispatchers=e}add(e){for(const t of this._dispatchers)e(t);return this}}},"./packages/ckeditor5-engine/src/conversion/downcastdispatcher.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});var o=s("./packages/ckeditor5-engine/src/model/textproxy.js"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r{constructor(){this._consumable=new Map,this._textProxyRegistry=new Map}add(e,t){t=n(t),e instanceof o.Z&&(e=this._getSymbolForTextProxy(e)),this._consumable.has(e)||this._consumable.set(e,new Map),this._consumable.get(e).set(t,!0)}consume(e,t){return t=n(t),e instanceof o.Z&&(e=this._getSymbolForTextProxy(e)),!!this.test(e,t)&&(this._consumable.get(e).set(t,!1),!0)}test(e,t){t=n(t),e instanceof o.Z&&(e=this._getSymbolForTextProxy(e));const s=this._consumable.get(e);if(void 0===s)return null;const i=s.get(t);return void 0===i?null:i}revert(e,t){t=n(t),e instanceof o.Z&&(e=this._getSymbolForTextProxy(e));const s=this.test(e,t);return!1===s?(this._consumable.get(e).set(t,!0),!0):!0!==s&&null}verifyAllConsumed(e){const t=[];for(const[s,o]of this._consumable)for(const[i,r]of o){const o=i.split(":")[0];r&&e==o&&t.push({event:i,item:s.name||s.description})}if(t.length)throw new i.ZP("conversion-model-consumable-not-consumed",null,{items:t})}_getSymbolForTextProxy(e){let t=null;const s=this._textProxyRegistry.get(e.startOffset);if(s){const o=s.get(e.endOffset);o&&(t=o.get(e.parent))}return t||(t=this._addSymbolForTextProxy(e)),t}_addSymbolForTextProxy(e){const t=e.startOffset,s=e.endOffset,o=e.parent,i=Symbol("$textProxy:"+e.data);let r,n;return r=this._textProxyRegistry.get(t),r||(r=new Map,this._textProxyRegistry.set(t,r)),n=r.get(s),n||(n=new Map,r.set(s,n)),n.set(o,i),i}}function n(e){const t=e.split(":");return"insert"==t[0]?t[0]:"addMarker"==t[0]||"removeMarker"==t[0]?e:t.length>1?t[0]+":"+t[1]:t[0]}var a=s("./packages/ckeditor5-engine/src/model/range.js"),c=s("./packages/ckeditor5-utils/src/emittermixin.ts"),l=s("./packages/ckeditor5-utils/src/mix.ts");class d{constructor(e){this._conversionApi={dispatcher:this,...e},this._firedEventsMap=new WeakMap}convertChanges(e,t,s){const o=this._createConversionApi(s,e.getRefreshedItems());for(const t of e.getMarkersToRemove())this._convertMarkerRemove(t.name,t.range,o);const i=this._reduceChanges(e.getChanges());for(const e of i)"insert"===e.type?this._convertInsert(a.Z._createFromPositionAndShift(e.position,e.length),o):"reinsert"===e.type?this._convertReinsert(a.Z._createFromPositionAndShift(e.position,e.length),o):"remove"===e.type?this._convertRemove(e.position,e.length,e.name,o):this._convertAttribute(e.range,e.attributeKey,e.attributeOldValue,e.attributeNewValue,o);for(const e of o.mapper.flushUnboundMarkerNames()){const s=t.get(e).getRange();this._convertMarkerRemove(e,s,o),this._convertMarkerAdd(e,s,o)}for(const t of e.getMarkersToAdd())this._convertMarkerAdd(t.name,t.range,o);o.mapper.flushDeferredBindings(),o.consumable.verifyAllConsumed("insert")}convert(e,t,s,o={}){const i=this._createConversionApi(s,void 0,o);this._convertInsert(e,i);for(const[e,s]of t)this._convertMarkerAdd(e,s,i);i.consumable.verifyAllConsumed("insert")}convertSelection(e,t,s){const o=Array.from(t.getMarkersAtPosition(e.getFirstPosition())),i=this._createConversionApi(s);if(this._addConsumablesForSelection(i.consumable,e,o),this.fire("selection",{selection:e},i),e.isCollapsed){for(const t of o){const s=t.getRange();if(!h(e.getFirstPosition(),t,i.mapper))continue;const o={item:e,markerName:t.name,markerRange:s};i.consumable.test(e,"addMarker:"+t.name)&&this.fire("addMarker:"+t.name,o,i)}for(const t of e.getAttributeKeys()){const s={item:e,range:e.getFirstRange(),attributeKey:t,attributeOldValue:null,attributeNewValue:e.getAttribute(t)};i.consumable.test(e,"attribute:"+s.attributeKey)&&this.fire("attribute:"+s.attributeKey+":$text",s,i)}}}_convertInsert(e,t,s={}){s.doNotAddConsumables||this._addConsumablesForInsert(t.consumable,Array.from(e));for(const s of Array.from(e.getWalker({shallow:!0})).map(u))this._testAndFire("insert",s,t)}_convertRemove(e,t,s,o){this.fire("remove:"+s,{position:e,length:t},o)}_convertAttribute(e,t,s,o,i){this._addConsumablesForRange(i.consumable,e,`attribute:${t}`);for(const r of e){const e={item:r.item,range:a.Z._createFromPositionAndShift(r.previousPosition,r.length),attributeKey:t,attributeOldValue:s,attributeNewValue:o};this._testAndFire(`attribute:${t}`,e,i)}}_convertReinsert(e,t){const s=Array.from(e.getWalker({shallow:!0}));this._addConsumablesForInsert(t.consumable,s);for(const e of s.map(u))this._testAndFire("insert",{...e,reconversion:!0},t)}_convertMarkerAdd(e,t,s){if("$graveyard"==t.root.rootName)return;const o="addMarker:"+e;if(s.consumable.add(t,o),this.fire(o,{markerName:e,markerRange:t},s),s.consumable.consume(t,o)){this._addConsumablesForRange(s.consumable,t,o);for(const i of t.getItems()){if(!s.consumable.test(i,o))continue;const r={item:i,range:a.Z._createOn(i),markerName:e,markerRange:t};this.fire(o,r,s)}}}_convertMarkerRemove(e,t,s){"$graveyard"!=t.root.rootName&&this.fire("removeMarker:"+e,{markerName:e,markerRange:t},s)}_reduceChanges(e){const t={changes:e};return this.fire("reduceChanges",t),t.changes}_addConsumablesForInsert(e,t){for(const s of t){const t=s.item;if(null===e.test(t,"insert")){e.add(t,"insert");for(const s of t.getAttributeKeys())e.add(t,"attribute:"+s)}}return e}_addConsumablesForRange(e,t,s){for(const o of t.getItems())e.add(o,s);return e}_addConsumablesForSelection(e,t,s){e.add(t,"selection");for(const o of s)e.add(t,"addMarker:"+o.name);for(const s of t.getAttributeKeys())e.add(t,"attribute:"+s);return e}_testAndFire(e,t,s){const o=function(e,t){const s=t.item.name||"$text";return`${e}:${s}`}(e,t),i=t.item.is("$textProxy")?s.consumable._getSymbolForTextProxy(t.item):t.item,r=this._firedEventsMap.get(s),n=r.get(i);if(n){if(n.has(o))return;n.add(o)}else r.set(i,new Set([o]));this.fire(o,t,s)}_testAndFireAddAttributes(e,t){const s={item:e,range:a.Z._createOn(e)};for(const e of s.item.getAttributeKeys())s.attributeKey=e,s.attributeOldValue=null,s.attributeNewValue=s.item.getAttribute(e),this._testAndFire(`attribute:${e}`,s,t)}_createConversionApi(e,t=new Set,s={}){const o={...this._conversionApi,consumable:new r,writer:e,options:s,convertItem:e=>this._convertInsert(a.Z._createOn(e),o),convertChildren:e=>this._convertInsert(a.Z._createIn(e),o,{doNotAddConsumables:!0}),convertAttributes:e=>this._testAndFireAddAttributes(e,o),canReuseView:e=>!t.has(o.mapper.toModelElement(e))};return this._firedEventsMap.set(o,new Map),o}}function h(e,t,s){const o=t.getRange(),i=Array.from(e.getAncestors());i.shift(),i.reverse();return!i.some((e=>{if(o.containsItem(e)){return!!s.toViewElement(e).getCustomProperty("addHighlight")}}))}function u(e){return{item:e.item,range:a.Z._createFromPositionAndShift(e.previousPosition,e.length)}}(0,l.Z)(d,c.ZP)},"./packages/ckeditor5-engine/src/conversion/downcasthelpers.js":(e,t,s)=>{"use strict";s.d(t,{GM:()=>b,Od:()=>f,Om:()=>g,ZP:()=>p,iO:()=>w,k3:()=>_,o6:()=>m});var o=s("./packages/ckeditor5-engine/src/model/range.js"),i=s("./packages/ckeditor5-engine/src/model/selection.js"),r=s("./packages/ckeditor5-engine/src/model/element.js"),n=s("./packages/ckeditor5-engine/src/model/position.js"),a=s("./packages/ckeditor5-engine/src/view/attributeelement.js"),c=s("./packages/ckeditor5-engine/src/model/documentselection.js"),l=s("./packages/ckeditor5-engine/src/conversion/conversionhelpers.js"),d=s("./node_modules/lodash-es/cloneDeep.js"),h=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),u=s("./packages/ckeditor5-utils/src/toarray.ts");class p extends l.Z{elementToElement(e){return this.add(function(e){(e=(0,d.Z)(e)).model=y(e.model),e.view=Z(e.view,"container"),e.model.attributes.length&&(e.model.children=!0);return t=>{t.on("insert:"+e.model.name,function(e,t=S){return(s,o,i)=>{if(!t(o.item,i.consumable,{preflight:!0}))return;const r=e(o.item,i,o);if(!r)return;t(o.item,i.consumable);const n=i.mapper.toViewPosition(o.range.start);i.mapper.bindElements(o.item,r),i.writer.insert(n,r),i.convertAttributes(o.item),C(r,o.item.getChildren(),i,{reconversion:o.reconversion})}}(e.view,T(e.model)),{priority:e.converterPriority||"normal"}),(e.model.children||e.model.attributes.length)&&t.on("reduceChanges",j(e.model),{priority:"low"})}}(e))}elementToStructure(e){return this.add(function(e){return(e=(0,d.Z)(e)).model=y(e.model),e.view=Z(e.view,"container"),e.model.children=!0,t=>{if(t._conversionApi.schema.checkChild(e.model.name,"$text"))throw new h.ZP("conversion-element-to-structure-disallowed-text",t,{elementName:e.model.name});var s,o;t.on("insert:"+e.model.name,(s=e.view,o=T(e.model),(e,t,i)=>{if(!o(t.item,i.consumable,{preflight:!0}))return;const r=new Map;i.writer._registerSlotFactory(function(e,t,s){return(o,i="children")=>{const r=o.createContainerElement("$slot");let n=null;if("children"===i)n=Array.from(e.getChildren());else{if("function"!=typeof i)throw new h.ZP("conversion-slot-mode-unknown",s.dispatcher,{modeOrFilter:i});n=Array.from(e.getChildren()).filter((e=>i(e)))}return t.set(r,n),r}}(t.item,r,i));const n=s(t.item,i,t);if(i.writer._clearSlotFactory(),!n)return;!function(e,t,s){const o=Array.from(t.values()).flat(),i=new Set(o);if(i.size!=o.length)throw new h.ZP("conversion-slot-filter-overlap",s.dispatcher,{element:e});if(i.size!=e.childCount)throw new h.ZP("conversion-slot-filter-incomplete",s.dispatcher,{element:e})}(t.item,r,i),o(t.item,i.consumable);const a=i.mapper.toViewPosition(t.range.start);i.mapper.bindElements(t.item,n),i.writer.insert(a,n),i.convertAttributes(t.item),function(e,t,s,o){s.mapper.on("modelToViewPosition",n,{priority:"highest"});let i=null,r=null;for([i,r]of t)C(e,r,s,o),s.writer.move(s.writer.createRangeIn(i),s.writer.createPositionBefore(i)),s.writer.remove(i);function n(e,t){const s=t.modelPosition.nodeAfter,o=r.indexOf(s);o<0||(t.viewPosition=t.mapper.findPositionIn(i,o))}s.mapper.off("modelToViewPosition",n)}(n,r,i,{reconversion:t.reconversion})}),{priority:e.converterPriority||"normal"}),t.on("reduceChanges",j(e.model),{priority:"low"})}}(e))}attributeToElement(e){return this.add(function(e){e=(0,d.Z)(e);let t="attribute:"+(e.model.key?e.model.key:e.model);e.model.name&&(t+=":"+e.model.name);if(e.model.values)for(const t of e.model.values)e.view[t]=Z(e.view[t],"attribute");else e.view=Z(e.view,"attribute");const s=P(e);return o=>{o.on(t,function(e){return(t,s,o)=>{if(!o.consumable.test(s.item,t.name))return;const r=e(s.attributeOldValue,o,s),n=e(s.attributeNewValue,o,s);if(!r&&!n)return;o.consumable.consume(s.item,t.name);const a=o.writer,l=a.document.selection;if(s.item instanceof i.Z||s.item instanceof c.Z)a.wrap(l.getFirstRange(),n);else{let e=o.mapper.toViewRange(s.range);null!==s.attributeOldValue&&r&&(e=a.unwrap(e,r)),null!==s.attributeNewValue&&n&&a.wrap(e,n)}}}(s),{priority:e.converterPriority||"normal"})}}(e))}attributeToAttribute(e){return this.add(function(e){e=(0,d.Z)(e);let t="attribute:"+(e.model.key?e.model.key:e.model);e.model.name&&(t+=":"+e.model.name);if(e.model.values)for(const t of e.model.values)e.view[t]=x(e.view[t]);else e.view=x(e.view);const s=P(e);return o=>{var i;o.on(t,(i=s,(e,t,s)=>{if(!s.consumable.test(t.item,e.name))return;const o=i(t.attributeOldValue,s,t),r=i(t.attributeNewValue,s,t);if(!o&&!r)return;s.consumable.consume(t.item,e.name);const n=s.mapper.toViewElement(t.item),a=s.writer;if(!n)throw new h.ZP("conversion-attribute-to-attribute-on-text",s.dispatcher,t);if(null!==t.attributeOldValue&&o)if("class"==o.key){const e=(0,u.Z)(o.value);for(const t of e)a.removeClass(t,n)}else if("style"==o.key){const e=Object.keys(o.value);for(const t of e)a.removeStyle(t,n)}else a.removeAttribute(o.key,n);if(null!==t.attributeNewValue&&r)if("class"==r.key){const e=(0,u.Z)(r.value);for(const t of e)a.addClass(t,n)}else if("style"==r.key){const e=Object.keys(r.value);for(const t of e)a.setStyle(t,r.value[t],n)}else a.setAttribute(r.key,r.value,n)}),{priority:e.converterPriority||"normal"})}}(e))}markerToElement(e){return this.add(function(e){return(e=(0,d.Z)(e)).view=Z(e.view,"ui"),t=>{var s;t.on("addMarker:"+e.model,(s=e.view,(e,t,o)=>{t.isOpening=!0;const i=s(t,o);t.isOpening=!1;const r=s(t,o);if(!i||!r)return;const n=t.markerRange;if(n.isCollapsed&&!o.consumable.consume(n,e.name))return;for(const t of n)if(!o.consumable.consume(t.item,e.name))return;const a=o.mapper,c=o.writer;c.insert(a.toViewPosition(n.start),i),o.mapper.bindElementToMarker(i,t.markerName),n.isCollapsed||(c.insert(a.toViewPosition(n.end),r),o.mapper.bindElementToMarker(r,t.markerName)),e.stop()}),{priority:e.converterPriority||"normal"}),t.on("removeMarker:"+e.model,(e.view,(e,t,s)=>{const o=s.mapper.markerNameToElements(t.markerName);if(o){for(const e of o)s.mapper.unbindElementFromMarkerName(e,t.markerName),s.writer.clear(s.writer.createRangeOn(e),e);s.writer.clearClonedElementsGroup(t.markerName),e.stop()}}),{priority:e.converterPriority||"normal"})}}(e))}markerToHighlight(e){return this.add(function(e){return t=>{var s;t.on("addMarker:"+e.model,(s=e.view,(e,t,o)=>{if(!t.item)return;if(!(t.item instanceof i.Z||t.item instanceof c.Z||t.item.is("$textProxy")))return;const r=A(s,t,o);if(!r)return;if(!o.consumable.consume(t.item,e.name))return;const n=o.writer,a=k(n,r),l=n.document.selection;if(t.item instanceof i.Z||t.item instanceof c.Z)n.wrap(l.getFirstRange(),a,l);else{const e=o.mapper.toViewRange(t.range),s=n.wrap(e,a);for(const e of s.getItems())if(e.is("attributeElement")&&e.isSimilar(a)){o.mapper.bindElementToMarker(e,t.markerName);break}}}),{priority:e.converterPriority||"normal"}),t.on("addMarker:"+e.model,function(e){return(t,s,i)=>{if(!s.item)return;if(!(s.item instanceof r.Z))return;const n=A(e,s,i);if(!n)return;if(!i.consumable.test(s.item,t.name))return;const a=i.mapper.toViewElement(s.item);if(a&&a.getCustomProperty("addHighlight")){i.consumable.consume(s.item,t.name);for(const e of o.Z._createIn(s.item))i.consumable.consume(e.item,t.name);a.getCustomProperty("addHighlight")(a,n,i.writer),i.mapper.bindElementToMarker(a,s.markerName)}}}(e.view),{priority:e.converterPriority||"normal"}),t.on("removeMarker:"+e.model,function(e){return(t,s,o)=>{if(s.markerRange.isCollapsed)return;const i=A(e,s,o);if(!i)return;const r=k(o.writer,i),n=o.mapper.markerNameToElements(s.markerName);if(n){for(const e of n)o.mapper.unbindElementFromMarkerName(e,s.markerName),e.is("attributeElement")?o.writer.unwrap(o.writer.createRangeOn(e),r):e.getCustomProperty("removeHighlight")(e,i.id,o.writer);o.writer.clearClonedElementsGroup(s.markerName),t.stop()}}}(e.view),{priority:e.converterPriority||"normal"})}}(e))}markerToData(e){return this.add(function(e){const t=(e=(0,d.Z)(e)).model;e.view||(e.view=s=>({group:t,name:s.substr(e.model.length+1)}));return s=>{var o;s.on("addMarker:"+t,(o=e.view,(e,t,s)=>{const i=o(t.markerName,s);if(!i)return;const r=t.markerRange;s.consumable.consume(r,e.name)&&(v(r,!1,s,t,i),v(r,!0,s,t,i),e.stop())}),{priority:e.converterPriority||"normal"}),s.on("removeMarker:"+t,function(e){return(t,s,o)=>{const i=e(s.markerName,o);if(!i)return;const r=o.mapper.markerNameToElements(s.markerName);if(r){for(const e of r)o.mapper.unbindElementFromMarkerName(e,s.markerName),e.is("containerElement")?(n(`data-${i.group}-start-before`,e),n(`data-${i.group}-start-after`,e),n(`data-${i.group}-end-before`,e),n(`data-${i.group}-end-after`,e)):o.writer.clear(o.writer.createRangeOn(e),e);o.writer.clearClonedElementsGroup(s.markerName),t.stop()}function n(e,t){if(t.hasAttribute(e)){const s=new Set(t.getAttribute(e).split(","));s.delete(i.name),0==s.size?o.writer.removeAttribute(e,t):o.writer.setAttribute(e,Array.from(s).join(","),t)}}}}(e.view),{priority:e.converterPriority||"normal"})}}(e))}}function g(){return(e,t,s)=>{if(!s.consumable.consume(t.item,e.name))return;const o=s.writer,i=s.mapper.toViewPosition(t.range.start),r=o.createText(t.item.data);o.insert(i,r)}}function m(){return(e,t,s)=>{s.convertAttributes(t.item),t.reconversion||!t.item.is("element")||t.item.isEmpty||s.convertChildren(t.item)}}function f(){return(e,t,s)=>{const o=s.mapper.toViewPosition(t.position),i=t.position.getShiftedBy(t.length),r=s.mapper.toViewPosition(i,{isPhantom:!0}),n=s.writer.createRange(o,r),a=s.writer.remove(n.getTrimmed());for(const e of s.writer.createRangeIn(a).getItems())s.mapper.unbindViewElement(e,{defer:!0})}}function k(e,t){const s=e.createAttributeElement("span",t.attributes);return t.classes&&s._addClass(t.classes),"number"==typeof t.priority&&(s._priority=t.priority),s._id=t.id,s}function _(){return(e,t,s)=>{const o=t.selection;if(o.isCollapsed)return;if(!s.consumable.consume(o,"selection"))return;const i=[];for(const e of o.getRanges()){const t=s.mapper.toViewRange(e);i.push(t)}s.writer.setSelection(i,{backward:o.isBackward})}}function b(){return(e,t,s)=>{const o=t.selection;if(!o.isCollapsed)return;if(!s.consumable.consume(o,"selection"))return;const i=s.writer,r=o.getFirstPosition(),n=s.mapper.toViewPosition(r),a=i.breakAttributes(n);i.setSelection(a)}}function w(){return(e,t,s)=>{const o=s.writer,i=o.document.selection;for(const e of i.getRanges())e.isCollapsed&&e.end.parent.isAttached()&&s.writer.mergeAttributes(e.start);o.setSelection(null)}}function v(e,t,s,o,i){const r=t?e.start:e.end,n=r.nodeAfter&&r.nodeAfter.is("element")?r.nodeAfter:null,a=r.nodeBefore&&r.nodeBefore.is("element")?r.nodeBefore:null;if(n||a){let e,r;t&&n||!t&&!a?(e=n,r=!0):(e=a,r=!1);const c=s.mapper.toViewElement(e);if(c)return void function(e,t,s,o,i,r){const n=`data-${r.group}-${t?"start":"end"}-${s?"before":"after"}`,a=e.hasAttribute(n)?e.getAttribute(n).split(","):[];a.unshift(r.name),o.writer.setAttribute(n,a.join(","),e),o.mapper.bindElementToMarker(e,i.markerName)}(c,t,r,s,o,i)}!function(e,t,s,o,i){const r=`${i.group}-${t?"start":"end"}`,n=i.name?{name:i.name}:null,a=s.writer.createUIElement(r,n);s.writer.insert(e,a),s.mapper.bindElementToMarker(a,o.markerName)}(s.mapper.toViewPosition(r),t,s,o,i)}function y(e){return"string"==typeof e&&(e={name:e}),e.attributes?Array.isArray(e.attributes)||(e.attributes=[e.attributes]):e.attributes=[],e.children=!!e.children,e}function Z(e,t){return"function"==typeof e?e:(s,o)=>function(e,t,s){"string"==typeof e&&(e={name:e});let o;const i=t.writer,r=Object.assign({},e.attributes);if("container"==s)o=i.createContainerElement(e.name,r);else if("attribute"==s){const t={priority:e.priority||a.Z.DEFAULT_PRIORITY};o=i.createAttributeElement(e.name,r,t)}else o=i.createUIElement(e.name,r);if(e.styles){const t=Object.keys(e.styles);for(const s of t)i.setStyle(s,e.styles[s],o)}if(e.classes){const t=e.classes;if("string"==typeof t)i.addClass(t,o);else for(const e of t)i.addClass(e,o)}return o}(e,o,t)}function P(e){return e.model.values?(t,s)=>{const o=e.view[t];return o?o(t,s):null}:e.view}function x(e){return"string"==typeof e?t=>({key:e,value:t}):"object"==typeof e?e.value?()=>e:t=>({key:e.key,value:t}):e}function A(e,t,s){const o="function"==typeof e?e(t,s):e;return o?(o.priority||(o.priority=10),o.id||(o.id=t.markerName),o):null}function j(e){const t=function(e){return(t,s)=>{if(!t.is("element",e.name))return!1;if("attribute"==s.type){if(e.attributes.includes(s.attributeKey))return!0}else if(e.children)return!0;return!1}}(e);return(e,s)=>{const o=[];s.reconvertedElements||(s.reconvertedElements=new Set);for(const e of s.changes){const i=e.position?e.position.parent:e.range.start.nodeAfter;if(i&&t(i,e)){if(!s.reconvertedElements.has(i)){s.reconvertedElements.add(i);const e=n.ZP._createBefore(i);o.push({type:"remove",name:i.name,position:e,length:1},{type:"reinsert",name:i.name,position:e,length:1})}}else o.push(e)}s.changes=o}}function T(e){return(t,s,o={})=>{const i=["insert"];for(const s of e.attributes)t.hasAttribute(s)&&i.push(`attribute:${s}`);return!!i.every((e=>s.test(t,e)))&&(o.preflight||i.forEach((e=>s.consume(t,e))),!0)}}function C(e,t,s,o){for(const i of t)E(e.root,i,s,o)||s.convertItem(i)}function E(e,t,s,o){const{writer:i,mapper:r}=s;if(!o.reconversion)return!1;const a=r.toViewElement(t);return!(!a||a.root==e)&&(!!s.canReuseView(a)&&(i.move(i.createRangeOn(a),r.toViewPosition(n.ZP._createBefore(t))),!0))}function S(e,t,{preflight:s}={}){return s?t.test(e,"insert"):t.consume(e,"insert")}},"./packages/ckeditor5-engine/src/conversion/mapper.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./packages/ckeditor5-engine/src/model/position.js"),i=s("./packages/ckeditor5-engine/src/model/range.js"),r=s("./packages/ckeditor5-engine/src/view/position.js"),n=s("./packages/ckeditor5-engine/src/view/range.js"),a=s("./packages/ckeditor5-engine/src/view/text.js"),c=s("./packages/ckeditor5-utils/src/emittermixin.ts"),l=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),d=s("./packages/ckeditor5-utils/src/mix.ts");class h{constructor(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._viewToModelLengthCallbacks=new Map,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._deferredBindingRemovals=new Map,this._unboundMarkerNames=new Set,this.on("modelToViewPosition",((e,t)=>{if(t.viewPosition)return;const s=this._modelToViewMapping.get(t.modelPosition.parent);if(!s)throw new l.ZP("mapping-model-position-view-parent-not-found",this,{modelPosition:t.modelPosition});t.viewPosition=this.findPositionIn(s,t.modelPosition.offset)}),{priority:"low"}),this.on("viewToModelPosition",((e,t)=>{if(t.modelPosition)return;const s=this.findMappedViewAncestor(t.viewPosition),i=this._viewToModelMapping.get(s),r=this._toModelOffset(t.viewPosition.parent,t.viewPosition.offset,s);t.modelPosition=o.ZP._createAt(i,r)}),{priority:"low"})}bindElements(e,t){this._modelToViewMapping.set(e,t),this._viewToModelMapping.set(t,e)}unbindViewElement(e,t={}){const s=this.toModelElement(e);if(this._elementToMarkerNames.has(e))for(const t of this._elementToMarkerNames.get(e))this._unboundMarkerNames.add(t);t.defer?this._deferredBindingRemovals.set(e,e.root):(this._viewToModelMapping.delete(e),this._modelToViewMapping.get(s)==e&&this._modelToViewMapping.delete(s))}unbindModelElement(e){const t=this.toViewElement(e);this._modelToViewMapping.delete(e),this._viewToModelMapping.get(t)==e&&this._viewToModelMapping.delete(t)}bindElementToMarker(e,t){const s=this._markerNameToElements.get(t)||new Set;s.add(e);const o=this._elementToMarkerNames.get(e)||new Set;o.add(t),this._markerNameToElements.set(t,s),this._elementToMarkerNames.set(e,o)}unbindElementFromMarkerName(e,t){const s=this._markerNameToElements.get(t);s&&(s.delete(e),0==s.size&&this._markerNameToElements.delete(t));const o=this._elementToMarkerNames.get(e);o&&(o.delete(t),0==o.size&&this._elementToMarkerNames.delete(e))}flushUnboundMarkerNames(){const e=Array.from(this._unboundMarkerNames);return this._unboundMarkerNames.clear(),e}flushDeferredBindings(){for(const[e,t]of this._deferredBindingRemovals)e.root==t&&this.unbindViewElement(e);this._deferredBindingRemovals=new Map}clearBindings(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._unboundMarkerNames=new Set,this._deferredBindingRemovals=new Map}toModelElement(e){return this._viewToModelMapping.get(e)}toViewElement(e){return this._modelToViewMapping.get(e)}toModelRange(e){return new i.Z(this.toModelPosition(e.start),this.toModelPosition(e.end))}toViewRange(e){return new n.Z(this.toViewPosition(e.start),this.toViewPosition(e.end))}toModelPosition(e){const t={viewPosition:e,mapper:this};return this.fire("viewToModelPosition",t),t.modelPosition}toViewPosition(e,t={isPhantom:!1}){const s={modelPosition:e,mapper:this,isPhantom:t.isPhantom};return this.fire("modelToViewPosition",s),s.viewPosition}markerNameToElements(e){const t=this._markerNameToElements.get(e);if(!t)return null;const s=new Set;for(const e of t)if(e.is("attributeElement"))for(const t of e.getElementsWithSameId())s.add(t);else s.add(e);return s}registerViewToModelLength(e,t){this._viewToModelLengthCallbacks.set(e,t)}findMappedViewAncestor(e){let t=e.parent;for(;!this._viewToModelMapping.has(t);)t=t.parent;return t}_toModelOffset(e,t,s){if(s!=e){return this._toModelOffset(e.parent,e.index,s)+this._toModelOffset(e,t,e)}if(e.is("$text"))return t;let o=0;for(let s=0;s<t;s++)o+=this.getModelLength(e.getChild(s));return o}getModelLength(e){if(this._viewToModelLengthCallbacks.get(e.name)){return this._viewToModelLengthCallbacks.get(e.name)(e)}if(this._viewToModelMapping.has(e))return 1;if(e.is("$text"))return e.data.length;if(e.is("uiElement"))return 0;{let t=0;for(const s of e.getChildren())t+=this.getModelLength(s);return t}}findPositionIn(e,t){let s,o=0,i=0,n=0;if(e.is("$text"))return new r.Z(e,t);for(;i<t;)s=e.getChild(n),o=this.getModelLength(s),i+=o,n++;return i==t?this._moveViewPositionToTextNode(new r.Z(e,n)):this.findPositionIn(s,t-(i-o))}_moveViewPositionToTextNode(e){const t=e.nodeBefore,s=e.nodeAfter;return t instanceof a.Z?new r.Z(t,t.data.length):s instanceof a.Z?new r.Z(s,0):e}}(0,d.Z)(h,c.ZP)},"./packages/ckeditor5-engine/src/conversion/upcasthelpers.js":(e,t,s)=>{"use strict";s.d(t,{Fo:()=>h,ZP:()=>c,_p:()=>l,s8:()=>d});var o=s("./packages/ckeditor5-engine/src/view/matcher.js"),i=s("./packages/ckeditor5-engine/src/conversion/conversionhelpers.js"),r=s("./node_modules/lodash-es/cloneDeep.js"),n=s("./packages/ckeditor5-utils/src/priorities.ts"),a=s("./packages/ckeditor5-engine/src/model/utils/autoparagraphing.js");class c extends i.Z{elementToElement(e){return this.add(u(e))}elementToAttribute(e){return this.add(function(e){m(e=(0,r.Z)(e));const t=f(e,!1),s=p(e.view),o=s?"element:"+s:"element";return s=>{s.on(o,t,{priority:e.converterPriority||"low"})}}(e))}attributeToAttribute(e){return this.add(function(e){e=(0,r.Z)(e);let t=null;("string"==typeof e.view||e.view.key)&&(t=function(e){"string"==typeof e.view&&(e.view={key:e.view});const t=e.view.key;let s;if("class"==t||"style"==t){s={["class"==t?"classes":"styles"]:e.view.value}}else{s={attributes:{[t]:void 0===e.view.value?/[\s\S]*/:e.view.value}}}e.view.name&&(s.name=e.view.name);return e.view=s,t}(e));m(e,t);const s=f(e,!0);return t=>{t.on("element",s,{priority:e.converterPriority||"low"})}}(e))}elementToMarker(e){return this.add(function(e){return function(e){const t=e.model;e.model=(e,s)=>{const o="string"==typeof t?t:t(e,s);return s.writer.createElement("$marker",{"data-name":o})}}(e=(0,r.Z)(e)),u(e)}(e))}dataToMarker(e){return this.add(function(e){(e=(0,r.Z)(e)).model||(e.model=t=>t?e.view+":"+t:e.view);const t=g(k(e,"start")),s=g(k(e,"end"));return o=>{o.on("element:"+e.view+"-start",t,{priority:e.converterPriority||"normal"}),o.on("element:"+e.view+"-end",s,{priority:e.converterPriority||"normal"});const i=n.Z.get("low"),r=n.Z.get("highest"),a=n.Z.get(e.converterPriority)/r;o.on("element",function(e){return(t,s,o)=>{const i=`data-${e.view}`;function r(t,i){for(const r of i){const i=e.model(r,o),n=o.writer.createElement("$marker",{"data-name":i});o.writer.insert(n,t),s.modelCursor.isEqual(t)?s.modelCursor=s.modelCursor.getShiftedBy(1):s.modelCursor=s.modelCursor._getTransformedByInsertion(t,1),s.modelRange=s.modelRange._getTransformedByInsertion(t,1)[0]}}(o.consumable.test(s.viewItem,{attributes:i+"-end-after"})||o.consumable.test(s.viewItem,{attributes:i+"-start-after"})||o.consumable.test(s.viewItem,{attributes:i+"-end-before"})||o.consumable.test(s.viewItem,{attributes:i+"-start-before"}))&&(s.modelRange||Object.assign(s,o.convertChildren(s.viewItem,s.modelCursor)),o.consumable.consume(s.viewItem,{attributes:i+"-end-after"})&&r(s.modelRange.end,s.viewItem.getAttribute(i+"-end-after").split(",")),o.consumable.consume(s.viewItem,{attributes:i+"-start-after"})&&r(s.modelRange.end,s.viewItem.getAttribute(i+"-start-after").split(",")),o.consumable.consume(s.viewItem,{attributes:i+"-end-before"})&&r(s.modelRange.start,s.viewItem.getAttribute(i+"-end-before").split(",")),o.consumable.consume(s.viewItem,{attributes:i+"-start-before"})&&r(s.modelRange.start,s.viewItem.getAttribute(i+"-start-before").split(",")))}}(e),{priority:i+a})}}(e))}}function l(){return(e,t,s)=>{if(!t.modelRange&&s.consumable.consume(t.viewItem,{name:!0})){const{modelRange:e,modelCursor:o}=s.convertChildren(t.viewItem,t.modelCursor);t.modelRange=e,t.modelCursor=o}}}function d(){return(e,t,{schema:s,consumable:o,writer:i})=>{let r=t.modelCursor;if(!o.test(t.viewItem))return;if(!s.checkChild(r,"$text")){if(!(0,a.gg)(r,"$text",s))return;if(0==t.viewItem.data.trim().length)return;r=(0,a.zX)(r,i)}o.consume(t.viewItem);const n=i.createText(t.viewItem.data);i.insert(n,r),t.modelRange=i.createRange(r,r.getShiftedBy(n.offsetSize)),t.modelCursor=t.modelRange.end}}function h(e,t){return(s,o)=>{const i=o.newSelection,r=[];for(const e of i.getRanges())r.push(t.toModelRange(e));const n=e.createSelection(r,{backward:i.isBackward});n.isEqual(e.document.selection)||e.change((e=>{e.setSelection(n)}))}}function u(e){const t=g(e=(0,r.Z)(e)),s=p(e.view),o=s?"element:"+s:"element";return s=>{s.on(o,t,{priority:e.converterPriority||"normal"})}}function p(e){return"string"==typeof e?e:"object"==typeof e&&"string"==typeof e.name?e.name:null}function g(e){const t=new o.Z(e.view);return(s,o,i)=>{const r=t.match(o.viewItem);if(!r)return;const n=r.match;if(n.name=!0,!i.consumable.test(o.viewItem,n))return;const a=function(e,t,s){return e instanceof Function?e(t,s):s.writer.createElement(e)}(e.model,o.viewItem,i);a&&i.safeInsert(a,o.modelCursor)&&(i.consumable.consume(o.viewItem,n),i.convertChildren(o.viewItem,a),i.updateConversionResult(a,o))}}function m(e,t=null){const s=null===t||(e=>e.getAttribute(t)),o="object"!=typeof e.model?e.model:e.model.key,i="object"!=typeof e.model||void 0===e.model.value?s:e.model.value;e.model={key:o,value:i}}function f(e,t){const s=new o.Z(e.view);return(o,i,r)=>{if(!i.modelRange&&t)return;const n=s.match(i.viewItem);if(!n)return;if(!function(e,t){const s="function"==typeof e?e(t):e;if("object"==typeof s&&!p(s))return!1;return!s.classes&&!s.attributes&&!s.styles}(e.view,i.viewItem)?delete n.match.name:n.match.name=!0,!r.consumable.test(i.viewItem,n.match))return;const a=e.model.key,c="function"==typeof e.model.value?e.model.value(i.viewItem,r):e.model.value;if(null===c)return;i.modelRange||Object.assign(i,r.convertChildren(i.viewItem,i.modelCursor));const l=function(e,t,s,o){let i=!1;for(const r of Array.from(e.getItems({shallow:s})))o.schema.checkAttribute(r,t.key)&&(i=!0,r.hasAttribute(t.key)||o.writer.setAttribute(t.key,t.value,r));return i}(i.modelRange,{key:a,value:c},t,r);l&&(r.consumable.test(i.viewItem,{name:!0})&&(n.match.name=!0),r.consumable.consume(i.viewItem,n.match))}}function k(e,t){const s={};return s.view=e.view+"-"+t,s.model=(t,s)=>{const o=t.getAttribute("name"),i=e.model(o,s);return s.writer.createElement("$marker",{"data-name":i})},s}},"./packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});class o{getHtml(e){const t=document.implementation.createHTMLDocument("").createElement("div");return t.appendChild(e),t.innerHTML}}var i=s("./packages/ckeditor5-engine/src/view/domconverter.js");class r{constructor(e){this.domParser=new DOMParser,this.domConverter=new i.Z(e,{renderingMode:"data"}),this.htmlWriter=new o}toData(e){const t=this.domConverter.viewToDom(e);return this.htmlWriter.getHtml(t)}toView(e){const t=this._toDom(e);return this.domConverter.domToView(t)}registerRawContentMatcher(e){this.domConverter.registerRawContentMatcher(e)}useFillerType(e){this.domConverter.blockFillerMode="marked"==e?"markedNbsp":"nbsp"}_toDom(e){e.match(/<(?:html|body|head|meta)(?:\s[^>]*)?>/i)||(e=`<body>${e}</body>`);const t=this.domParser.parseFromString(e,"text/html"),s=t.createDocumentFragment(),o=t.body.childNodes;for(;o.length>0;)s.appendChild(o[0]);return s}}},"./packages/ckeditor5-engine/src/model/documentfragment.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/model/nodelist.js"),i=s("./packages/ckeditor5-engine/src/model/element.js"),r=s("./packages/ckeditor5-engine/src/model/text.js"),n=s("./packages/ckeditor5-engine/src/model/textproxy.js"),a=s("./packages/ckeditor5-utils/src/isiterable.ts");class c{constructor(e){this.markers=new Map,this._children=new o.Z,e&&this._insertChild(0,e)}[Symbol.iterator](){return this.getChildren()}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}is(e){return"documentFragment"===e||"model:documentFragment"===e}getChild(e){return this._children.getNode(e)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(e){return this._children.getNodeIndex(e)}getChildStartOffset(e){return this._children.getNodeStartOffset(e)}getPath(){return[]}getNodeByPath(e){let t=this;for(const s of e)t=t.getChild(t.offsetToIndex(s));return t}offsetToIndex(e){return this._children.offsetToIndex(e)}toJSON(){const e=[];for(const t of this._children)e.push(t.toJSON());return e}static fromJSON(e){const t=[];for(const s of e)s.name?t.push(i.Z.fromJSON(s)):t.push(r.Z.fromJSON(s));return new c(t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const s=function(e){if("string"==typeof e)return[new r.Z(e)];(0,a.Z)(e)||(e=[e]);return Array.from(e).map((e=>"string"==typeof e?new r.Z(e):e instanceof n.Z?new r.Z(e.data,e.getAttributes()):e))}(t);for(const e of s)null!==e.parent&&e._remove(),e.parent=this;this._children._insertNodes(e,s)}_removeChildren(e,t=1){const s=this._children._removeNodes(e,t);for(const e of s)e.parent=null;return s}}},"./packages/ckeditor5-engine/src/model/documentselection.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>g});var o=s("./packages/ckeditor5-utils/src/mix.ts"),i=s("./packages/ckeditor5-utils/src/emittermixin.ts"),r=s("./packages/ckeditor5-engine/src/model/selection.js"),n=s("./packages/ckeditor5-engine/src/model/liverange.js"),a=s("./packages/ckeditor5-engine/src/model/text.js"),c=s("./packages/ckeditor5-engine/src/model/textproxy.js"),l=s("./packages/ckeditor5-utils/src/tomap.ts"),d=s("./packages/ckeditor5-utils/src/collection.ts"),h=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),u=s("./packages/ckeditor5-utils/src/uid.ts");const p="selection:";class g{constructor(e){this._selection=new m(e),this._selection.delegate("change:range").to(this),this._selection.delegate("change:attribute").to(this),this._selection.delegate("change:marker").to(this)}get isCollapsed(){return this._selection.isCollapsed}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get rangeCount(){return this._selection.rangeCount}get hasOwnRange(){return this._selection.hasOwnRange}get isBackward(){return this._selection.isBackward}get isGravityOverridden(){return this._selection.isGravityOverridden}get markers(){return this._selection.markers}get _ranges(){return this._selection._ranges}getRanges(){return this._selection.getRanges()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getSelectedBlocks(){return this._selection.getSelectedBlocks()}getSelectedElement(){return this._selection.getSelectedElement()}containsEntireContent(e){return this._selection.containsEntireContent(e)}destroy(){this._selection.destroy()}getAttributeKeys(){return this._selection.getAttributeKeys()}getAttributes(){return this._selection.getAttributes()}getAttribute(e){return this._selection.getAttribute(e)}hasAttribute(e){return this._selection.hasAttribute(e)}refresh(){this._selection._updateMarkers(),this._selection._updateAttributes(!1)}observeMarkers(e){this._selection.observeMarkers(e)}is(e){return"selection"===e||"model:selection"==e||"documentSelection"==e||"model:documentSelection"==e}_setFocus(e,t){this._selection.setFocus(e,t)}_setTo(e,t,s){this._selection.setTo(e,t,s)}_setAttribute(e,t){this._selection.setAttribute(e,t)}_removeAttribute(e){this._selection.removeAttribute(e)}_getStoredAttributes(){return this._selection._getStoredAttributes()}_overrideGravity(){return this._selection.overrideGravity()}_restoreGravity(e){this._selection.restoreGravity(e)}static _getStoreAttributeKey(e){return p+e}static _isStoreAttributeKey(e){return e.startsWith(p)}}(0,o.Z)(g,i.ZP);class m extends r.Z{constructor(e){super(),this.markers=new d.Z({idProperty:"name"}),this._model=e.model,this._document=e,this._attributePriority=new Map,this._selectionRestorePosition=null,this._hasChangedRange=!1,this._overriddenGravityRegister=new Set,this._observedMarkers=new Set,this.listenTo(this._model,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&"marker"!=s.type&&"rename"!=s.type&&"noop"!=s.type&&(0==this._ranges.length&&this._selectionRestorePosition&&this._fixGraveyardSelection(this._selectionRestorePosition),this._selectionRestorePosition=null,this._hasChangedRange&&(this._hasChangedRange=!1,this.fire("change:range",{directChange:!1})))}),{priority:"lowest"}),this.on("change:range",(()=>{for(const e of this.getRanges())if(!this._document._validateSelectionRange(e))throw new h.ZP("document-selection-wrong-position",this,{range:e})})),this.listenTo(this._model.markers,"update",((e,t,s,o)=>{this._updateMarker(t,o)})),this.listenTo(this._document,"change",((e,t)=>{!function(e,t){const s=e.document.differ;for(const o of s.getChanges()){if("insert"!=o.type)continue;const s=o.position.parent;o.length===s.maxOffset&&e.enqueueChange(t,(e=>{const t=Array.from(s.getAttributeKeys()).filter((e=>e.startsWith(p)));for(const o of t)e.removeAttribute(o,s)}))}}(this._model,t)}))}get isCollapsed(){return 0===this._ranges.length?this._document._getDefaultRange().isCollapsed:super.isCollapsed}get anchor(){return super.anchor||this._document._getDefaultRange().start}get focus(){return super.focus||this._document._getDefaultRange().end}get rangeCount(){return this._ranges.length?this._ranges.length:1}get hasOwnRange(){return this._ranges.length>0}get isGravityOverridden(){return!!this._overriddenGravityRegister.size}destroy(){for(let e=0;e<this._ranges.length;e++)this._ranges[e].detach();this.stopListening()}*getRanges(){this._ranges.length?yield*super.getRanges():yield this._document._getDefaultRange()}getFirstRange(){return super.getFirstRange()||this._document._getDefaultRange()}getLastRange(){return super.getLastRange()||this._document._getDefaultRange()}setTo(e,t,s){super.setTo(e,t,s),this._updateAttributes(!0),this._updateMarkers()}setFocus(e,t){super.setFocus(e,t),this._updateAttributes(!0),this._updateMarkers()}setAttribute(e,t){if(this._setAttribute(e,t)){const t=[e];this.fire("change:attribute",{attributeKeys:t,directChange:!0})}}removeAttribute(e){if(this._removeAttribute(e)){const t=[e];this.fire("change:attribute",{attributeKeys:t,directChange:!0})}}overrideGravity(){const e=(0,u.Z)();return this._overriddenGravityRegister.add(e),1===this._overriddenGravityRegister.size&&this._updateAttributes(!0),e}restoreGravity(e){if(!this._overriddenGravityRegister.has(e))throw new h.ZP("document-selection-gravity-wrong-restore",this,{uid:e});this._overriddenGravityRegister.delete(e),this.isGravityOverridden||this._updateAttributes(!0)}observeMarkers(e){this._observedMarkers.add(e),this._updateMarkers()}_popRange(){this._ranges.pop().detach()}_pushRange(e){const t=this._prepareRange(e);t&&this._ranges.push(t)}_prepareRange(e){if(this._checkRange(e),e.root==this._document.graveyard)return;const t=n.Z.fromRange(e);return t.on("change:range",((e,s,o)=>{if(this._hasChangedRange=!0,t.root==this._document.graveyard){this._selectionRestorePosition=o.deletionPosition;const e=this._ranges.indexOf(t);this._ranges.splice(e,1),t.detach()}})),t}_updateMarkers(){if(!this._observedMarkers.size)return;const e=[];let t=!1;for(const t of this._model.markers){const s=t.name.split(":",1)[0];if(!this._observedMarkers.has(s))continue;const o=t.getRange();for(const s of this.getRanges())o.containsRange(s,!s.isCollapsed)&&e.push(t)}const s=Array.from(this.markers);for(const s of e)this.markers.has(s)||(this.markers.add(s),t=!0);for(const s of Array.from(this.markers))e.includes(s)||(this.markers.remove(s),t=!0);t&&this.fire("change:marker",{oldMarkers:s,directChange:!1})}_updateMarker(e,t){const s=e.name.split(":",1)[0];if(!this._observedMarkers.has(s))return;let o=!1;const i=Array.from(this.markers),r=this.markers.has(e);if(t){let s=!1;for(const e of this.getRanges())if(t.containsRange(e,!e.isCollapsed)){s=!0;break}s&&!r?(this.markers.add(e),o=!0):!s&&r&&(this.markers.remove(e),o=!0)}else r&&(this.markers.remove(e),o=!0);o&&this.fire("change:marker",{oldMarkers:i,directChange:!1})}_updateAttributes(e){const t=(0,l.Z)(this._getSurroundingAttributes()),s=(0,l.Z)(this.getAttributes());if(e)this._attributePriority=new Map,this._attrs=new Map;else for(const[e,t]of this._attributePriority)"low"==t&&(this._attrs.delete(e),this._attributePriority.delete(e));this._setAttributesTo(t);const o=[];for(const[e,t]of this.getAttributes())s.has(e)&&s.get(e)===t||o.push(e);for(const[e]of s)this.hasAttribute(e)||o.push(e);o.length>0&&this.fire("change:attribute",{attributeKeys:o,directChange:!1})}_setAttribute(e,t,s=!0){const o=s?"normal":"low";if("low"==o&&"normal"==this._attributePriority.get(e))return!1;return super.getAttribute(e)!==t&&(this._attrs.set(e,t),this._attributePriority.set(e,o),!0)}_removeAttribute(e,t=!0){const s=t?"normal":"low";return("low"!=s||"normal"!=this._attributePriority.get(e))&&(this._attributePriority.set(e,s),!!super.hasAttribute(e)&&(this._attrs.delete(e),!0))}_setAttributesTo(e){const t=new Set;for(const[t,s]of this.getAttributes())e.get(t)!==s&&this._removeAttribute(t,!1);for(const[s,o]of e){this._setAttribute(s,o,!1)&&t.add(s)}return t}*_getStoredAttributes(){const e=this.getFirstPosition().parent;if(this.isCollapsed&&e.isEmpty)for(const t of e.getAttributeKeys())if(t.startsWith(p)){const s=t.substr(p.length);yield[s,e.getAttribute(t)]}}_getSurroundingAttributes(){const e=this.getFirstPosition(),t=this._model.schema;let s=null;if(this.isCollapsed){const o=e.textNode?e.textNode:e.nodeBefore,i=e.textNode?e.textNode:e.nodeAfter;if(this.isGravityOverridden||(s=f(o)),s||(s=f(i)),!this.isGravityOverridden&&!s){let e=o;for(;e&&!t.isInline(e)&&!s;)e=e.previousSibling,s=f(e)}if(!s){let e=i;for(;e&&!t.isInline(e)&&!s;)e=e.nextSibling,s=f(e)}s||(s=this._getStoredAttributes())}else{const e=this.getFirstRange();for(const o of e){if(o.item.is("element")&&t.isObject(o.item))break;if("text"==o.type){s=o.item.getAttributes();break}}}return s}_fixGraveyardSelection(e){const t=this._model.schema.getNearestSelectionRange(e);t&&this._pushRange(t)}}function f(e){return e instanceof c.Z||e instanceof a.Z?e.getAttributes():null}},"./packages/ckeditor5-engine/src/model/element.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/model/node.js"),i=s("./packages/ckeditor5-engine/src/model/nodelist.js"),r=s("./packages/ckeditor5-engine/src/model/text.js"),n=s("./packages/ckeditor5-engine/src/model/textproxy.js"),a=s("./packages/ckeditor5-utils/src/isiterable.ts");class c extends o.Z{constructor(e,t,s){super(t),this.name=e,this._children=new i.Z,s&&this._insertChild(0,s)}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}is(e,t=null){return t?t===this.name&&("element"===e||"model:element"===e):"element"===e||"model:element"===e||"node"===e||"model:node"===e}getChild(e){return this._children.getNode(e)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(e){return this._children.getNodeIndex(e)}getChildStartOffset(e){return this._children.getNodeStartOffset(e)}offsetToIndex(e){return this._children.offsetToIndex(e)}getNodeByPath(e){let t=this;for(const s of e)t=t.getChild(t.offsetToIndex(s));return t}findAncestor(e,t={includeSelf:!1}){let s=t.includeSelf?this:this.parent;for(;s;){if(s.name===e)return s;s=s.parent}return null}toJSON(){const e=super.toJSON();if(e.name=this.name,this._children.length>0){e.children=[];for(const t of this._children)e.children.push(t.toJSON())}return e}_clone(e=!1){const t=e?Array.from(this._children).map((e=>e._clone(!0))):null;return new c(this.name,this.getAttributes(),t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const s=function(e){if("string"==typeof e)return[new r.Z(e)];(0,a.Z)(e)||(e=[e]);return Array.from(e).map((e=>"string"==typeof e?new r.Z(e):e instanceof n.Z?new r.Z(e.data,e.getAttributes()):e))}(t);for(const e of s)null!==e.parent&&e._remove(),e.parent=this;this._children._insertNodes(e,s)}_removeChildren(e,t=1){const s=this._children._removeNodes(e,t);for(const e of s)e.parent=null;return s}static fromJSON(e){let t=null;if(e.children){t=[];for(const s of e.children)s.name?t.push(c.fromJSON(s)):t.push(r.Z.fromJSON(s))}return new c(e.name,e.attributes,t)}}},"./packages/ckeditor5-engine/src/model/history.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/index.ts");class i{constructor(){this._operations=[],this._undoPairs=new Map,this._undoneOperations=new Set,this._baseVersionToOperationIndex=new Map,this._version=0,this._gaps=new Map}get version(){return this._version}set version(e){this._operations.length&&e>this._version+1&&this._gaps.set(this._version,e),this._version=e}get lastOperation(){return this._operations[this._operations.length-1]}addOperation(e){if(e.baseVersion!==this.version)throw new o.Bb("model-document-history-addoperation-incorrect-version",this,{operation:e,historyVersion:this.version});this._operations.push(e),this._version++,this._baseVersionToOperationIndex.set(e.baseVersion,this._operations.length-1)}getOperations(e,t=this.version){if(!this._operations.length)return[];const s=this._operations[0];void 0===e&&(e=s.baseVersion);let o=t-1;for(const[t,s]of this._gaps)e>t&&e<s&&(e=s),o>t&&o<s&&(o=t-1);if(o<s.baseVersion||e>this.lastOperation.baseVersion)return[];let i=this._baseVersionToOperationIndex.get(e);void 0===i&&(i=0);let r=this._baseVersionToOperationIndex.get(o);return void 0===r&&(r=this._operations.length-1),this._operations.slice(i,r+1)}getOperation(e){const t=this._baseVersionToOperationIndex.get(e);if(void 0!==t)return this._operations[t]}setOperationAsUndone(e,t){this._undoPairs.set(t,e),this._undoneOperations.add(e)}isUndoingOperation(e){return this._undoPairs.has(e)}isUndoneOperation(e){return this._undoneOperations.has(e)}getUndoneOperation(e){return this._undoPairs.get(e)}reset(){this._version=0,this._undoPairs=new Map,this._operations=[],this._undoneOperations=new Set,this._gaps=new Map,this._baseVersionToOperationIndex=new Map}}},"./packages/ckeditor5-engine/src/model/liveposition.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-engine/src/model/position.js"),i=s("./packages/ckeditor5-utils/src/emittermixin.ts"),r=s("./packages/ckeditor5-utils/src/mix.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class a extends o.ZP{constructor(e,t,s="toNone"){if(super(e,t,s),!this.root.is("rootElement"))throw new n.ZP("model-liveposition-root-not-rootelement",e);c.call(this)}detach(){this.stopListening()}is(e){return"livePosition"===e||"model:livePosition"===e||"position"==e||"model:position"===e}toPosition(){return new o.ZP(this.root,this.path.slice(),this.stickiness)}static fromPosition(e,t){return new this(e.root,e.path.slice(),t||e.stickiness)}}function c(){this.listenTo(this.root.document.model,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&l.call(this,s)}),{priority:"low"})}function l(e){const t=this.getTransformedByOperation(e);if(!this.isEqual(t)){const e=this.toPosition();this.path=t.path,this.root=t.root,this.fire("change",e)}}(0,r.Z)(a,i.ZP)},"./packages/ckeditor5-engine/src/model/liverange.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/model/range.js"),i=s("./packages/ckeditor5-utils/src/emittermixin.ts"),r=s("./packages/ckeditor5-utils/src/mix.ts");class n extends o.Z{constructor(e,t){super(e,t),a.call(this)}detach(){this.stopListening()}is(e){return"liveRange"===e||"model:liveRange"===e||"range"==e||"model:range"===e}toRange(){return new o.Z(this.start,this.end)}static fromRange(e){return new n(e.start,e.end)}}function a(){this.listenTo(this.root.document.model,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&c.call(this,s)}),{priority:"low"})}function c(e){const t=this.getTransformedByOperation(e),s=o.Z._createFromRanges(t),i=!s.isEqual(this),r=function(e,t){switch(t.type){case"insert":return e.containsPosition(t.position);case"move":case"remove":case"reinsert":case"merge":return e.containsPosition(t.sourcePosition)||e.start.isEqual(t.sourcePosition)||e.containsPosition(t.targetPosition);case"split":return e.containsPosition(t.splitPosition)||e.containsPosition(t.insertionPosition)}return!1}(this,e);let n=null;if(i){"$graveyard"==s.root.rootName&&(n="remove"==e.type?e.sourcePosition:e.deletionPosition);const t=this.toRange();this.start=s.start,this.end=s.end,this.fire("change:range",t,{deletionPosition:n})}else r&&this.fire("change:content",this.toRange(),{deletionPosition:n})}(0,r.Z)(n,i.ZP)},"./packages/ckeditor5-engine/src/model/model.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>ye});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class i{constructor(e={}){"string"==typeof e&&(e="transparent"===e?{isUndoable:!1}:{},(0,o.KE)("batch-constructor-deprecated-string-type"));const{isUndoable:t=!0,isLocal:s=!0,isUndo:i=!1,isTyping:r=!1}=e;this.operations=[],this.isUndoable=t,this.isLocal=s,this.isUndo=i,this.isTyping=r}get type(){return(0,o.KE)("batch-type-deprecated"),"default"}get baseVersion(){for(const e of this.operations)if(null!==e.baseVersion)return e.baseVersion;return null}addOperation(e){return e.batch=this,this.operations.push(e),e}}var r=s("./packages/ckeditor5-engine/src/model/operation/attributeoperation.js"),n=s("./packages/ckeditor5-engine/src/model/operation/operation.js"),a=s("./packages/ckeditor5-engine/src/model/range.js"),c=s("./packages/ckeditor5-engine/src/model/operation/utils.js");class l extends n.Z{constructor(e,t){super(null),this.sourcePosition=e.clone(),this.howMany=t}get type(){return"detach"}toJSON(){const e=super.toJSON();return e.sourcePosition=this.sourcePosition.toJSON(),e}_validate(){if(this.sourcePosition.root.document)throw new o.ZP("detach-operation-on-document-node",this)}_execute(){(0,c.X9)(a.Z._createFromPositionAndShift(this.sourcePosition,this.howMany))}static get className(){return"DetachOperation"}}var d=s("./packages/ckeditor5-engine/src/model/operation/insertoperation.js"),h=s("./packages/ckeditor5-engine/src/model/operation/markeroperation.js"),u=s("./packages/ckeditor5-engine/src/model/operation/moveoperation.js"),p=s("./packages/ckeditor5-engine/src/model/operation/renameoperation.js"),g=s("./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.js"),m=s("./packages/ckeditor5-engine/src/model/operation/splitoperation.js"),f=s("./packages/ckeditor5-engine/src/model/operation/mergeoperation.js"),k=s("./packages/ckeditor5-engine/src/model/documentfragment.js"),_=s("./packages/ckeditor5-engine/src/model/text.js"),b=s("./packages/ckeditor5-engine/src/model/element.js");class w extends b.Z{constructor(e,t,s="main"){super(t),this._document=e,this.rootName=s}get document(){return this._document}is(e,t){return t?t===this.name&&("rootElement"===e||"model:rootElement"===e||"element"===e||"model:element"===e):"rootElement"===e||"model:rootElement"===e||"element"===e||"model:element"===e||"node"===e||"model:node"===e}toJSON(){return this.rootName}}var v=s("./packages/ckeditor5-engine/src/model/position.js"),y=s("./packages/ckeditor5-engine/src/model/documentselection.js"),Z=s("./packages/ckeditor5-utils/src/tomap.ts");class P{constructor(e,t){this.model=e,this.batch=t}createText(e,t){return new _.Z(e,t)}createElement(e,t){return new b.Z(e,t)}createDocumentFragment(){return new k.Z}cloneElement(e,t=!0){return e._clone(t)}insert(e,t,s=0){if(this._assertWriterUsedCorrectly(),e instanceof _.Z&&""==e.data)return;const i=v.ZP._createAt(t,s);if(e.parent){if(C(e.root,i.root))return void this.move(a.Z._createOn(e),i);if(e.root.document)throw new o.ZP("model-writer-insert-forbidden-move",this);this.remove(e)}const r=i.root.document?i.root.document.version:null,n=new d.Z(i,e,r);if(e instanceof _.Z&&(n.shouldReceiveAttributes=!0),this.batch.addOperation(n),this.model.applyOperation(n),e instanceof k.Z)for(const[t,s]of e.markers){const e=v.ZP._createAt(s.root,0),o={range:new a.Z(s.start._getCombined(e,i),s.end._getCombined(e,i)),usingOperation:!0,affectsData:!0};this.model.markers.has(t)?this.updateMarker(t,o):this.addMarker(t,o)}}insertText(e,t,s,o){t instanceof k.Z||t instanceof b.Z||t instanceof v.ZP?this.insert(this.createText(e),t,s):this.insert(this.createText(e,t),s,o)}insertElement(e,t,s,o){t instanceof k.Z||t instanceof b.Z||t instanceof v.ZP?this.insert(this.createElement(e),t,s):this.insert(this.createElement(e,t),s,o)}append(e,t){this.insert(e,t,"end")}appendText(e,t,s){t instanceof k.Z||t instanceof b.Z?this.insert(this.createText(e),t,"end"):this.insert(this.createText(e,t),s,"end")}appendElement(e,t,s){t instanceof k.Z||t instanceof b.Z?this.insert(this.createElement(e),t,"end"):this.insert(this.createElement(e,t),s,"end")}setAttribute(e,t,s){if(this._assertWriterUsedCorrectly(),s instanceof a.Z){const o=s.getMinimalFlatRanges();for(const s of o)x(this,e,t,s)}else A(this,e,t,s)}setAttributes(e,t){for(const[s,o]of(0,Z.Z)(e))this.setAttribute(s,o,t)}removeAttribute(e,t){if(this._assertWriterUsedCorrectly(),t instanceof a.Z){const s=t.getMinimalFlatRanges();for(const t of s)x(this,e,null,t)}else A(this,e,null,t)}clearAttributes(e){this._assertWriterUsedCorrectly();const t=e=>{for(const t of e.getAttributeKeys())this.removeAttribute(t,e)};if(e instanceof a.Z)for(const s of e.getItems())t(s);else t(e)}move(e,t,s){if(this._assertWriterUsedCorrectly(),!(e instanceof a.Z))throw new o.ZP("writer-move-invalid-range",this);if(!e.isFlat)throw new o.ZP("writer-move-range-not-flat",this);const i=v.ZP._createAt(t,s);if(i.isEqual(e.start))return;if(this._addOperationForAffectedMarkers("move",e),!C(e.root,i.root))throw new o.ZP("writer-move-different-document",this);const r=e.root.document?e.root.document.version:null,n=new u.Z(e.start,e.end.offset-e.start.offset,i,r);this.batch.addOperation(n),this.model.applyOperation(n)}remove(e){this._assertWriterUsedCorrectly();const t=(e instanceof a.Z?e:a.Z._createOn(e)).getMinimalFlatRanges().reverse();for(const e of t)this._addOperationForAffectedMarkers("move",e),T(e.start,e.end.offset-e.start.offset,this.batch,this.model)}merge(e){this._assertWriterUsedCorrectly();const t=e.nodeBefore,s=e.nodeAfter;if(this._addOperationForAffectedMarkers("merge",e),!(t instanceof b.Z))throw new o.ZP("writer-merge-no-element-before",this);if(!(s instanceof b.Z))throw new o.ZP("writer-merge-no-element-after",this);e.root.document?this._merge(e):this._mergeDetached(e)}createPositionFromPath(e,t,s){return this.model.createPositionFromPath(e,t,s)}createPositionAt(e,t){return this.model.createPositionAt(e,t)}createPositionAfter(e){return this.model.createPositionAfter(e)}createPositionBefore(e){return this.model.createPositionBefore(e)}createRange(e,t){return this.model.createRange(e,t)}createRangeIn(e){return this.model.createRangeIn(e)}createRangeOn(e){return this.model.createRangeOn(e)}createSelection(e,t,s){return this.model.createSelection(e,t,s)}_mergeDetached(e){const t=e.nodeBefore,s=e.nodeAfter;this.move(a.Z._createIn(s),v.ZP._createAt(t,"end")),this.remove(s)}_merge(e){const t=v.ZP._createAt(e.nodeBefore,"end"),s=v.ZP._createAt(e.nodeAfter,0),o=e.root.document.graveyard,i=new v.ZP(o,[0]),r=e.root.document.version,n=new f.Z(s,e.nodeAfter.maxOffset,t,i,r);this.batch.addOperation(n),this.model.applyOperation(n)}rename(e,t){if(this._assertWriterUsedCorrectly(),!(e instanceof b.Z))throw new o.ZP("writer-rename-not-element-instance",this);const s=e.root.document?e.root.document.version:null,i=new p.Z(v.ZP._createBefore(e),e.name,t,s);this.batch.addOperation(i),this.model.applyOperation(i)}split(e,t){this._assertWriterUsedCorrectly();let s,i,r=e.parent;if(!r.parent)throw new o.ZP("writer-split-element-no-parent",this);if(t||(t=r.parent),!e.parent.getAncestors({includeSelf:!0}).includes(t))throw new o.ZP("writer-split-invalid-limit-element",this);do{const t=r.root.document?r.root.document.version:null,o=r.maxOffset-e.offset,n=m.Z.getInsertionPosition(e),a=new m.Z(e,o,n,null,t);this.batch.addOperation(a),this.model.applyOperation(a),s||i||(s=r,i=e.parent.nextSibling),r=(e=this.createPositionAfter(e.parent)).parent}while(r!==t);return{position:e,range:new a.Z(v.ZP._createAt(s,"end"),v.ZP._createAt(i,0))}}wrap(e,t){if(this._assertWriterUsedCorrectly(),!e.isFlat)throw new o.ZP("writer-wrap-range-not-flat",this);const s=t instanceof b.Z?t:new b.Z(t);if(s.childCount>0)throw new o.ZP("writer-wrap-element-not-empty",this);if(null!==s.parent)throw new o.ZP("writer-wrap-element-attached",this);this.insert(s,e.start);const i=new a.Z(e.start.getShiftedBy(1),e.end.getShiftedBy(1));this.move(i,v.ZP._createAt(s,0))}unwrap(e){if(this._assertWriterUsedCorrectly(),null===e.parent)throw new o.ZP("writer-unwrap-element-no-parent",this);this.move(a.Z._createIn(e),this.createPositionAfter(e)),this.remove(e)}addMarker(e,t){if(this._assertWriterUsedCorrectly(),!t||"boolean"!=typeof t.usingOperation)throw new o.ZP("writer-addmarker-no-usingoperation",this);const s=t.usingOperation,i=t.range,r=void 0!==t.affectsData&&t.affectsData;if(this.model.markers.has(e))throw new o.ZP("writer-addmarker-marker-exists",this);if(!i)throw new o.ZP("writer-addmarker-no-range",this);return s?(j(this,e,null,i,r),this.model.markers.get(e)):this.model.markers._set(e,i,s,r)}updateMarker(e,t){this._assertWriterUsedCorrectly();const s="string"==typeof e?e:e.name,i=this.model.markers.get(s);if(!i)throw new o.ZP("writer-updatemarker-marker-not-exists",this);if(!t)return(0,o.KE)("writer-updatemarker-reconvert-using-editingcontroller",{markerName:s}),void this.model.markers._refresh(i);const r="boolean"==typeof t.usingOperation,n="boolean"==typeof t.affectsData,a=n?t.affectsData:i.affectsData;if(!r&&!t.range&&!n)throw new o.ZP("writer-updatemarker-wrong-options",this);const c=i.getRange(),l=t.range?t.range:c;r&&t.usingOperation!==i.managedUsingOperations?t.usingOperation?j(this,s,null,l,a):(j(this,s,c,null,a),this.model.markers._set(s,l,void 0,a)):i.managedUsingOperations?j(this,s,c,l,a):this.model.markers._set(s,l,void 0,a)}removeMarker(e){this._assertWriterUsedCorrectly();const t="string"==typeof e?e:e.name;if(!this.model.markers.has(t))throw new o.ZP("writer-removemarker-no-marker",this);const s=this.model.markers.get(t);if(!s.managedUsingOperations)return void this.model.markers._remove(t);j(this,t,s.getRange(),null,s.affectsData)}setSelection(e,t,s){this._assertWriterUsedCorrectly(),this.model.document.selection._setTo(e,t,s)}setSelectionFocus(e,t){this._assertWriterUsedCorrectly(),this.model.document.selection._setFocus(e,t)}setSelectionAttribute(e,t){if(this._assertWriterUsedCorrectly(),"string"==typeof e)this._setSelectionAttribute(e,t);else for(const[t,s]of(0,Z.Z)(e))this._setSelectionAttribute(t,s)}removeSelectionAttribute(e){if(this._assertWriterUsedCorrectly(),"string"==typeof e)this._removeSelectionAttribute(e);else for(const t of e)this._removeSelectionAttribute(t)}overrideSelectionGravity(){return this.model.document.selection._overrideGravity()}restoreSelectionGravity(e){this.model.document.selection._restoreGravity(e)}_setSelectionAttribute(e,t){const s=this.model.document.selection;if(s.isCollapsed&&s.anchor.parent.isEmpty){const o=y.Z._getStoreAttributeKey(e);this.setAttribute(o,t,s.anchor.parent)}s._setAttribute(e,t)}_removeSelectionAttribute(e){const t=this.model.document.selection;if(t.isCollapsed&&t.anchor.parent.isEmpty){const s=y.Z._getStoreAttributeKey(e);this.removeAttribute(s,t.anchor.parent)}t._removeAttribute(e)}_assertWriterUsedCorrectly(){if(this.model._currentWriter!==this)throw new o.ZP("writer-incorrect-use",this)}_addOperationForAffectedMarkers(e,t){for(const s of this.model.markers){if(!s.managedUsingOperations)continue;const o=s.getRange();let i=!1;if("move"===e)i=t.containsPosition(o.start)||t.start.isEqual(o.start)||t.containsPosition(o.end)||t.end.isEqual(o.end);else{const e=t.nodeBefore,s=t.nodeAfter,r=o.start.parent==e&&o.start.isAtEnd,n=o.end.parent==s&&0==o.end.offset,a=o.end.nodeAfter==s,c=o.start.nodeAfter==s;i=r||n||a||c}i&&this.updateMarker(s.name,{range:o})}}}function x(e,t,s,o){const i=e.model,n=i.document;let c,l,d,h=o.start;for(const e of o.getWalker({shallow:!0}))d=e.item.getAttribute(t),c&&l!=d&&(l!=s&&u(),h=c),c=e.nextPosition,l=d;function u(){const o=new a.Z(h,c),d=o.root.document?n.version:null,u=new r.Z(o,t,l,s,d);e.batch.addOperation(u),i.applyOperation(u)}c instanceof v.ZP&&c!=h&&l!=s&&u()}function A(e,t,s,o){const i=e.model,n=i.document,c=o.getAttribute(t);let l,d;if(c!=s){if(o.root===o){const e=o.document?n.version:null;d=new g.Z(o,t,c,s,e)}else{l=new a.Z(v.ZP._createBefore(o),e.createPositionAfter(o));const i=l.root.document?n.version:null;d=new r.Z(l,t,c,s,i)}e.batch.addOperation(d),i.applyOperation(d)}}function j(e,t,s,o,i){const r=e.model,n=r.document,a=new h.Z(t,s,o,r.markers,i,n.version);e.batch.addOperation(a),r.applyOperation(a)}function T(e,t,s,o){let i;if(e.root.document){const s=o.document,r=new v.ZP(s.graveyard,[0]);i=new u.Z(e,t,r,s.version)}else i=new l(e,t);s.addOperation(i),o.applyOperation(i)}function C(e,t){return e===t||e instanceof w&&t instanceof w}var E=s("./packages/ckeditor5-engine/src/model/schema.js");class S{constructor(e){this._markerCollection=e,this._changesInElement=new Map,this._elementSnapshots=new Map,this._changedMarkers=new Map,this._changeCount=0,this._cachedChanges=null,this._cachedChangesWithGraveyard=null,this._refreshedItems=new Set}get isEmpty(){return 0==this._changesInElement.size&&0==this._changedMarkers.size}bufferOperation(e){switch(e.type){case"insert":if(this._isInInsertedElement(e.position.parent))return;this._markInsert(e.position.parent,e.position.offset,e.nodes.maxOffset);break;case"addAttribute":case"removeAttribute":case"changeAttribute":for(const t of e.range.getItems({shallow:!0}))this._isInInsertedElement(t.parent)||this._markAttribute(t);break;case"remove":case"move":case"reinsert":{if(e.sourcePosition.isEqual(e.targetPosition)||e.sourcePosition.getShiftedBy(e.howMany).isEqual(e.targetPosition))return;const t=this._isInInsertedElement(e.sourcePosition.parent),s=this._isInInsertedElement(e.targetPosition.parent);t||this._markRemove(e.sourcePosition.parent,e.sourcePosition.offset,e.howMany),s||this._markInsert(e.targetPosition.parent,e.getMovedRangeStart().offset,e.howMany);break}case"rename":{if(this._isInInsertedElement(e.position.parent))return;this._markRemove(e.position.parent,e.position.offset,1),this._markInsert(e.position.parent,e.position.offset,1);const t=a.Z._createFromPositionAndShift(e.position,1);for(const e of this._markerCollection.getMarkersIntersectingRange(t)){const t=e.getData();this.bufferMarkerChange(e.name,t,t)}break}case"split":{const t=e.splitPosition.parent;this._isInInsertedElement(t)||this._markRemove(t,e.splitPosition.offset,e.howMany),this._isInInsertedElement(e.insertionPosition.parent)||this._markInsert(e.insertionPosition.parent,e.insertionPosition.offset,1),e.graveyardPosition&&this._markRemove(e.graveyardPosition.parent,e.graveyardPosition.offset,1);break}case"merge":{const t=e.sourcePosition.parent;this._isInInsertedElement(t.parent)||this._markRemove(t.parent,t.startOffset,1);const s=e.graveyardPosition.parent;this._markInsert(s,e.graveyardPosition.offset,1);const o=e.targetPosition.parent;this._isInInsertedElement(o)||this._markInsert(o,e.targetPosition.offset,t.maxOffset);break}}this._cachedChanges=null}bufferMarkerChange(e,t,s){const o=this._changedMarkers.get(e);o?(o.newMarkerData=s,null==o.oldMarkerData.range&&null==s.range&&this._changedMarkers.delete(e)):this._changedMarkers.set(e,{newMarkerData:s,oldMarkerData:t})}getMarkersToRemove(){const e=[];for(const[t,s]of this._changedMarkers)null!=s.oldMarkerData.range&&e.push({name:t,range:s.oldMarkerData.range});return e}getMarkersToAdd(){const e=[];for(const[t,s]of this._changedMarkers)null!=s.newMarkerData.range&&e.push({name:t,range:s.newMarkerData.range});return e}getChangedMarkers(){return Array.from(this._changedMarkers).map((([e,t])=>({name:e,data:{oldRange:t.oldMarkerData.range,newRange:t.newMarkerData.range}})))}hasDataChanges(){if(this._changesInElement.size>0)return!0;for(const{newMarkerData:e,oldMarkerData:t}of this._changedMarkers.values()){if(e.affectsData!==t.affectsData)return!0;if(e.affectsData){const s=e.range&&!t.range,o=!e.range&&t.range,i=e.range&&t.range&&!e.range.isEqual(t.range);if(s||o||i)return!0}}return!1}getChanges(e={includeChangesInGraveyard:!1}){if(this._cachedChanges)return e.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice();let t=[];for(const e of this._changesInElement.keys()){const s=this._changesInElement.get(e).sort(((e,t)=>e.offset===t.offset?e.type!=t.type?"remove"==e.type?-1:1:0:e.offset<t.offset?-1:1)),o=this._elementSnapshots.get(e),i=O(e.getChildren()),r=R(o.length,s);let n=0,c=0;for(const s of r)if("i"===s)t.push(this._getInsertDiff(e,n,i[n])),n++;else if("r"===s)t.push(this._getRemoveDiff(e,n,o[c])),c++;else if("a"===s){const s=i[n].attributes,r=o[c].attributes;let l;if("$text"==i[n].name)l=new a.Z(v.ZP._createAt(e,n),v.ZP._createAt(e,n+1));else{const t=e.offsetToIndex(n);l=new a.Z(v.ZP._createAt(e,n),v.ZP._createAt(e.getChild(t),0))}t.push(...this._getAttributesDiff(l,r,s)),n++,c++}else n++,c++}t.sort(((e,t)=>e.position.root!=t.position.root?e.position.root.rootName<t.position.root.rootName?-1:1:e.position.isEqual(t.position)?e.changeCount-t.changeCount:e.position.isBefore(t.position)?-1:1));for(let e=1,s=0;e<t.length;e++){const o=t[s],i=t[e],r="remove"==o.type&&"remove"==i.type&&"$text"==o.name&&"$text"==i.name&&o.position.isEqual(i.position),n="insert"==o.type&&"insert"==i.type&&"$text"==o.name&&"$text"==i.name&&o.position.parent==i.position.parent&&o.position.offset+o.length==i.position.offset,a="attribute"==o.type&&"attribute"==i.type&&o.position.parent==i.position.parent&&o.range.isFlat&&i.range.isFlat&&o.position.offset+o.length==i.position.offset&&o.attributeKey==i.attributeKey&&o.attributeOldValue==i.attributeOldValue&&o.attributeNewValue==i.attributeNewValue;r||n||a?(o.length++,a&&(o.range.end=o.range.end.getShiftedBy(1)),t[e]=null):s=e}t=t.filter((e=>e));for(const e of t)delete e.changeCount,"attribute"==e.type&&(delete e.position,delete e.length);return this._changeCount=0,this._cachedChangesWithGraveyard=t,this._cachedChanges=t.filter(M),e.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice()}getRefreshedItems(){return new Set(this._refreshedItems)}reset(){this._changesInElement.clear(),this._elementSnapshots.clear(),this._changedMarkers.clear(),this._refreshedItems=new Set,this._cachedChanges=null}_refreshItem(e){if(this._isInInsertedElement(e.parent))return;this._markRemove(e.parent,e.startOffset,e.offsetSize),this._markInsert(e.parent,e.startOffset,e.offsetSize),this._refreshedItems.add(e);const t=a.Z._createOn(e);for(const e of this._markerCollection.getMarkersIntersectingRange(t)){const t=e.getData();this.bufferMarkerChange(e.name,t,t)}this._cachedChanges=null}_markInsert(e,t,s){const o={type:"insert",offset:t,howMany:s,count:this._changeCount++};this._markChange(e,o)}_markRemove(e,t,s){const o={type:"remove",offset:t,howMany:s,count:this._changeCount++};this._markChange(e,o),this._removeAllNestedChanges(e,t,s)}_markAttribute(e){const t={type:"attribute",offset:e.startOffset,howMany:e.offsetSize,count:this._changeCount++};this._markChange(e.parent,t)}_markChange(e,t){this._makeSnapshot(e);const s=this._getChangesForElement(e);this._handleChange(t,s),s.push(t);for(let e=0;e<s.length;e++)s[e].howMany<1&&(s.splice(e,1),e--)}_getChangesForElement(e){let t;return this._changesInElement.has(e)?t=this._changesInElement.get(e):(t=[],this._changesInElement.set(e,t)),t}_makeSnapshot(e){this._elementSnapshots.has(e)||this._elementSnapshots.set(e,O(e.getChildren()))}_handleChange(e,t){e.nodesToHandle=e.howMany;for(const s of t){const o=e.offset+e.howMany,i=s.offset+s.howMany;if("insert"==e.type&&("insert"==s.type&&(e.offset<=s.offset?s.offset+=e.howMany:e.offset<i&&(s.howMany+=e.nodesToHandle,e.nodesToHandle=0)),"remove"==s.type&&e.offset<s.offset&&(s.offset+=e.howMany),"attribute"==s.type))if(e.offset<=s.offset)s.offset+=e.howMany;else if(e.offset<i){const i=s.howMany;s.howMany=e.offset-s.offset,t.unshift({type:"attribute",offset:o,howMany:i-s.howMany,count:this._changeCount++})}if("remove"==e.type){if("insert"==s.type)if(o<=s.offset)s.offset-=e.howMany;else if(o<=i)if(e.offset<s.offset){const t=o-s.offset;s.offset=e.offset,s.howMany-=t,e.nodesToHandle-=t}else s.howMany-=e.nodesToHandle,e.nodesToHandle=0;else if(e.offset<=s.offset)e.nodesToHandle-=s.howMany,s.howMany=0;else if(e.offset<i){const t=i-e.offset;s.howMany-=t,e.nodesToHandle-=t}if("remove"==s.type&&(o<=s.offset?s.offset-=e.howMany:e.offset<s.offset&&(e.nodesToHandle+=s.howMany,s.howMany=0)),"attribute"==s.type)if(o<=s.offset)s.offset-=e.howMany;else if(e.offset<s.offset){const t=o-s.offset;s.offset=e.offset,s.howMany-=t}else if(e.offset<i)if(o<=i){const o=s.howMany;s.howMany=e.offset-s.offset;const i=o-s.howMany-e.nodesToHandle;t.unshift({type:"attribute",offset:e.offset,howMany:i,count:this._changeCount++})}else s.howMany-=i-e.offset}if("attribute"==e.type){if("insert"==s.type)if(e.offset<s.offset&&o>s.offset){if(o>i){const e={type:"attribute",offset:i,howMany:o-i,count:this._changeCount++};this._handleChange(e,t),t.push(e)}e.nodesToHandle=s.offset-e.offset,e.howMany=e.nodesToHandle}else e.offset>=s.offset&&e.offset<i&&(o>i?(e.nodesToHandle=o-i,e.offset=i):e.nodesToHandle=0);if("remove"==s.type&&e.offset<s.offset&&o>s.offset){const i={type:"attribute",offset:s.offset,howMany:o-s.offset,count:this._changeCount++};this._handleChange(i,t),t.push(i),e.nodesToHandle=s.offset-e.offset,e.howMany=e.nodesToHandle}"attribute"==s.type&&(e.offset>=s.offset&&o<=i?(e.nodesToHandle=0,e.howMany=0,e.offset=0):e.offset<=s.offset&&o>=i&&(s.howMany=0))}}e.howMany=e.nodesToHandle,delete e.nodesToHandle}_getInsertDiff(e,t,s){return{type:"insert",position:v.ZP._createAt(e,t),name:s.name,attributes:new Map(s.attributes),length:1,changeCount:this._changeCount++}}_getRemoveDiff(e,t,s){return{type:"remove",position:v.ZP._createAt(e,t),name:s.name,attributes:new Map(s.attributes),length:1,changeCount:this._changeCount++}}_getAttributesDiff(e,t,s){const o=[];s=new Map(s);for(const[i,r]of t){const t=s.has(i)?s.get(i):null;t!==r&&o.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:i,attributeOldValue:r,attributeNewValue:t,changeCount:this._changeCount++}),s.delete(i)}for(const[t,i]of s)o.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:t,attributeOldValue:null,attributeNewValue:i,changeCount:this._changeCount++});return o}_isInInsertedElement(e){const t=e.parent;if(!t)return!1;const s=this._changesInElement.get(t),o=e.startOffset;if(s)for(const e of s)if("insert"==e.type&&o>=e.offset&&o<e.offset+e.howMany)return!0;return this._isInInsertedElement(t)}_removeAllNestedChanges(e,t,s){const o=new a.Z(v.ZP._createAt(e,t),v.ZP._createAt(e,t+s));for(const e of o.getItems({shallow:!0}))e.is("element")&&(this._elementSnapshots.delete(e),this._changesInElement.delete(e),this._removeAllNestedChanges(e,0,e.maxOffset))}}function O(e){const t=[];for(const s of e)if(s.is("$text"))for(let e=0;e<s.data.length;e++)t.push({name:"$text",attributes:new Map(s.getAttributes())});else t.push({name:s.name,attributes:new Map(s.getAttributes())});return t}function R(e,t){const s=[];let o=0,i=0;for(const e of t){if(e.offset>o){for(let t=0;t<e.offset-o;t++)s.push("e");i+=e.offset-o}if("insert"==e.type){for(let t=0;t<e.howMany;t++)s.push("i");o=e.offset+e.howMany}else if("remove"==e.type){for(let t=0;t<e.howMany;t++)s.push("r");o=e.offset,i+=e.howMany}else s.push(..."a".repeat(e.howMany).split("")),o=e.offset+e.howMany,i+=e.howMany}if(i<e)for(let t=0;t<e-i-o;t++)s.push("e");return s}function M(e){const t=e.position&&"$graveyard"==e.position.root.rootName,s=e.range&&"$graveyard"==e.range.root.rootName;return!t&&!s}var N=s("./packages/ckeditor5-engine/src/model/history.js"),I=s("./packages/ckeditor5-utils/src/collection.ts"),V=s("./packages/ckeditor5-utils/src/emittermixin.ts"),z=s("./packages/ckeditor5-utils/src/mix.ts");function D(e,t){return!!(s=e.charAt(t-1))&&1==s.length&&/[\ud800-\udbff]/.test(s)&&function(e){return!!e&&1==e.length&&/[\udc00-\udfff]/.test(e)}(e.charAt(t));var s}function B(e,t){return!!(s=e.charAt(t))&&1==s.length&&/[\u0300-\u036f\u1ab0-\u1aff\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f]/.test(s);var s}const F=function(){const e=/\p{Regional_Indicator}{2}/u.source,t="(?:"+[/\p{Emoji}[\u{E0020}-\u{E007E}]+\u{E007F}/u,/\p{Emoji}\u{FE0F}?\u{20E3}/u,/\p{Emoji}\u{FE0F}/u,/(?=\p{General_Category=Other_Symbol})\p{Emoji}\p{Emoji_Modifier}*/u].map((e=>e.source)).join("|")+")";return new RegExp(`${e}|${t}(?:${t})*`,"ug")}();function L(e,t){const s=String(e).matchAll(F);return Array.from(s).some((e=>e.index<t&&t<e.index+e[0].length))}var W=s("./node_modules/lodash-es/clone.js");const q="$graveyard";class ${constructor(e){this.model=e,this.history=new N.Z,this.selection=new y.Z(this),this.roots=new I.Z({idProperty:"rootName"}),this.differ=new S(e.markers),this._postFixers=new Set,this._hasSelectionChangedFromTheLastChangeBlock=!1,this.createRoot("$root",q),this.listenTo(e,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&this.differ.bufferOperation(s)}),{priority:"high"}),this.listenTo(e,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&this.history.addOperation(s)}),{priority:"low"}),this.listenTo(this.selection,"change",(()=>{this._hasSelectionChangedFromTheLastChangeBlock=!0})),this.listenTo(e.markers,"update",((e,t,s,o,i)=>{const r={...t.getData(),range:o};this.differ.bufferMarkerChange(t.name,i,r),null===s&&t.on("change",((e,s)=>{const o=t.getData();this.differ.bufferMarkerChange(t.name,{...o,range:s},o)}))}))}get version(){return this.history.version}set version(e){this.history.version=e}get graveyard(){return this.getRoot(q)}createRoot(e="$root",t="main"){if(this.roots.get(t))throw new o.ZP("model-document-createroot-name-exists",this,{name:t});const s=new w(this,e,t);return this.roots.add(s),s}destroy(){this.selection.destroy(),this.stopListening()}getRoot(e="main"){return this.roots.get(e)}getRootNames(){return Array.from(this.roots,(e=>e.rootName)).filter((e=>e!=q))}registerPostFixer(e){this._postFixers.add(e)}toJSON(){const e=(0,W.Z)(this);return e.selection="[engine.model.DocumentSelection]",e.model="[engine.model.Model]",e}_handleChangeBlock(e){this._hasDocumentChangedFromTheLastChangeBlock()&&(this._callPostFixers(e),this.selection.refresh(),this.differ.hasDataChanges()?this.fire("change:data",e.batch):this.fire("change",e.batch),this.selection.refresh(),this.differ.reset()),this._hasSelectionChangedFromTheLastChangeBlock=!1}_hasDocumentChangedFromTheLastChangeBlock(){return!this.differ.isEmpty||this._hasSelectionChangedFromTheLastChangeBlock}_getDefaultRoot(){for(const e of this.roots)if(e!==this.graveyard)return e;return this.graveyard}_getDefaultRange(){const e=this._getDefaultRoot(),t=this.model,s=t.schema,o=t.createPositionFromPath(e,[0]);return s.getNearestSelectionRange(o)||t.createRange(o)}_validateSelectionRange(e){return H(e.start)&&H(e.end)}_callPostFixers(e){let t=!1;do{for(const s of this._postFixers)if(this.selection.refresh(),t=s(e),t)break}while(t)}}function H(e){const t=e.textNode;if(t){const s=t.data,o=e.offset-t.startOffset;return!D(s,o)&&!B(s,o)}return!0}(0,z.Z)($,V.ZP);var U=s("./packages/ckeditor5-engine/src/model/liverange.js");class K{constructor(){this._markers=new Map}[Symbol.iterator](){return this._markers.values()}has(e){const t=e instanceof G?e.name:e;return this._markers.has(t)}get(e){return this._markers.get(e)||null}_set(e,t,s=!1,i=!1){const r=e instanceof G?e.name:e;if(r.includes(","))throw new o.ZP("markercollection-incorrect-marker-name",this);const n=this._markers.get(r);if(n){const e=n.getData(),o=n.getRange();let a=!1;return o.isEqual(t)||(n._attachLiveRange(U.Z.fromRange(t)),a=!0),s!=n.managedUsingOperations&&(n._managedUsingOperations=s,a=!0),"boolean"==typeof i&&i!=n.affectsData&&(n._affectsData=i,a=!0),a&&this.fire("update:"+r,n,o,t,e),n}const a=U.Z.fromRange(t),c=new G(r,a,s,i);return this._markers.set(r,c),this.fire("update:"+r,c,null,t,{...c.getData(),range:null}),c}_remove(e){const t=e instanceof G?e.name:e,s=this._markers.get(t);return!!s&&(this._markers.delete(t),this.fire("update:"+t,s,s.getRange(),null,s.getData()),this._destroyMarker(s),!0)}_refresh(e){const t=e instanceof G?e.name:e,s=this._markers.get(t);if(!s)throw new o.ZP("markercollection-refresh-marker-not-exists",this);const i=s.getRange();this.fire("update:"+t,s,i,i,s.getData())}*getMarkersAtPosition(e){for(const t of this)t.getRange().containsPosition(e)&&(yield t)}*getMarkersIntersectingRange(e){for(const t of this)null!==t.getRange().getIntersection(e)&&(yield t)}destroy(){for(const e of this._markers.values())this._destroyMarker(e);this._markers=null,this.stopListening()}*getMarkersGroup(e){for(const t of this._markers.values())t.name.startsWith(e+":")&&(yield t)}_destroyMarker(e){e.stopListening(),e._detachLiveRange()}}(0,z.Z)(K,V.ZP);class G{constructor(e,t,s,o){this.name=e,this._liveRange=this._attachLiveRange(t),this._managedUsingOperations=s,this._affectsData=o}get managedUsingOperations(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._managedUsingOperations}get affectsData(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._affectsData}getData(){return{range:this.getRange(),affectsData:this.affectsData,managedUsingOperations:this.managedUsingOperations}}getStart(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._liveRange.start.clone()}getEnd(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._liveRange.end.clone()}getRange(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._liveRange.toRange()}is(e){return"marker"===e||"model:marker"===e}_attachLiveRange(e){return this._liveRange&&this._detachLiveRange(),e.delegate("change:range").to(this),e.delegate("change:content").to(this),this._liveRange=e,e}_detachLiveRange(){this._liveRange.stopDelegating("change:range",this),this._liveRange.stopDelegating("change:content",this),this._liveRange.detach(),this._liveRange=null}}(0,z.Z)(G,V.ZP);var J=s("./packages/ckeditor5-utils/src/observablemixin.ts"),X=s("./packages/ckeditor5-engine/src/model/selection.js"),Q=s("./packages/ckeditor5-engine/src/model/operation/operationfactory.js"),Y=s("./packages/ckeditor5-engine/src/model/liveposition.js");class ee{constructor(e,t,s){this.model=e,this.writer=t,this.position=s,this.canMergeWith=new Set([this.position.parent]),this.schema=e.schema,this._documentFragment=t.createDocumentFragment(),this._documentFragmentPosition=t.createPositionAt(this._documentFragment,0),this._firstNode=null,this._lastNode=null,this._lastAutoParagraph=null,this._filterAttributesOf=[],this._affectedStart=null,this._affectedEnd=null}handleNodes(e){for(const t of Array.from(e))this._handleNode(t);this._insertPartialFragment(),this._lastAutoParagraph&&this._updateLastNodeFromAutoParagraph(this._lastAutoParagraph),this._mergeOnRight(),this.schema.removeDisallowedAttributes(this._filterAttributesOf,this.writer),this._filterAttributesOf=[]}_updateLastNodeFromAutoParagraph(e){const t=this.writer.createPositionAfter(this._lastNode),s=this.writer.createPositionAfter(e);if(s.isAfter(t)){if(this._lastNode=e,this.position.parent!=e||!this.position.isAtEnd)throw new o.ZP("insertcontent-invalid-insertion-position",this);this.position=s,this._setAffectedBoundaries(this.position)}}getSelectionRange(){return this.nodeToSelect?a.Z._createOn(this.nodeToSelect):this.model.schema.getNearestSelectionRange(this.position)}getAffectedRange(){return this._affectedStart?new a.Z(this._affectedStart,this._affectedEnd):null}destroy(){this._affectedStart&&this._affectedStart.detach(),this._affectedEnd&&this._affectedEnd.detach()}_handleNode(e){if(this.schema.isObject(e))return void this._handleObject(e);let t=this._checkAndAutoParagraphToAllowedPosition(e);t||(t=this._checkAndSplitToAllowedPosition(e),t)?(this._appendToFragment(e),this._firstNode||(this._firstNode=e),this._lastNode=e):this._handleDisallowedNode(e)}_insertPartialFragment(){if(this._documentFragment.isEmpty)return;const e=Y.Z.fromPosition(this.position,"toNext");this._setAffectedBoundaries(this.position),this._documentFragment.getChild(0)==this._firstNode&&(this.writer.insert(this._firstNode,this.position),this._mergeOnLeft(),this.position=e.toPosition()),this._documentFragment.isEmpty||this.writer.insert(this._documentFragment,this.position),this._documentFragmentPosition=this.writer.createPositionAt(this._documentFragment,0),this.position=e.toPosition(),e.detach()}_handleObject(e){this._checkAndSplitToAllowedPosition(e)?this._appendToFragment(e):this._tryAutoparagraphing(e)}_handleDisallowedNode(e){e.is("element")?this.handleNodes(e.getChildren()):this._tryAutoparagraphing(e)}_appendToFragment(e){if(!this.schema.checkChild(this.position,e))throw new o.ZP("insertcontent-wrong-position",this,{node:e,position:this.position});this.writer.insert(e,this._documentFragmentPosition),this._documentFragmentPosition=this._documentFragmentPosition.getShiftedBy(e.offsetSize),this.schema.isObject(e)&&!this.schema.checkChild(this.position,"$text")?this.nodeToSelect=e:this.nodeToSelect=null,this._filterAttributesOf.push(e)}_setAffectedBoundaries(e){this._affectedStart||(this._affectedStart=Y.Z.fromPosition(e,"toPrevious")),this._affectedEnd&&!this._affectedEnd.isBefore(e)||(this._affectedEnd&&this._affectedEnd.detach(),this._affectedEnd=Y.Z.fromPosition(e,"toNext"))}_mergeOnLeft(){const e=this._firstNode;if(!(e instanceof b.Z))return;if(!this._canMergeLeft(e))return;const t=Y.Z._createBefore(e);t.stickiness="toNext";const s=Y.Z.fromPosition(this.position,"toNext");this._affectedStart.isEqual(t)&&(this._affectedStart.detach(),this._affectedStart=Y.Z._createAt(t.nodeBefore,"end","toPrevious")),this._firstNode===this._lastNode&&(this._firstNode=t.nodeBefore,this._lastNode=t.nodeBefore),this.writer.merge(t),t.isEqual(this._affectedEnd)&&this._firstNode===this._lastNode&&(this._affectedEnd.detach(),this._affectedEnd=Y.Z._createAt(t.nodeBefore,"end","toNext")),this.position=s.toPosition(),s.detach(),this._filterAttributesOf.push(this.position.parent),t.detach()}_mergeOnRight(){const e=this._lastNode;if(!(e instanceof b.Z))return;if(!this._canMergeRight(e))return;const t=Y.Z._createAfter(e);if(t.stickiness="toNext",!this.position.isEqual(t))throw new o.ZP("insertcontent-invalid-insertion-position",this);this.position=v.ZP._createAt(t.nodeBefore,"end");const s=Y.Z.fromPosition(this.position,"toPrevious");this._affectedEnd.isEqual(t)&&(this._affectedEnd.detach(),this._affectedEnd=Y.Z._createAt(t.nodeBefore,"end","toNext")),this._firstNode===this._lastNode&&(this._firstNode=t.nodeBefore,this._lastNode=t.nodeBefore),this.writer.merge(t),t.getShiftedBy(-1).isEqual(this._affectedStart)&&this._firstNode===this._lastNode&&(this._affectedStart.detach(),this._affectedStart=Y.Z._createAt(t.nodeBefore,0,"toPrevious")),this.position=s.toPosition(),s.detach(),this._filterAttributesOf.push(this.position.parent),t.detach()}_canMergeLeft(e){const t=e.previousSibling;return t instanceof b.Z&&this.canMergeWith.has(t)&&this.model.schema.checkMerge(t,e)}_canMergeRight(e){const t=e.nextSibling;return t instanceof b.Z&&this.canMergeWith.has(t)&&this.model.schema.checkMerge(e,t)}_tryAutoparagraphing(e){const t=this.writer.createElement("paragraph");this._getAllowedIn(this.position.parent,t)&&this.schema.checkChild(t,e)&&(t._appendChild(e),this._handleNode(t))}_checkAndAutoParagraphToAllowedPosition(e){if(this.schema.checkChild(this.position.parent,e))return!0;if(!this.schema.checkChild(this.position.parent,"paragraph")||!this.schema.checkChild("paragraph",e))return!1;this._insertPartialFragment();const t=this.writer.createElement("paragraph");return this.writer.insert(t,this.position),this._setAffectedBoundaries(this.position),this._lastAutoParagraph=t,this.position=this.writer.createPositionAt(t,0),!0}_checkAndSplitToAllowedPosition(e){const t=this._getAllowedIn(this.position.parent,e);if(!t)return!1;for(t!=this.position.parent&&this._insertPartialFragment();t!=this.position.parent;)if(this.position.isAtStart){const e=this.position.parent;this.position=this.writer.createPositionBefore(e),e.isEmpty&&e.parent===t&&this.writer.remove(e)}else if(this.position.isAtEnd)this.position=this.writer.createPositionAfter(this.position.parent);else{const e=this.writer.createPositionAfter(this.position.parent);this._setAffectedBoundaries(this.position),this.writer.split(this.position),this.position=e,this.canMergeWith.add(this.position.nodeAfter)}return!0}_getAllowedIn(e,t){return this.schema.checkChild(e,t)?e:this.schema.isLimit(e)?null:this._getAllowedIn(e.parent,t)}}var te=s("./packages/ckeditor5-utils/src/first.ts"),se=s("./packages/ckeditor5-engine/src/model/utils/findoptimalinsertionrange.js");function oe(e,t,s,i,r={}){if(!e.schema.isObject(t))throw new o.ZP("insertobject-element-not-an-object",e,{object:t});let n;n=s?s.is("selection")?s:e.createSelection(s,i):e.document.selection;let a=n;r.findOptimalPosition&&e.schema.isBlock(t)&&(a=e.createSelection((0,se.K)(n,e,r.findOptimalPosition)));const c=(0,te.Z)(n.getSelectedBlocks()),l={};return c&&Object.assign(l,e.schema.getAttributesWithProperty(c,"copyOnReplace",!0)),e.change((s=>{a.isCollapsed||e.deleteContent(a,{doNotAutoparagraph:!0});let i=t;const n=a.anchor.parent;!e.schema.checkChild(n,t)&&e.schema.checkChild(n,"paragraph")&&e.schema.checkChild("paragraph",t)&&(i=s.createElement("paragraph"),s.insert(t,i)),e.schema.setAllowedAttributes(i,l,s);const c=e.insertContent(i,a);return c.isCollapsed||r.setSelection&&function(e,t,s,i){const r=e.model;if("after"==s){let s=t.nextSibling;!(s&&r.schema.checkChild(s,"$text"))&&r.schema.checkChild(t.parent,"paragraph")&&(s=e.createElement("paragraph"),r.schema.setAllowedAttributes(s,i,e),r.insertContent(s,e.createPositionAfter(t))),s&&e.setSelection(s,0)}else{if("on"!=s)throw new o.ZP("insertobject-invalid-place-parameter-value",r);e.setSelection(t,"on")}}(s,t,r.setSelection,l),c}))}function ie(e,t,s={}){if(t.isCollapsed)return;const o=t.getFirstRange();if("$graveyard"==o.root.rootName)return;const i=e.schema;e.change((e=>{if(!s.doNotResetEntireContent&&function(e,t){const s=e.getLimitElement(t);if(!t.containsEntireContent(s))return!1;const o=t.getFirstRange();if(o.start.parent==o.end.parent)return!1;return e.checkChild(s,"paragraph")}(i,t))return void function(e,t){const s=e.model.schema.getLimitElement(t);e.remove(e.createRangeIn(s)),ce(e,e.createPositionAt(s,0),t)}(e,t);const r={};if(!s.doNotAutoparagraph){const e=t.getSelectedElement();e&&Object.assign(r,i.getAttributesWithProperty(e,"copyOnReplace",!0))}const[n,a]=function(e){const t=e.root.document.model,s=e.start;let o=e.end;if(t.hasContent(e,{ignoreMarkers:!0})){const s=function(e){const t=e.parent,s=t.root.document.model.schema,o=t.getAncestors({parentFirst:!0,includeSelf:!0});for(const e of o){if(s.isLimit(e))return null;if(s.isBlock(e))return e}}(o);if(s&&o.isTouching(t.createPositionAt(s,0))){const s=t.createSelection(e);t.modifySelection(s,{direction:"backward"});const i=s.getLastPosition(),r=t.createRange(i,o);t.hasContent(r,{ignoreMarkers:!0})||(o=i)}}return[Y.Z.fromPosition(s,"toPrevious"),Y.Z.fromPosition(o,"toNext")]}(o);n.isTouching(a)||e.remove(e.createRange(n,a)),s.leaveUnmerged||(!function(e,t,s){const o=e.model;if(!ae(e.model.schema,t,s))return;const[i,r]=function(e,t){const s=e.getAncestors(),o=t.getAncestors();let i=0;for(;s[i]&&s[i]==o[i];)i++;return[s[i],o[i]]}(t,s);if(!i||!r)return;!o.hasContent(i,{ignoreMarkers:!0})&&o.hasContent(r,{ignoreMarkers:!0})?ne(e,t,s,i.parent):re(e,t,s,i.parent)}(e,n,a),i.removeDisallowedAttributes(n.parent.getChildren(),e)),le(e,t,n),!s.doNotAutoparagraph&&function(e,t){const s=e.checkChild(t,"$text"),o=e.checkChild(t,"paragraph");return!s&&o}(i,n)&&ce(e,n,t,r),n.detach(),a.detach()}))}function re(e,t,s,o){const i=t.parent,r=s.parent;if(i!=o&&r!=o){for(t=e.createPositionAfter(i),(s=e.createPositionBefore(r)).isEqual(t)||e.insert(r,t),e.merge(t);s.parent.isEmpty;){const t=s.parent;s=e.createPositionBefore(t),e.remove(t)}ae(e.model.schema,t,s)&&re(e,t,s,o)}}function ne(e,t,s,o){const i=t.parent,r=s.parent;if(i!=o&&r!=o){for(t=e.createPositionAfter(i),(s=e.createPositionBefore(r)).isEqual(t)||e.insert(i,s);t.parent.isEmpty;){const s=t.parent;t=e.createPositionBefore(s),e.remove(s)}s=e.createPositionBefore(r),function(e,t){const s=t.nodeBefore,o=t.nodeAfter;s.name!=o.name&&e.rename(s,o.name);e.clearAttributes(s),e.setAttributes(Object.fromEntries(o.getAttributes()),s),e.merge(t)}(e,s),ae(e.model.schema,t,s)&&ne(e,t,s,o)}}function ae(e,t,s){const o=t.parent,i=s.parent;return o!=i&&(!e.isLimit(o)&&!e.isLimit(i)&&function(e,t,s){const o=new a.Z(e,t);for(const e of o.getWalker())if(s.isLimit(e.item))return!1;return!0}(t,s,e))}function ce(e,t,s,o={}){const i=e.createElement("paragraph");e.model.schema.setAllowedAttributes(i,o,e),e.insert(i,t),le(e,s,e.createPositionAt(i,0))}function le(e,t,s){t instanceof y.Z?e.setSelection(s):t.setTo(s)}var de=s("./packages/ckeditor5-engine/src/model/treewalker.js");const he=' ,.?!:;"-()';function ue(e,t){const{isForward:s,walker:o,unit:i,schema:r,treatEmojiAsSingleUnit:n}=e,{type:a,item:c,nextPosition:l}=t;if("text"==a)return"word"===e.unit?function(e,t){let s=e.position.textNode;if(s){let o=e.position.offset-s.startOffset;for(;!ge(s.data,o,t)&&!me(s,o,t);){e.next();const i=t?e.position.nodeAfter:e.position.nodeBefore;if(i&&i.is("$text")){const o=i.data.charAt(t?0:i.data.length-1);he.includes(o)||(e.next(),s=e.position.textNode)}o=e.position.offset-s.startOffset}}return e.position}(o,s):function(e,t,s){const o=e.position.textNode;if(o){const i=o.data;let r=e.position.offset-o.startOffset;for(;D(i,r)||"character"==t&&B(i,r)||s&&L(i,r);)e.next(),r=e.position.offset-o.startOffset}return e.position}(o,i,n);if(a==(s?"elementStart":"elementEnd")){if(r.isSelectable(c))return v.ZP._createAt(c,s?"after":"before");if(r.checkChild(l,"$text"))return l}else{if(r.isLimit(c))return void o.skip((()=>!0));if(r.checkChild(l,"$text"))return l}}function pe(e,t){const s=e.root,o=v.ZP._createAt(s,t?"end":0);return t?new a.Z(e,o):new a.Z(o,e)}function ge(e,t,s){const o=t+(s?0:-1);return he.includes(e.charAt(o))}function me(e,t,s){return t===(s?e.endOffset:0)}function fe(e,t){const s=[];Array.from(e.getItems({direction:"backward"})).map((e=>t.createRangeOn(e))).filter((t=>(t.start.isAfter(e.start)||t.start.isEqual(e.start))&&(t.end.isBefore(e.end)||t.end.isEqual(e.end)))).forEach((e=>{s.push(e.start.parent),t.remove(e)})),s.forEach((e=>{let s=e;for(;s.parent&&s.isEmpty;){const e=t.createRangeOn(s);s=s.parent,t.remove(e)}}))}function ke(e){e.document.registerPostFixer((t=>function(e,t){const s=t.document.selection,o=t.schema,i=[];let r=!1;for(const e of s.getRanges()){const t=_e(e,o);t&&!t.isEqual(e)?(i.push(t),r=!0):i.push(e)}r&&e.setSelection(function(e){const t=[...e],s=new Set;let o=1;for(;o<t.length;){const e=t[o],i=t.slice(0,o);for(const[r,n]of i.entries())if(!s.has(r))if(e.isEqual(n))s.add(r);else if(e.isIntersecting(n)){s.add(r),s.add(o);const i=e.getJoined(n);t.push(i)}o++}return t.filter(((e,t)=>!s.has(t)))}(i),{backward:s.isBackward})}(t,e)))}function _e(e,t){return e.isCollapsed?function(e,t){const s=e.start,o=t.getNearestSelectionRange(s);if(!o){const e=s.getAncestors().reverse().find((e=>t.isObject(e)));return e?a.Z._createOn(e):null}if(!o.isCollapsed)return o;const i=o.start;if(s.isEqual(i))return null;return new a.Z(i)}(e,t):function(e,t){const{start:s,end:o}=e,i=t.checkChild(s,"$text"),r=t.checkChild(o,"$text"),n=t.getLimitElement(s),c=t.getLimitElement(o);if(n===c){if(i&&r)return null;if(function(e,t,s){const o=e.nodeAfter&&!s.isLimit(e.nodeAfter)||s.checkChild(e,"$text"),i=t.nodeBefore&&!s.isLimit(t.nodeBefore)||s.checkChild(t,"$text");return o||i}(s,o,t)){const e=s.nodeAfter&&t.isSelectable(s.nodeAfter)?null:t.getNearestSelectionRange(s,"forward"),i=o.nodeBefore&&t.isSelectable(o.nodeBefore)?null:t.getNearestSelectionRange(o,"backward"),r=e?e.start:s,n=i?i.end:o;return new a.Z(r,n)}}const l=n&&!n.is("rootElement"),d=c&&!c.is("rootElement");if(l||d){const e=s.nodeAfter&&o.nodeBefore&&s.nodeAfter.parent===o.nodeBefore.parent,i=l&&(!e||!we(s.nodeAfter,t)),r=d&&(!e||!we(o.nodeBefore,t));let h=s,u=o;return i&&(h=v.ZP._createBefore(be(n,t))),r&&(u=v.ZP._createAfter(be(c,t))),new a.Z(h,u)}return null}(e,t)}function be(e,t){let s=e,o=s;for(;t.isLimit(o)&&o.parent;)s=o,o=o.parent;return s}function we(e,t){return e&&t.isSelectable(e)}var ve=s("./packages/ckeditor5-engine/src/model/utils/autoparagraphing.js");class ye{constructor(){this.markers=new K,this.document=new $(this),this.schema=new E.Z,this._pendingChanges=[],this._currentWriter=null,["insertContent","insertObject","deleteContent","modifySelection","getSelectedContent","applyOperation"].forEach((e=>this.decorate(e))),this.on("applyOperation",((e,t)=>{t[0]._validate()}),{priority:"highest"}),this.schema.register("$root",{isLimit:!0}),this.schema.register("$container",{allowIn:["$root","$container"]}),this.schema.register("$block",{allowIn:["$root","$container"],isBlock:!0}),this.schema.register("$blockObject",{allowWhere:"$block",isBlock:!0,isObject:!0}),this.schema.register("$inlineObject",{allowWhere:"$text",allowAttributesOf:"$text",isInline:!0,isObject:!0}),this.schema.register("$text",{allowIn:"$block",isInline:!0,isContent:!0}),this.schema.register("$clipboardHolder",{allowContentOf:"$root",allowChildren:"$text",isLimit:!0}),this.schema.register("$documentFragment",{allowContentOf:"$root",allowChildren:"$text",isLimit:!0}),this.schema.register("$marker"),this.schema.addChildCheck(((e,t)=>{if("$marker"===t.name)return!0})),ke(this),this.document.registerPostFixer(ve._m)}change(e){try{return 0===this._pendingChanges.length?(this._pendingChanges.push({batch:new i,callback:e}),this._runPendingChanges()[0]):e(this._currentWriter)}catch(e){o.ZP.rethrowUnexpectedError(e,this)}}enqueueChange(e,t){try{e?"function"==typeof e?(t=e,e=new i):e instanceof i||(e=new i(e)):e=new i,this._pendingChanges.push({batch:e,callback:t}),1==this._pendingChanges.length&&this._runPendingChanges()}catch(e){o.ZP.rethrowUnexpectedError(e,this)}}applyOperation(e){e._execute()}insertContent(e,t,s){return function(e,t,s,o){return e.change((i=>{let r;r=s?s instanceof X.Z||s instanceof y.Z?s:i.createSelection(s,o):e.document.selection,r.isCollapsed||e.deleteContent(r,{doNotAutoparagraph:!0});const n=new ee(e,i,r.anchor);let a;a=t.is("documentFragment")?t.getChildren():[t],n.handleNodes(a);const c=n.getSelectionRange();c&&(r instanceof y.Z?i.setSelection(c):r.setTo(c));const l=n.getAffectedRange()||e.createRange(r.anchor);return n.destroy(),l}))}(this,e,t,s)}insertObject(e,t,s,o){return oe(this,e,t,s,o)}deleteContent(e,t){ie(this,e,t)}modifySelection(e,t){!function(e,t,s={}){const o=e.schema,i="backward"!=s.direction,r=s.unit?s.unit:"character",n=!!s.treatEmojiAsSingleUnit,a=t.focus,c=new de.Z({boundaries:pe(a,i),singleCharacters:!0,direction:i?"forward":"backward"}),l={walker:c,schema:o,isForward:i,unit:r,treatEmojiAsSingleUnit:n};let d;for(;d=c.next();){if(d.done)return;const s=ue(l,d.value);if(s)return void(t instanceof y.Z?e.change((e=>{e.setSelectionFocus(s)})):t.setFocus(s))}}(this,e,t)}getSelectedContent(e){return function(e,t){return e.change((e=>{const s=e.createDocumentFragment(),o=t.getFirstRange();if(!o||o.isCollapsed)return s;const i=o.start.root,r=o.start.getCommonPath(o.end),n=i.getNodeByPath(r);let a;a=o.start.parent==o.end.parent?o:e.createRange(e.createPositionAt(n,o.start.path[r.length]),e.createPositionAt(n,o.end.path[r.length]+1));const c=a.end.offset-a.start.offset;for(const t of a.getItems({shallow:!0}))t.is("$textProxy")?e.appendText(t.data,t.getAttributes(),s):e.append(e.cloneElement(t,!0),s);if(a!=o){const t=o._getTransformedByMove(a.start,e.createPositionAt(s,0),c)[0],i=e.createRange(e.createPositionAt(s,0),t.start);fe(e.createRange(t.end,e.createPositionAt(s,"end")),e),fe(i,e)}return s}))}(this,e)}hasContent(e,t={}){const s=e instanceof b.Z?a.Z._createIn(e):e;if(s.isCollapsed)return!1;const{ignoreWhitespaces:o=!1,ignoreMarkers:i=!1}=t;if(!i)for(const e of this.markers.getMarkersIntersectingRange(s))if(e.affectsData)return!0;for(const e of s.getItems())if(this.schema.isContent(e)){if(!e.is("$textProxy"))return!0;if(!o)return!0;if(-1!==e.data.search(/\S/))return!0}return!1}createPositionFromPath(e,t,s){return new v.ZP(e,t,s)}createPositionAt(e,t){return v.ZP._createAt(e,t)}createPositionAfter(e){return v.ZP._createAfter(e)}createPositionBefore(e){return v.ZP._createBefore(e)}createRange(e,t){return new a.Z(e,t)}createRangeIn(e){return a.Z._createIn(e)}createRangeOn(e){return a.Z._createOn(e)}createSelection(e,t,s){return new X.Z(e,t,s)}createBatch(e){return new i(e)}createOperationFromJSON(e){return Q.Z.fromJSON(e,this.document)}destroy(){this.document.destroy(),this.stopListening()}_runPendingChanges(){const e=[];for(this.fire("_beforeChanges");this._pendingChanges.length;){const t=this._pendingChanges[0].batch;this._currentWriter=new P(this,t);const s=this._pendingChanges[0].callback(this._currentWriter);e.push(s),this.document._handleChangeBlock(this._currentWriter),this._pendingChanges.shift(),this._currentWriter=null}return this.fire("_afterChanges"),e}}(0,z.Z)(ye,J.Z)},"./packages/ckeditor5-engine/src/model/node.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-utils/src/tomap.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-utils/src/comparearrays.ts");s("./packages/ckeditor5-utils/src/version.ts");class n{constructor(e){this.parent=null,this._attrs=(0,o.Z)(e)}get index(){let e;if(!this.parent)return null;if(null===(e=this.parent.getChildIndex(this)))throw new i.ZP("model-node-not-found-in-parent",this);return e}get startOffset(){let e;if(!this.parent)return null;if(null===(e=this.parent.getChildStartOffset(this)))throw new i.ZP("model-node-not-found-in-parent",this);return e}get offsetSize(){return 1}get endOffset(){return this.parent?this.startOffset+this.offsetSize:null}get nextSibling(){const e=this.index;return null!==e&&this.parent.getChild(e+1)||null}get previousSibling(){const e=this.index;return null!==e&&this.parent.getChild(e-1)||null}get root(){let e=this;for(;e.parent;)e=e.parent;return e}isAttached(){return this.root.is("rootElement")}getPath(){const e=[];let t=this;for(;t.parent;)e.unshift(t.startOffset),t=t.parent;return e}getAncestors(e={includeSelf:!1,parentFirst:!1}){const t=[];let s=e.includeSelf?this:this.parent;for(;s;)t[e.parentFirst?"push":"unshift"](s),s=s.parent;return t}getCommonAncestor(e,t={}){const s=this.getAncestors(t),o=e.getAncestors(t);let i=0;for(;s[i]==o[i]&&s[i];)i++;return 0===i?null:s[i-1]}isBefore(e){if(this==e)return!1;if(this.root!==e.root)return!1;const t=this.getPath(),s=e.getPath(),o=(0,r.Z)(t,s);switch(o){case"prefix":return!0;case"extension":return!1;default:return t[o]<s[o]}}isAfter(e){return this!=e&&(this.root===e.root&&!this.isBefore(e))}hasAttribute(e){return this._attrs.has(e)}getAttribute(e){return this._attrs.get(e)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}toJSON(){const e={};return this._attrs.size&&(e.attributes=Array.from(this._attrs).reduce(((e,t)=>(e[t[0]]=t[1],e)),{})),e}is(e){return"node"===e||"model:node"===e}_clone(){return new n(this._attrs)}_remove(){this.parent._removeChildren(this.index)}_setAttribute(e,t){this._attrs.set(e,t)}_setAttributesTo(e){this._attrs=(0,o.Z)(e)}_removeAttribute(e){return this._attrs.delete(e)}_clearAttributes(){this._attrs.clear()}}},"./packages/ckeditor5-engine/src/model/nodelist.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/node.js"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r{constructor(e){this._nodes=[],e&&this._insertNodes(0,e)}[Symbol.iterator](){return this._nodes[Symbol.iterator]()}get length(){return this._nodes.length}get maxOffset(){return this._nodes.reduce(((e,t)=>e+t.offsetSize),0)}getNode(e){return this._nodes[e]||null}getNodeIndex(e){const t=this._nodes.indexOf(e);return-1==t?null:t}getNodeStartOffset(e){const t=this.getNodeIndex(e);return null===t?null:this._nodes.slice(0,t).reduce(((e,t)=>e+t.offsetSize),0)}indexToOffset(e){if(e==this._nodes.length)return this.maxOffset;const t=this._nodes[e];if(!t)throw new i.ZP("model-nodelist-index-out-of-bounds",this);return this.getNodeStartOffset(t)}offsetToIndex(e){let t=0;for(const s of this._nodes){if(e>=t&&e<t+s.offsetSize)return this.getNodeIndex(s);t+=s.offsetSize}if(t!=e)throw new i.ZP("model-nodelist-offset-out-of-bounds",this,{offset:e,nodeList:this});return this.length}_insertNodes(e,t){for(const e of t)if(!(e instanceof o.Z))throw new i.ZP("model-nodelist-insertnodes-not-node",this);this._nodes.splice(e,0,...t)}_removeNodes(e,t=1){return this._nodes.splice(e,t)}toJSON(){return this._nodes.map((e=>e.toJSON()))}}},"./packages/ckeditor5-engine/src/model/operation/attributeoperation.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.js"),i=s("./packages/ckeditor5-engine/src/model/range.js"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-engine/src/model/operation/utils.js"),a=s("./node_modules/lodash-es/_baseIsEqual.js");const c=function(e,t){return(0,a.Z)(e,t)};class l extends o.Z{constructor(e,t,s,o,i){super(i),this.range=e.clone(),this.key=t,this.oldValue=void 0===s?null:s,this.newValue=void 0===o?null:o}get type(){return null===this.oldValue?"addAttribute":null===this.newValue?"removeAttribute":"changeAttribute"}clone(){return new l(this.range,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new l(this.range,this.key,this.newValue,this.oldValue,this.baseVersion+1)}toJSON(){const e=super.toJSON();return e.range=this.range.toJSON(),e}_validate(){if(!this.range.isFlat)throw new r.ZP("attribute-operation-range-not-flat",this);for(const e of this.range.getItems({shallow:!0})){if(null!==this.oldValue&&!c(e.getAttribute(this.key),this.oldValue))throw new r.ZP("attribute-operation-wrong-old-value",this,{item:e,key:this.key,value:this.oldValue});if(null===this.oldValue&&null!==this.newValue&&e.hasAttribute(this.key))throw new r.ZP("attribute-operation-attribute-exists",this,{node:e,key:this.key})}}_execute(){c(this.oldValue,this.newValue)||(0,n.pX)(this.range,this.key,this.newValue)}static get className(){return"AttributeOperation"}static fromJSON(e,t){return new l(i.Z.fromJSON(e.range,t),e.key,e.oldValue,e.newValue,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/insertoperation.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.js"),i=s("./packages/ckeditor5-engine/src/model/position.js"),r=s("./packages/ckeditor5-engine/src/model/nodelist.js"),n=s("./packages/ckeditor5-engine/src/model/operation/moveoperation.js"),a=s("./packages/ckeditor5-engine/src/model/operation/utils.js"),c=s("./packages/ckeditor5-engine/src/model/text.js"),l=s("./packages/ckeditor5-engine/src/model/element.js"),d=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class h extends o.Z{constructor(e,t,s){super(s),this.position=e.clone(),this.position.stickiness="toNone",this.nodes=new r.Z((0,a.So)(t)),this.shouldReceiveAttributes=!1}get type(){return"insert"}get howMany(){return this.nodes.maxOffset}clone(){const e=new r.Z([...this.nodes].map((e=>e._clone(!0)))),t=new h(this.position,e,this.baseVersion);return t.shouldReceiveAttributes=this.shouldReceiveAttributes,t}getReversed(){const e=this.position.root.document.graveyard,t=new i.ZP(e,[0]);return new n.Z(this.position,this.nodes.maxOffset,t,this.baseVersion+1)}_validate(){const e=this.position.parent;if(!e||e.maxOffset<this.position.offset)throw new d.ZP("insert-operation-position-invalid",this)}_execute(){const e=this.nodes;this.nodes=new r.Z([...e].map((e=>e._clone(!0)))),(0,a.fj)(this.position,e)}toJSON(){const e=super.toJSON();return e.position=this.position.toJSON(),e.nodes=this.nodes.toJSON(),e}static get className(){return"InsertOperation"}static fromJSON(e,t){const s=[];for(const t of e.nodes)t.name?s.push(l.Z.fromJSON(t)):s.push(c.Z.fromJSON(t));const o=new h(i.ZP.fromJSON(e.position,t),s,e.baseVersion);return o.shouldReceiveAttributes=e.shouldReceiveAttributes,o}}},"./packages/ckeditor5-engine/src/model/operation/markeroperation.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.js"),i=s("./packages/ckeditor5-engine/src/model/range.js");class r extends o.Z{constructor(e,t,s,o,i,r){super(r),this.name=e,this.oldRange=t?t.clone():null,this.newRange=s?s.clone():null,this.affectsData=i,this._markers=o}get type(){return"marker"}clone(){return new r(this.name,this.oldRange,this.newRange,this._markers,this.affectsData,this.baseVersion)}getReversed(){return new r(this.name,this.newRange,this.oldRange,this._markers,this.affectsData,this.baseVersion+1)}_execute(){const e=this.newRange?"_set":"_remove";this._markers[e](this.name,this.newRange,!0,this.affectsData)}toJSON(){const e=super.toJSON();return this.oldRange&&(e.oldRange=this.oldRange.toJSON()),this.newRange&&(e.newRange=this.newRange.toJSON()),delete e._markers,e}static get className(){return"MarkerOperation"}static fromJSON(e,t){return new r(e.name,e.oldRange?i.Z.fromJSON(e.oldRange,t):null,e.newRange?i.Z.fromJSON(e.newRange,t):null,t.model.markers,e.affectsData,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/mergeoperation.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.js"),i=s("./packages/ckeditor5-engine/src/model/operation/splitoperation.js"),r=s("./packages/ckeditor5-engine/src/model/position.js"),n=s("./packages/ckeditor5-engine/src/model/range.js"),a=s("./packages/ckeditor5-engine/src/model/operation/utils.js"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class l extends o.Z{constructor(e,t,s,o,i){super(i),this.sourcePosition=e.clone(),this.sourcePosition.stickiness="toPrevious",this.howMany=t,this.targetPosition=s.clone(),this.targetPosition.stickiness="toNext",this.graveyardPosition=o.clone()}get type(){return"merge"}get deletionPosition(){return new r.ZP(this.sourcePosition.root,this.sourcePosition.path.slice(0,-1))}get movedRange(){const e=this.sourcePosition.getShiftedBy(Number.POSITIVE_INFINITY);return new n.Z(this.sourcePosition,e)}clone(){return new this.constructor(this.sourcePosition,this.howMany,this.targetPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.targetPosition._getTransformedByMergeOperation(this),t=this.sourcePosition.path.slice(0,-1),s=new r.ZP(this.sourcePosition.root,t)._getTransformedByMergeOperation(this);return new i.Z(e,this.howMany,s,this.graveyardPosition,this.baseVersion+1)}_validate(){const e=this.sourcePosition.parent,t=this.targetPosition.parent;if(!e.parent)throw new c.ZP("merge-operation-source-position-invalid",this);if(!t.parent)throw new c.ZP("merge-operation-target-position-invalid",this);if(this.howMany!=e.maxOffset)throw new c.ZP("merge-operation-how-many-invalid",this)}_execute(){const e=this.sourcePosition.parent,t=n.Z._createIn(e);(0,a.XF)(t,this.targetPosition),(0,a.XF)(n.Z._createOn(e),this.graveyardPosition)}toJSON(){const e=super.toJSON();return e.sourcePosition=e.sourcePosition.toJSON(),e.targetPosition=e.targetPosition.toJSON(),e.graveyardPosition=e.graveyardPosition.toJSON(),e}static get className(){return"MergeOperation"}static fromJSON(e,t){const s=r.ZP.fromJSON(e.sourcePosition,t),o=r.ZP.fromJSON(e.targetPosition,t),i=r.ZP.fromJSON(e.graveyardPosition,t);return new this(s,e.howMany,o,i,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/moveoperation.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.js"),i=s("./packages/ckeditor5-engine/src/model/position.js"),r=s("./packages/ckeditor5-engine/src/model/range.js"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),a=s("./packages/ckeditor5-utils/src/comparearrays.ts"),c=s("./packages/ckeditor5-engine/src/model/operation/utils.js");class l extends o.Z{constructor(e,t,s,o){super(o),this.sourcePosition=e.clone(),this.sourcePosition.stickiness="toNext",this.howMany=t,this.targetPosition=s.clone(),this.targetPosition.stickiness="toNone"}get type(){return"$graveyard"==this.targetPosition.root.rootName?"remove":"$graveyard"==this.sourcePosition.root.rootName?"reinsert":"move"}clone(){return new this.constructor(this.sourcePosition,this.howMany,this.targetPosition,this.baseVersion)}getMovedRangeStart(){return this.targetPosition._getTransformedByDeletion(this.sourcePosition,this.howMany)}getReversed(){const e=this.sourcePosition._getTransformedByInsertion(this.targetPosition,this.howMany);return new this.constructor(this.getMovedRangeStart(),this.howMany,e,this.baseVersion+1)}_validate(){const e=this.sourcePosition.parent,t=this.targetPosition.parent,s=this.sourcePosition.offset,o=this.targetPosition.offset;if(s+this.howMany>e.maxOffset)throw new n.ZP("move-operation-nodes-do-not-exist",this);if(e===t&&s<o&&o<s+this.howMany)throw new n.ZP("move-operation-range-into-itself",this);if(this.sourcePosition.root==this.targetPosition.root&&"prefix"==(0,a.Z)(this.sourcePosition.getParentPath(),this.targetPosition.getParentPath())){const e=this.sourcePosition.path.length-1;if(this.targetPosition.path[e]>=s&&this.targetPosition.path[e]<s+this.howMany)throw new n.ZP("move-operation-node-into-itself",this)}}_execute(){(0,c.XF)(r.Z._createFromPositionAndShift(this.sourcePosition,this.howMany),this.targetPosition)}toJSON(){const e=super.toJSON();return e.sourcePosition=this.sourcePosition.toJSON(),e.targetPosition=this.targetPosition.toJSON(),e}static get className(){return"MoveOperation"}static fromJSON(e,t){const s=i.ZP.fromJSON(e.sourcePosition,t),o=i.ZP.fromJSON(e.targetPosition,t);return new this(s,e.howMany,o,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/nooperation.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.js");class i extends o.Z{get type(){return"noop"}clone(){return new i(this.baseVersion)}getReversed(){return new i(this.baseVersion+1)}_execute(){}static get className(){return"NoOperation"}}},"./packages/ckeditor5-engine/src/model/operation/operation.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{constructor(e){this.baseVersion=e,this.isDocumentOperation=null!==this.baseVersion,this.batch=null}_validate(){}toJSON(){const e=Object.assign({},this);return e.__className=this.constructor.className,delete e.batch,delete e.isDocumentOperation,e}static get className(){return"Operation"}static fromJSON(e){return new this(e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/operationfactory.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>g});var o=s("./packages/ckeditor5-engine/src/model/operation/attributeoperation.js"),i=s("./packages/ckeditor5-engine/src/model/operation/insertoperation.js"),r=s("./packages/ckeditor5-engine/src/model/operation/markeroperation.js"),n=s("./packages/ckeditor5-engine/src/model/operation/moveoperation.js"),a=s("./packages/ckeditor5-engine/src/model/operation/nooperation.js"),c=s("./packages/ckeditor5-engine/src/model/operation/operation.js"),l=s("./packages/ckeditor5-engine/src/model/operation/renameoperation.js"),d=s("./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.js"),h=s("./packages/ckeditor5-engine/src/model/operation/splitoperation.js"),u=s("./packages/ckeditor5-engine/src/model/operation/mergeoperation.js");const p={};p[o.Z.className]=o.Z,p[i.Z.className]=i.Z,p[r.Z.className]=r.Z,p[n.Z.className]=n.Z,p[a.Z.className]=a.Z,p[c.Z.className]=c.Z,p[l.Z.className]=l.Z,p[d.Z.className]=d.Z,p[h.Z.className]=h.Z,p[u.Z.className]=u.Z;class g{static fromJSON(e,t){return p[e.__className].fromJSON(e,t)}}},"./packages/ckeditor5-engine/src/model/operation/renameoperation.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.js"),i=s("./packages/ckeditor5-engine/src/model/element.js"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-engine/src/model/position.js");class a extends o.Z{constructor(e,t,s,o){super(o),this.position=e,this.position.stickiness="toNext",this.oldName=t,this.newName=s}get type(){return"rename"}clone(){return new a(this.position.clone(),this.oldName,this.newName,this.baseVersion)}getReversed(){return new a(this.position.clone(),this.newName,this.oldName,this.baseVersion+1)}_validate(){const e=this.position.nodeAfter;if(!(e instanceof i.Z))throw new r.ZP("rename-operation-wrong-position",this);if(e.name!==this.oldName)throw new r.ZP("rename-operation-wrong-name",this)}_execute(){this.position.nodeAfter.name=this.newName}toJSON(){const e=super.toJSON();return e.position=this.position.toJSON(),e}static get className(){return"RenameOperation"}static fromJSON(e,t){return new a(n.ZP.fromJSON(e.position,t),e.oldName,e.newName,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.js"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(e,t,s,o,i){super(i),this.root=e,this.key=t,this.oldValue=s,this.newValue=o}get type(){return null===this.oldValue?"addRootAttribute":null===this.newValue?"removeRootAttribute":"changeRootAttribute"}clone(){return new r(this.root,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new r(this.root,this.key,this.newValue,this.oldValue,this.baseVersion+1)}_validate(){if(this.root!=this.root.root||this.root.is("documentFragment"))throw new i.ZP("rootattribute-operation-not-a-root",this,{root:this.root,key:this.key});if(null!==this.oldValue&&this.root.getAttribute(this.key)!==this.oldValue)throw new i.ZP("rootattribute-operation-wrong-old-value",this,{root:this.root,key:this.key});if(null===this.oldValue&&null!==this.newValue&&this.root.hasAttribute(this.key))throw new i.ZP("rootattribute-operation-attribute-exists",this,{root:this.root,key:this.key})}_execute(){null!==this.newValue?this.root._setAttribute(this.key,this.newValue):this.root._removeAttribute(this.key)}toJSON(){const e=super.toJSON();return e.root=this.root.toJSON(),e}static get className(){return"RootAttributeOperation"}static fromJSON(e,t){if(!t.getRoot(e.root))throw new i.ZP("rootattribute-operation-fromjson-no-root",this,{rootName:e.root});return new r(t.getRoot(e.root),e.key,e.oldValue,e.newValue,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/splitoperation.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.js"),i=s("./packages/ckeditor5-engine/src/model/operation/mergeoperation.js"),r=s("./packages/ckeditor5-engine/src/model/position.js"),n=s("./packages/ckeditor5-engine/src/model/range.js"),a=s("./packages/ckeditor5-engine/src/model/operation/utils.js"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class l extends o.Z{constructor(e,t,s,o,i){super(i),this.splitPosition=e.clone(),this.splitPosition.stickiness="toNext",this.howMany=t,this.insertionPosition=s,this.graveyardPosition=o?o.clone():null,this.graveyardPosition&&(this.graveyardPosition.stickiness="toNext")}get type(){return"split"}get moveTargetPosition(){const e=this.insertionPosition.path.slice();return e.push(0),new r.ZP(this.insertionPosition.root,e)}get movedRange(){const e=this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY);return new n.Z(this.splitPosition,e)}clone(){return new this.constructor(this.splitPosition,this.howMany,this.insertionPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.splitPosition.root.document.graveyard,t=new r.ZP(e,[0]);return new i.Z(this.moveTargetPosition,this.howMany,this.splitPosition,t,this.baseVersion+1)}_validate(){const e=this.splitPosition.parent,t=this.splitPosition.offset;if(!e||e.maxOffset<t)throw new c.ZP("split-operation-position-invalid",this);if(!e.parent)throw new c.ZP("split-operation-split-in-root",this);if(this.howMany!=e.maxOffset-this.splitPosition.offset)throw new c.ZP("split-operation-how-many-invalid",this);if(this.graveyardPosition&&!this.graveyardPosition.nodeAfter)throw new c.ZP("split-operation-graveyard-position-invalid",this)}_execute(){const e=this.splitPosition.parent;if(this.graveyardPosition)(0,a.XF)(n.Z._createFromPositionAndShift(this.graveyardPosition,1),this.insertionPosition);else{const t=e._clone();(0,a.fj)(this.insertionPosition,t)}const t=new n.Z(r.ZP._createAt(e,this.splitPosition.offset),r.ZP._createAt(e,e.maxOffset));(0,a.XF)(t,this.moveTargetPosition)}toJSON(){const e=super.toJSON();return e.splitPosition=this.splitPosition.toJSON(),e.insertionPosition=this.insertionPosition.toJSON(),this.graveyardPosition&&(e.graveyardPosition=this.graveyardPosition.toJSON()),e}static get className(){return"SplitOperation"}static getInsertionPosition(e){const t=e.path.slice(0,-1);return t[t.length-1]++,new r.ZP(e.root,t,"toPrevious")}static fromJSON(e,t){const s=r.ZP.fromJSON(e.splitPosition,t),o=r.ZP.fromJSON(e.insertionPosition,t),i=e.graveyardPosition?r.ZP.fromJSON(e.graveyardPosition,t):null;return new this(s,e.howMany,o,i,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/transform.js":(e,t,s)=>{"use strict";s.d(t,{R:()=>b});var o=s("./packages/ckeditor5-engine/src/model/operation/insertoperation.js"),i=s("./packages/ckeditor5-engine/src/model/operation/attributeoperation.js"),r=s("./packages/ckeditor5-engine/src/model/operation/renameoperation.js"),n=s("./packages/ckeditor5-engine/src/model/operation/markeroperation.js"),a=s("./packages/ckeditor5-engine/src/model/operation/moveoperation.js"),c=s("./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.js"),l=s("./packages/ckeditor5-engine/src/model/operation/mergeoperation.js"),d=s("./packages/ckeditor5-engine/src/model/operation/splitoperation.js"),h=s("./packages/ckeditor5-engine/src/model/operation/nooperation.js"),u=s("./packages/ckeditor5-engine/src/model/range.js"),p=s("./packages/ckeditor5-engine/src/model/position.js"),g=s("./packages/ckeditor5-utils/src/comparearrays.ts");const m=new Map;function f(e,t,s){let o=m.get(e);o||(o=new Map,m.set(e,o)),o.set(t,s)}function k(e){return[e]}function _(e,t,s={}){const o=function(e,t){const s=m.get(e);return s&&s.has(t)?s.get(t):k}(e.constructor,t.constructor);try{return o(e=e.clone(),t,s)}catch(e){throw e}}function b(e,t,s){e=e.slice(),t=t.slice();const o=new w(s.document,s.useRelations,s.forceWeakRemove);o.setOriginalOperations(e),o.setOriginalOperations(t);const i=o.originalOperations;if(0==e.length||0==t.length)return{operationsA:e,operationsB:t,originalOperations:i};const r=new WeakMap;for(const t of e)r.set(t,0);const n={nextBaseVersionA:e[e.length-1].baseVersion+1,nextBaseVersionB:t[t.length-1].baseVersion+1,originalOperationsACount:e.length,originalOperationsBCount:t.length};let a=0;for(;a<e.length;){const s=e[a],i=r.get(s);if(i==t.length){a++;continue}const n=t[i],c=_(s,n,o.getContext(s,n,!0)),l=_(n,s,o.getContext(n,s,!1));o.updateRelation(s,n),o.setOriginalOperations(c,s),o.setOriginalOperations(l,n);for(const e of c)r.set(e,i+l.length);e.splice(a,1,...c),t.splice(i,1,...l)}if(s.padWithNoOps){const s=e.length-n.originalOperationsACount,o=t.length-n.originalOperationsBCount;y(e,o-s),y(t,s-o)}return v(e,n.nextBaseVersionB),v(t,n.nextBaseVersionA),{operationsA:e,operationsB:t,originalOperations:i}}class w{constructor(e,t,s=!1){this.originalOperations=new Map,this._history=e.history,this._useRelations=t,this._forceWeakRemove=!!s,this._relations=new Map}setOriginalOperations(e,t=null){const s=t?this.originalOperations.get(t):null;for(const t of e)this.originalOperations.set(t,s||t)}updateRelation(e,t){switch(e.constructor){case a.Z:switch(t.constructor){case l.Z:e.targetPosition.isEqual(t.sourcePosition)||t.movedRange.containsPosition(e.targetPosition)?this._setRelation(e,t,"insertAtSource"):e.targetPosition.isEqual(t.deletionPosition)?this._setRelation(e,t,"insertBetween"):e.targetPosition.isAfter(t.sourcePosition)&&this._setRelation(e,t,"moveTargetAfter");break;case a.Z:e.targetPosition.isEqual(t.sourcePosition)||e.targetPosition.isBefore(t.sourcePosition)?this._setRelation(e,t,"insertBefore"):this._setRelation(e,t,"insertAfter")}break;case d.Z:switch(t.constructor){case l.Z:e.splitPosition.isBefore(t.sourcePosition)&&this._setRelation(e,t,"splitBefore");break;case a.Z:if(e.splitPosition.isEqual(t.sourcePosition)||e.splitPosition.isBefore(t.sourcePosition))this._setRelation(e,t,"splitBefore");else{const s=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.splitPosition.hasSameParentAs(t.sourcePosition)&&s.containsPosition(e.splitPosition)){const o=s.end.offset-e.splitPosition.offset,i=e.splitPosition.offset-s.start.offset;this._setRelation(e,t,{howMany:o,offset:i})}}}break;case l.Z:switch(t.constructor){case l.Z:e.targetPosition.isEqual(t.sourcePosition)||this._setRelation(e,t,"mergeTargetNotMoved"),e.sourcePosition.isEqual(t.targetPosition)&&this._setRelation(e,t,"mergeSourceNotMoved"),e.sourcePosition.isEqual(t.sourcePosition)&&this._setRelation(e,t,"mergeSameElement");break;case d.Z:e.sourcePosition.isEqual(t.splitPosition)&&this._setRelation(e,t,"splitAtSource")}break;case n.Z:{const s=e.newRange;if(!s)return;switch(t.constructor){case a.Z:{const o=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany),i=o.containsPosition(s.start)||o.start.isEqual(s.start),r=o.containsPosition(s.end)||o.end.isEqual(s.end);!i&&!r||o.containsRange(s)||this._setRelation(e,t,{side:i?"left":"right",path:i?s.start.path.slice():s.end.path.slice()});break}case l.Z:{const o=s.start.isEqual(t.targetPosition),i=s.start.isEqual(t.deletionPosition),r=s.end.isEqual(t.deletionPosition),n=s.end.isEqual(t.sourcePosition);(o||i||r||n)&&this._setRelation(e,t,{wasInLeftElement:o,wasStartBeforeMergedElement:i,wasEndBeforeMergedElement:r,wasInRightElement:n});break}}break}}}getContext(e,t,s){return{aIsStrong:s,aWasUndone:this._wasUndone(e),bWasUndone:this._wasUndone(t),abRelation:this._useRelations?this._getRelation(e,t):null,baRelation:this._useRelations?this._getRelation(t,e):null,forceWeakRemove:this._forceWeakRemove}}_wasUndone(e){const t=this.originalOperations.get(e);return t.wasUndone||this._history.isUndoneOperation(t)}_getRelation(e,t){const s=this.originalOperations.get(t),o=this._history.getUndoneOperation(s);if(!o)return null;const i=this.originalOperations.get(e),r=this._relations.get(i);return r&&r.get(o)||null}_setRelation(e,t,s){const o=this.originalOperations.get(e),i=this.originalOperations.get(t);let r=this._relations.get(o);r||(r=new Map,this._relations.set(o,r)),r.set(i,s)}}function v(e,t){for(const s of e)s.baseVersion=t++}function y(e,t){for(let s=0;s<t;s++)e.push(new h.Z(0))}function Z(e,t,s){const o=e.nodes.getNode(0).getAttribute(t);if(o==s)return null;const r=new u.Z(e.position,e.position.getShiftedBy(e.howMany));return new i.Z(r,t,o,s,0)}function P(e,t){return null===e.targetPosition._getTransformedByDeletion(t.sourcePosition,t.howMany)}function x(e,t){const s=[];for(let o=0;o<e.length;o++){const i=e[o],r=new a.Z(i.start,i.end.offset-i.start.offset,t,0);s.push(r);for(let t=o+1;t<e.length;t++)e[t]=e[t]._getTransformedByMove(r.sourcePosition,r.targetPosition,r.howMany)[0];t=t._getTransformedByMove(r.sourcePosition,r.targetPosition,r.howMany)}return s}f(i.Z,i.Z,((e,t,s)=>{if(e.key===t.key&&e.range.start.hasSameParentAs(t.range.start)){const o=e.range.getDifference(t.range).map((t=>new i.Z(t,e.key,e.oldValue,e.newValue,0))),r=e.range.getIntersection(t.range);return r&&s.aIsStrong&&o.push(new i.Z(r,t.key,t.newValue,e.newValue,0)),0==o.length?[new h.Z(0)]:o}return[e]})),f(i.Z,o.Z,((e,t)=>{if(e.range.start.hasSameParentAs(t.position)&&e.range.containsPosition(t.position)){const s=e.range._getTransformedByInsertion(t.position,t.howMany,!t.shouldReceiveAttributes).map((t=>new i.Z(t,e.key,e.oldValue,e.newValue,e.baseVersion)));if(t.shouldReceiveAttributes){const o=Z(t,e.key,e.oldValue);o&&s.unshift(o)}return s}return e.range=e.range._getTransformedByInsertion(t.position,t.howMany,!1)[0],[e]})),f(i.Z,l.Z,((e,t)=>{const s=[];e.range.start.hasSameParentAs(t.deletionPosition)&&(e.range.containsPosition(t.deletionPosition)||e.range.start.isEqual(t.deletionPosition))&&s.push(u.Z._createFromPositionAndShift(t.graveyardPosition,1));const o=e.range._getTransformedByMergeOperation(t);return o.isCollapsed||s.push(o),s.map((t=>new i.Z(t,e.key,e.oldValue,e.newValue,e.baseVersion)))})),f(i.Z,a.Z,((e,t)=>function(e,t){const s=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);let o=null,i=[];s.containsRange(e,!0)?o=e:e.start.hasSameParentAs(s.start)?(i=e.getDifference(s),o=e.getIntersection(s)):i=[e];const r=[];for(let e of i){e=e._getTransformedByDeletion(t.sourcePosition,t.howMany);const s=t.getMovedRangeStart(),o=e.start.hasSameParentAs(s);e=e._getTransformedByInsertion(s,t.howMany,o),r.push(...e)}o&&r.push(o._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany,!1)[0]);return r}(e.range,t).map((t=>new i.Z(t,e.key,e.oldValue,e.newValue,e.baseVersion))))),f(i.Z,d.Z,((e,t)=>{if(e.range.end.isEqual(t.insertionPosition))return t.graveyardPosition||e.range.end.offset++,[e];if(e.range.start.hasSameParentAs(t.splitPosition)&&e.range.containsPosition(t.splitPosition)){const s=e.clone();return s.range=new u.Z(t.moveTargetPosition.clone(),e.range.end._getCombined(t.splitPosition,t.moveTargetPosition)),e.range.end=t.splitPosition.clone(),e.range.end.stickiness="toPrevious",[e,s]}return e.range=e.range._getTransformedBySplitOperation(t),[e]})),f(o.Z,i.Z,((e,t)=>{const s=[e];if(e.shouldReceiveAttributes&&e.position.hasSameParentAs(t.range.start)&&t.range.containsPosition(e.position)){const o=Z(e,t.key,t.newValue);o&&s.push(o)}return s})),f(o.Z,o.Z,((e,t,s)=>(e.position.isEqual(t.position)&&s.aIsStrong||(e.position=e.position._getTransformedByInsertOperation(t)),[e]))),f(o.Z,a.Z,((e,t)=>(e.position=e.position._getTransformedByMoveOperation(t),[e]))),f(o.Z,d.Z,((e,t)=>(e.position=e.position._getTransformedBySplitOperation(t),[e]))),f(o.Z,l.Z,((e,t)=>(e.position=e.position._getTransformedByMergeOperation(t),[e]))),f(n.Z,o.Z,((e,t)=>(e.oldRange&&(e.oldRange=e.oldRange._getTransformedByInsertOperation(t)[0]),e.newRange&&(e.newRange=e.newRange._getTransformedByInsertOperation(t)[0]),[e]))),f(n.Z,n.Z,((e,t,s)=>{if(e.name==t.name){if(!s.aIsStrong)return[new h.Z(0)];e.oldRange=t.newRange?t.newRange.clone():null}return[e]})),f(n.Z,l.Z,((e,t)=>(e.oldRange&&(e.oldRange=e.oldRange._getTransformedByMergeOperation(t)),e.newRange&&(e.newRange=e.newRange._getTransformedByMergeOperation(t)),[e]))),f(n.Z,a.Z,((e,t,s)=>{if(e.oldRange&&(e.oldRange=u.Z._createFromRanges(e.oldRange._getTransformedByMoveOperation(t))),e.newRange){if(s.abRelation){const o=u.Z._createFromRanges(e.newRange._getTransformedByMoveOperation(t));if("left"==s.abRelation.side&&t.targetPosition.isEqual(e.newRange.start))return e.newRange.start.path=s.abRelation.path,e.newRange.end=o.end,[e];if("right"==s.abRelation.side&&t.targetPosition.isEqual(e.newRange.end))return e.newRange.start=o.start,e.newRange.end.path=s.abRelation.path,[e]}e.newRange=u.Z._createFromRanges(e.newRange._getTransformedByMoveOperation(t))}return[e]})),f(n.Z,d.Z,((e,t,s)=>{if(e.oldRange&&(e.oldRange=e.oldRange._getTransformedBySplitOperation(t)),e.newRange){if(s.abRelation){const o=e.newRange._getTransformedBySplitOperation(t);return e.newRange.start.isEqual(t.splitPosition)&&s.abRelation.wasStartBeforeMergedElement?e.newRange.start=p.ZP._createAt(t.insertionPosition):e.newRange.start.isEqual(t.splitPosition)&&!s.abRelation.wasInLeftElement&&(e.newRange.start=p.ZP._createAt(t.moveTargetPosition)),e.newRange.end.isEqual(t.splitPosition)&&s.abRelation.wasInRightElement?e.newRange.end=p.ZP._createAt(t.moveTargetPosition):e.newRange.end.isEqual(t.splitPosition)&&s.abRelation.wasEndBeforeMergedElement?e.newRange.end=p.ZP._createAt(t.insertionPosition):e.newRange.end=o.end,[e]}e.newRange=e.newRange._getTransformedBySplitOperation(t)}return[e]})),f(l.Z,o.Z,((e,t)=>(e.sourcePosition.hasSameParentAs(t.position)&&(e.howMany+=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByInsertOperation(t),e.targetPosition=e.targetPosition._getTransformedByInsertOperation(t),[e]))),f(l.Z,l.Z,((e,t,s)=>{if(e.sourcePosition.isEqual(t.sourcePosition)&&e.targetPosition.isEqual(t.targetPosition)){if(s.bWasUndone){const s=t.graveyardPosition.path.slice();return s.push(0),e.sourcePosition=new p.ZP(t.graveyardPosition.root,s),e.howMany=0,[e]}return[new h.Z(0)]}if(e.sourcePosition.isEqual(t.sourcePosition)&&!e.targetPosition.isEqual(t.targetPosition)&&!s.bWasUndone&&"splitAtSource"!=s.abRelation){const o="$graveyard"==e.targetPosition.root.rootName,i="$graveyard"==t.targetPosition.root.rootName,r=o&&!i;if(i&&!o||!r&&s.aIsStrong){const s=t.targetPosition._getTransformedByMergeOperation(t),o=e.targetPosition._getTransformedByMergeOperation(t);return[new a.Z(s,e.howMany,o,0)]}return[new h.Z(0)]}return e.sourcePosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByMergeOperation(t),e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),e.graveyardPosition.isEqual(t.graveyardPosition)&&s.aIsStrong||(e.graveyardPosition=e.graveyardPosition._getTransformedByMergeOperation(t)),[e]})),f(l.Z,a.Z,((e,t,s)=>{const o=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);return"remove"==t.type&&!s.bWasUndone&&!s.forceWeakRemove&&e.deletionPosition.hasSameParentAs(t.sourcePosition)&&o.containsPosition(e.sourcePosition)?[new h.Z(0)]:(e.sourcePosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.sourcePosition.hasSameParentAs(t.sourcePosition)&&(e.howMany-=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByMoveOperation(t),e.targetPosition=e.targetPosition._getTransformedByMoveOperation(t),e.graveyardPosition.isEqual(t.targetPosition)||(e.graveyardPosition=e.graveyardPosition._getTransformedByMoveOperation(t)),[e])})),f(l.Z,d.Z,((e,t,s)=>{if(t.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedByDeletion(t.graveyardPosition,1),e.deletionPosition.isEqual(t.graveyardPosition)&&(e.howMany=t.howMany)),e.targetPosition.isEqual(t.splitPosition)){const o=0!=t.howMany,i=t.graveyardPosition&&e.deletionPosition.isEqual(t.graveyardPosition);if(o||i||"mergeTargetNotMoved"==s.abRelation)return e.sourcePosition=e.sourcePosition._getTransformedBySplitOperation(t),[e]}if(e.sourcePosition.isEqual(t.splitPosition)){if("mergeSourceNotMoved"==s.abRelation)return e.howMany=0,e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e];if("mergeSameElement"==s.abRelation||e.sourcePosition.offset>0)return e.sourcePosition=t.moveTargetPosition.clone(),e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e]}return e.sourcePosition.hasSameParentAs(t.splitPosition)&&(e.howMany=t.splitPosition.offset),e.sourcePosition=e.sourcePosition._getTransformedBySplitOperation(t),e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e]})),f(a.Z,o.Z,((e,t)=>{const s=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany)._getTransformedByInsertOperation(t,!1)[0];return e.sourcePosition=s.start,e.howMany=s.end.offset-s.start.offset,e.targetPosition.isEqual(t.position)||(e.targetPosition=e.targetPosition._getTransformedByInsertOperation(t)),[e]})),f(a.Z,a.Z,((e,t,s)=>{const o=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany),i=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);let r,n=s.aIsStrong,a=!s.aIsStrong;if("insertBefore"==s.abRelation||"insertAfter"==s.baRelation?a=!0:"insertAfter"!=s.abRelation&&"insertBefore"!=s.baRelation||(a=!1),r=e.targetPosition.isEqual(t.targetPosition)&&a?e.targetPosition._getTransformedByDeletion(t.sourcePosition,t.howMany):e.targetPosition._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),P(e,t)&&P(t,e))return[t.getReversed()];if(o.containsPosition(t.targetPosition)&&o.containsRange(i,!0))return o.start=o.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),o.end=o.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),x([o],r);if(i.containsPosition(e.targetPosition)&&i.containsRange(o,!0))return o.start=o.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),o.end=o.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),x([o],r);const c=(0,g.Z)(e.sourcePosition.getParentPath(),t.sourcePosition.getParentPath());if("prefix"==c||"extension"==c)return o.start=o.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),o.end=o.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),x([o],r);"remove"!=e.type||"remove"==t.type||s.aWasUndone||s.forceWeakRemove?"remove"==e.type||"remove"!=t.type||s.bWasUndone||s.forceWeakRemove||(n=!1):n=!0;const l=[],d=o.getDifference(i);for(const e of d){e.start=e.start._getTransformedByDeletion(t.sourcePosition,t.howMany),e.end=e.end._getTransformedByDeletion(t.sourcePosition,t.howMany);const s="same"==(0,g.Z)(e.start.getParentPath(),t.getMovedRangeStart().getParentPath()),o=e._getTransformedByInsertion(t.getMovedRangeStart(),t.howMany,s);l.push(...o)}const p=o.getIntersection(i);return null!==p&&n&&(p.start=p.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),p.end=p.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),0===l.length?l.push(p):1==l.length?i.start.isBefore(o.start)||i.start.isEqual(o.start)?l.unshift(p):l.push(p):l.splice(1,0,p)),0===l.length?[new h.Z(e.baseVersion)]:x(l,r)})),f(a.Z,d.Z,((e,t,s)=>{let o=e.targetPosition.clone();e.targetPosition.isEqual(t.insertionPosition)&&t.graveyardPosition&&"moveTargetAfter"!=s.abRelation||(o=e.targetPosition._getTransformedBySplitOperation(t));const i=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany);if(i.end.isEqual(t.insertionPosition))return t.graveyardPosition||e.howMany++,e.targetPosition=o,[e];if(i.start.hasSameParentAs(t.splitPosition)&&i.containsPosition(t.splitPosition)){let e=new u.Z(t.splitPosition,i.end);e=e._getTransformedBySplitOperation(t);return x([new u.Z(i.start,t.splitPosition),e],o)}e.targetPosition.isEqual(t.splitPosition)&&"insertAtSource"==s.abRelation&&(o=t.moveTargetPosition),e.targetPosition.isEqual(t.insertionPosition)&&"insertBetween"==s.abRelation&&(o=e.targetPosition);const r=[i._getTransformedBySplitOperation(t)];if(t.graveyardPosition){const o=i.start.isEqual(t.graveyardPosition)||i.containsPosition(t.graveyardPosition);e.howMany>1&&o&&!s.aWasUndone&&r.push(u.Z._createFromPositionAndShift(t.insertionPosition,1))}return x(r,o)})),f(a.Z,l.Z,((e,t,s)=>{const o=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany);if(t.deletionPosition.hasSameParentAs(e.sourcePosition)&&o.containsPosition(t.sourcePosition))if("remove"!=e.type||s.forceWeakRemove){if(1==e.howMany)return s.bWasUndone?(e.sourcePosition=t.graveyardPosition.clone(),e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),[e]):[new h.Z(0)]}else if(!s.aWasUndone){const s=[];let o=t.graveyardPosition.clone(),i=t.targetPosition._getTransformedByMergeOperation(t);e.howMany>1&&(s.push(new a.Z(e.sourcePosition,e.howMany-1,e.targetPosition,0)),o=o._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany-1),i=i._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany-1));const r=t.deletionPosition._getCombined(e.sourcePosition,e.targetPosition),n=new a.Z(o,1,r,0),c=n.getMovedRangeStart().path.slice();c.push(0);const l=new p.ZP(n.targetPosition.root,c);i=i._getTransformedByMove(o,r,1);const d=new a.Z(i,t.howMany,l,0);return s.push(n),s.push(d),s}const i=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany)._getTransformedByMergeOperation(t);return e.sourcePosition=i.start,e.howMany=i.end.offset-i.start.offset,e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),[e]})),f(r.Z,o.Z,((e,t)=>(e.position=e.position._getTransformedByInsertOperation(t),[e]))),f(r.Z,l.Z,((e,t)=>e.position.isEqual(t.deletionPosition)?(e.position=t.graveyardPosition.clone(),e.position.stickiness="toNext",[e]):(e.position=e.position._getTransformedByMergeOperation(t),[e]))),f(r.Z,a.Z,((e,t)=>(e.position=e.position._getTransformedByMoveOperation(t),[e]))),f(r.Z,r.Z,((e,t,s)=>{if(e.position.isEqual(t.position)){if(!s.aIsStrong)return[new h.Z(0)];e.oldName=t.newName}return[e]})),f(r.Z,d.Z,((e,t)=>{const s=e.position.path,o=t.splitPosition.getParentPath();if("same"==(0,g.Z)(s,o)&&!t.graveyardPosition){const t=new r.Z(e.position.getShiftedBy(1),e.oldName,e.newName,0);return[e,t]}return e.position=e.position._getTransformedBySplitOperation(t),[e]})),f(c.Z,c.Z,((e,t,s)=>{if(e.root===t.root&&e.key===t.key){if(!s.aIsStrong||e.newValue===t.newValue)return[new h.Z(0)];e.oldValue=t.newValue}return[e]})),f(d.Z,o.Z,((e,t)=>(e.splitPosition.hasSameParentAs(t.position)&&e.splitPosition.offset<t.position.offset&&(e.howMany+=t.howMany),e.splitPosition=e.splitPosition._getTransformedByInsertOperation(t),e.insertionPosition=e.insertionPosition._getTransformedByInsertOperation(t),[e]))),f(d.Z,l.Z,((e,t,s)=>{if(!e.graveyardPosition&&!s.bWasUndone&&e.splitPosition.hasSameParentAs(t.sourcePosition)){const s=t.graveyardPosition.path.slice();s.push(0);const o=new p.ZP(t.graveyardPosition.root,s),i=d.Z.getInsertionPosition(new p.ZP(t.graveyardPosition.root,s)),r=new d.Z(o,0,i,null,0);return e.splitPosition=e.splitPosition._getTransformedByMergeOperation(t),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),e.graveyardPosition=r.insertionPosition.clone(),e.graveyardPosition.stickiness="toNext",[r,e]}return e.splitPosition.hasSameParentAs(t.deletionPosition)&&!e.splitPosition.isAfter(t.deletionPosition)&&e.howMany--,e.splitPosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.splitPosition=e.splitPosition._getTransformedByMergeOperation(t),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),e.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedByMergeOperation(t)),[e]})),f(d.Z,a.Z,((e,t,s)=>{const o=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.graveyardPosition){const i=o.start.isEqual(e.graveyardPosition)||o.containsPosition(e.graveyardPosition);if(!s.bWasUndone&&i){const s=e.splitPosition._getTransformedByMoveOperation(t),o=e.graveyardPosition._getTransformedByMoveOperation(t),i=o.path.slice();i.push(0);const r=new p.ZP(o.root,i);return[new a.Z(s,e.howMany,r,0)]}e.graveyardPosition=e.graveyardPosition._getTransformedByMoveOperation(t)}const i=e.splitPosition.isEqual(t.targetPosition);if(i&&("insertAtSource"==s.baRelation||"splitBefore"==s.abRelation))return e.howMany+=t.howMany,e.splitPosition=e.splitPosition._getTransformedByDeletion(t.sourcePosition,t.howMany),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),[e];if(i&&s.abRelation&&s.abRelation.howMany){const{howMany:t,offset:o}=s.abRelation;return e.howMany+=t,e.splitPosition=e.splitPosition.getShiftedBy(o),[e]}if(e.splitPosition.hasSameParentAs(t.sourcePosition)&&o.containsPosition(e.splitPosition)){const s=t.howMany-(e.splitPosition.offset-t.sourcePosition.offset);return e.howMany-=s,e.splitPosition.hasSameParentAs(t.targetPosition)&&e.splitPosition.offset<t.targetPosition.offset&&(e.howMany+=t.howMany),e.splitPosition=t.sourcePosition.clone(),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),[e]}return t.sourcePosition.isEqual(t.targetPosition)||(e.splitPosition.hasSameParentAs(t.sourcePosition)&&e.splitPosition.offset<=t.sourcePosition.offset&&(e.howMany-=t.howMany),e.splitPosition.hasSameParentAs(t.targetPosition)&&e.splitPosition.offset<t.targetPosition.offset&&(e.howMany+=t.howMany)),e.splitPosition.stickiness="toNone",e.splitPosition=e.splitPosition._getTransformedByMoveOperation(t),e.splitPosition.stickiness="toNext",e.graveyardPosition?e.insertionPosition=e.insertionPosition._getTransformedByMoveOperation(t):e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),[e]})),f(d.Z,d.Z,((e,t,s)=>{if(e.splitPosition.isEqual(t.splitPosition)){if(!e.graveyardPosition&&!t.graveyardPosition)return[new h.Z(0)];if(e.graveyardPosition&&t.graveyardPosition&&e.graveyardPosition.isEqual(t.graveyardPosition))return[new h.Z(0)];if("splitBefore"==s.abRelation)return e.howMany=0,e.graveyardPosition=e.graveyardPosition._getTransformedBySplitOperation(t),[e]}if(e.graveyardPosition&&t.graveyardPosition&&e.graveyardPosition.isEqual(t.graveyardPosition)){const o="$graveyard"==e.splitPosition.root.rootName,i="$graveyard"==t.splitPosition.root.rootName,r=o&&!i;if(i&&!o||!r&&s.aIsStrong){const s=[];return t.howMany&&s.push(new a.Z(t.moveTargetPosition,t.howMany,t.splitPosition,0)),e.howMany&&s.push(new a.Z(e.splitPosition,e.howMany,e.moveTargetPosition,0)),s}return[new h.Z(0)]}if(e.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedBySplitOperation(t)),e.splitPosition.isEqual(t.insertionPosition)&&"splitBefore"==s.abRelation)return e.howMany++,[e];if(t.splitPosition.isEqual(e.insertionPosition)&&"splitBefore"==s.baRelation){const s=t.insertionPosition.path.slice();s.push(0);const o=new p.ZP(t.insertionPosition.root,s);return[e,new a.Z(e.insertionPosition,1,o,0)]}return e.splitPosition.hasSameParentAs(t.splitPosition)&&e.splitPosition.offset<t.splitPosition.offset&&(e.howMany-=t.howMany),e.splitPosition=e.splitPosition._getTransformedBySplitOperation(t),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),[e]}))},"./packages/ckeditor5-engine/src/model/operation/utils.js":(e,t,s)=>{"use strict";s.d(t,{So:()=>g,X9:()=>h,XF:()=>u,fj:()=>d,pX:()=>p});var o=s("./packages/ckeditor5-engine/src/model/node.js"),i=s("./packages/ckeditor5-engine/src/model/text.js"),r=s("./packages/ckeditor5-engine/src/model/textproxy.js"),n=s("./packages/ckeditor5-engine/src/model/range.js"),a=s("./packages/ckeditor5-engine/src/model/documentfragment.js"),c=s("./packages/ckeditor5-engine/src/model/nodelist.js"),l=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");function d(e,t){const s=(t=g(t)).reduce(((e,t)=>e+t.offsetSize),0),o=e.parent;f(e);const i=e.index;return o._insertChild(i,t),m(o,i+t.length),m(o,i),new n.Z(e,e.getShiftedBy(s))}function h(e){if(!e.isFlat)throw new l.ZP("operation-utils-remove-range-not-flat",this);const t=e.start.parent;f(e.start),f(e.end);const s=t._removeChildren(e.start.index,e.end.index-e.start.index);return m(t,e.start.index),s}function u(e,t){if(!e.isFlat)throw new l.ZP("operation-utils-move-range-not-flat",this);const s=h(e);return d(t=t._getTransformedByDeletion(e.start,e.end.offset-e.start.offset),s)}function p(e,t,s){f(e.start),f(e.end);for(const o of e.getItems({shallow:!0})){const e=o.is("$textProxy")?o.textNode:o;null!==s?e._setAttribute(t,s):e._removeAttribute(t),m(e.parent,e.index)}m(e.end.parent,e.end.index)}function g(e){const t=[];e instanceof Array||(e=[e]);for(let s=0;s<e.length;s++)if("string"==typeof e[s])t.push(new i.Z(e[s]));else if(e[s]instanceof r.Z)t.push(new i.Z(e[s].data,e[s].getAttributes()));else if(e[s]instanceof a.Z||e[s]instanceof c.Z)for(const o of e[s])t.push(o);else e[s]instanceof o.Z&&t.push(e[s]);for(let e=1;e<t.length;e++){const s=t[e],o=t[e-1];s instanceof i.Z&&o instanceof i.Z&&k(s,o)&&(t.splice(e-1,2,new i.Z(o.data+s.data,o.getAttributes())),e--)}return t}function m(e,t){const s=e.getChild(t-1),o=e.getChild(t);if(s&&o&&s.is("$text")&&o.is("$text")&&k(s,o)){const r=new i.Z(s.data+o.data,s.getAttributes());e._removeChildren(t-1,2),e._insertChild(t-1,r)}}function f(e){const t=e.textNode,s=e.parent;if(t){const o=e.offset-t.startOffset,r=t.index;s._removeChildren(r,1);const n=new i.Z(t.data.substr(0,o),t.getAttributes()),a=new i.Z(t.data.substr(o),t.getAttributes());s._insertChild(r,[n,a])}}function k(e,t){const s=e.getAttributes(),o=t.getAttributes();for(const e of s){if(e[1]!==t.getAttribute(e[0]))return!1;o.next()}return o.next().done}},"./packages/ckeditor5-engine/src/model/position.js":(e,t,s)=>{"use strict";s.d(t,{Rt:()=>a,Ux:()=>c,YV:()=>l,ZP:()=>n});var o=s("./packages/ckeditor5-engine/src/model/treewalker.js"),i=s("./packages/ckeditor5-utils/src/comparearrays.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");s("./packages/ckeditor5-utils/src/version.ts");class n{constructor(e,t,s="toNone"){if(!e.is("element")&&!e.is("documentFragment"))throw new r.ZP("model-position-root-invalid",e);if(!(t instanceof Array)||0===t.length)throw new r.ZP("model-position-path-incorrect-format",e,{path:t});e.is("rootElement")?t=t.slice():(t=[...e.getPath(),...t],e=e.root),this.root=e,this.path=t,this.stickiness=s}get offset(){return this.path[this.path.length-1]}set offset(e){this.path[this.path.length-1]=e}get parent(){let e=this.root;for(let t=0;t<this.path.length-1;t++)if(e=e.getChild(e.offsetToIndex(this.path[t])),!e)throw new r.ZP("model-position-path-incorrect",this,{position:this});if(e.is("$text"))throw new r.ZP("model-position-path-incorrect",this,{position:this});return e}get index(){return this.parent.offsetToIndex(this.offset)}get textNode(){return a(this,this.parent)}get nodeAfter(){const e=this.parent;return c(this,e,a(this,e))}get nodeBefore(){const e=this.parent;return l(this,e,a(this,e))}get isAtStart(){return 0===this.offset}get isAtEnd(){return this.offset==this.parent.maxOffset}compareWith(e){if(this.root!=e.root)return"different";const t=(0,i.Z)(this.path,e.path);switch(t){case"same":return"same";case"prefix":return"before";case"extension":return"after";default:return this.path[t]<e.path[t]?"before":"after"}}getLastMatchingPosition(e,t={}){t.startPosition=this;const s=new o.Z(t);return s.skip(e),s.position}getParentPath(){return this.path.slice(0,-1)}getAncestors(){const e=this.parent;return e.is("documentFragment")?[e]:e.getAncestors({includeSelf:!0})}findAncestor(e){const t=this.parent;return t.is("element")?t.findAncestor(e,{includeSelf:!0}):null}getCommonPath(e){if(this.root!=e.root)return[];const t=(0,i.Z)(this.path,e.path),s="string"==typeof t?Math.min(this.path.length,e.path.length):t;return this.path.slice(0,s)}getCommonAncestor(e){const t=this.getAncestors(),s=e.getAncestors();let o=0;for(;t[o]==s[o]&&t[o];)o++;return 0===o?null:t[o-1]}getShiftedBy(e){const t=this.clone(),s=t.offset+e;return t.offset=s<0?0:s,t}isAfter(e){return"after"==this.compareWith(e)}isBefore(e){return"before"==this.compareWith(e)}isEqual(e){return"same"==this.compareWith(e)}isTouching(e){let t=null,s=null;switch(this.compareWith(e)){case"same":return!0;case"before":t=n._createAt(this),s=n._createAt(e);break;case"after":t=n._createAt(e),s=n._createAt(this);break;default:return!1}let o=t.parent;for(;t.path.length+s.path.length;){if(t.isEqual(s))return!0;if(t.path.length>s.path.length){if(t.offset!==o.maxOffset)return!1;t.path=t.path.slice(0,-1),o=o.parent,t.offset++}else{if(0!==s.offset)return!1;s.path=s.path.slice(0,-1)}}}is(e){return"position"===e||"model:position"===e}hasSameParentAs(e){if(this.root!==e.root)return!1;const t=this.getParentPath(),s=e.getParentPath();return"same"==(0,i.Z)(t,s)}getTransformedByOperation(e){let t;switch(e.type){case"insert":t=this._getTransformedByInsertOperation(e);break;case"move":case"remove":case"reinsert":t=this._getTransformedByMoveOperation(e);break;case"split":t=this._getTransformedBySplitOperation(e);break;case"merge":t=this._getTransformedByMergeOperation(e);break;default:t=n._createAt(this)}return t}_getTransformedByInsertOperation(e){return this._getTransformedByInsertion(e.position,e.howMany)}_getTransformedByMoveOperation(e){return this._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany)}_getTransformedBySplitOperation(e){const t=e.movedRange;return t.containsPosition(this)||t.start.isEqual(this)&&"toNext"==this.stickiness?this._getCombined(e.splitPosition,e.moveTargetPosition):e.graveyardPosition?this._getTransformedByMove(e.graveyardPosition,e.insertionPosition,1):this._getTransformedByInsertion(e.insertionPosition,1)}_getTransformedByMergeOperation(e){const t=e.movedRange;let s;return t.containsPosition(this)||t.start.isEqual(this)?(s=this._getCombined(e.sourcePosition,e.targetPosition),e.sourcePosition.isBefore(e.targetPosition)&&(s=s._getTransformedByDeletion(e.deletionPosition,1))):s=this.isEqual(e.deletionPosition)?n._createAt(e.deletionPosition):this._getTransformedByMove(e.deletionPosition,e.graveyardPosition,1),s}_getTransformedByDeletion(e,t){const s=n._createAt(this);if(this.root!=e.root)return s;if("same"==(0,i.Z)(e.getParentPath(),this.getParentPath())){if(e.offset<this.offset){if(e.offset+t>this.offset)return null;s.offset-=t}}else if("prefix"==(0,i.Z)(e.getParentPath(),this.getParentPath())){const o=e.path.length-1;if(e.offset<=this.path[o]){if(e.offset+t>this.path[o])return null;s.path[o]-=t}}return s}_getTransformedByInsertion(e,t){const s=n._createAt(this);if(this.root!=e.root)return s;if("same"==(0,i.Z)(e.getParentPath(),this.getParentPath()))(e.offset<this.offset||e.offset==this.offset&&"toPrevious"!=this.stickiness)&&(s.offset+=t);else if("prefix"==(0,i.Z)(e.getParentPath(),this.getParentPath())){const o=e.path.length-1;e.offset<=this.path[o]&&(s.path[o]+=t)}return s}_getTransformedByMove(e,t,s){if(t=t._getTransformedByDeletion(e,s),e.isEqual(t))return n._createAt(this);const o=this._getTransformedByDeletion(e,s);return null===o||e.isEqual(this)&&"toNext"==this.stickiness||e.getShiftedBy(s).isEqual(this)&&"toPrevious"==this.stickiness?this._getCombined(e,t):o._getTransformedByInsertion(t,s)}_getCombined(e,t){const s=e.path.length-1,o=n._createAt(t);return o.stickiness=this.stickiness,o.offset=o.offset+this.path[s]-e.offset,o.path=[...o.path,...this.path.slice(s+1)],o}toJSON(){return{root:this.root.toJSON(),path:Array.from(this.path),stickiness:this.stickiness}}clone(){return new this.constructor(this.root,this.path,this.stickiness)}static _createAt(e,t,s="toNone"){if(e instanceof n)return new n(e.root,e.path,e.stickiness);{const o=e;if("end"==t)t=o.maxOffset;else{if("before"==t)return this._createBefore(o,s);if("after"==t)return this._createAfter(o,s);if(0!==t&&!t)throw new r.ZP("model-createpositionat-offset-required",[this,e])}if(!o.is("element")&&!o.is("documentFragment"))throw new r.ZP("model-position-parent-incorrect",[this,e]);const i=o.getPath();return i.push(t),new this(o.root,i,s)}}static _createAfter(e,t){if(!e.parent)throw new r.ZP("model-position-after-root",[this,e],{root:e});return this._createAt(e.parent,e.endOffset,t)}static _createBefore(e,t){if(!e.parent)throw new r.ZP("model-position-before-root",e,{root:e});return this._createAt(e.parent,e.startOffset,t)}static fromJSON(e,t){if("$graveyard"===e.root){const s=new n(t.graveyard,e.path);return s.stickiness=e.stickiness,s}if(!t.getRoot(e.root))throw new r.ZP("model-position-fromjson-no-root",t,{rootName:e.root});return new n(t.getRoot(e.root),e.path,e.stickiness)}}function a(e,t){const s=t.getChild(t.offsetToIndex(e.offset));return s&&s.is("$text")&&s.startOffset<e.offset?s:null}function c(e,t,s){return null!==s?null:t.getChild(t.offsetToIndex(e.offset))}function l(e,t,s){return null!==s?null:t.getChild(t.offsetToIndex(e.offset)-1)}},"./packages/ckeditor5-engine/src/model/range.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-engine/src/model/position.js"),i=s("./packages/ckeditor5-engine/src/model/treewalker.js"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-utils/src/comparearrays.ts");class a{constructor(e,t=null){this.start=o.ZP._createAt(e),this.end=t?o.ZP._createAt(t):o.ZP._createAt(e),this.start.stickiness=this.isCollapsed?"toNone":"toNext",this.end.stickiness=this.isCollapsed?"toNone":"toPrevious"}*[Symbol.iterator](){yield*new i.Z({boundaries:this,ignoreElementEnd:!0})}get isCollapsed(){return this.start.isEqual(this.end)}get isFlat(){const e=this.start.getParentPath(),t=this.end.getParentPath();return"same"==(0,n.Z)(e,t)}get root(){return this.start.root}containsPosition(e){return e.isAfter(this.start)&&e.isBefore(this.end)}containsRange(e,t=!1){e.isCollapsed&&(t=!1);const s=this.containsPosition(e.start)||t&&this.start.isEqual(e.start),o=this.containsPosition(e.end)||t&&this.end.isEqual(e.end);return s&&o}containsItem(e){const t=o.ZP._createBefore(e);return this.containsPosition(t)||this.start.isEqual(t)}is(e){return"range"===e||"model:range"===e}isEqual(e){return this.start.isEqual(e.start)&&this.end.isEqual(e.end)}isIntersecting(e){return this.start.isBefore(e.end)&&this.end.isAfter(e.start)}getDifference(e){const t=[];return this.isIntersecting(e)?(this.containsPosition(e.start)&&t.push(new a(this.start,e.start)),this.containsPosition(e.end)&&t.push(new a(e.end,this.end))):t.push(new a(this.start,this.end)),t}getIntersection(e){if(this.isIntersecting(e)){let t=this.start,s=this.end;return this.containsPosition(e.start)&&(t=e.start),this.containsPosition(e.end)&&(s=e.end),new a(t,s)}return null}getJoined(e,t=!1){let s=this.isIntersecting(e);if(s||(s=this.start.isBefore(e.start)?t?this.end.isTouching(e.start):this.end.isEqual(e.start):t?e.end.isTouching(this.start):e.end.isEqual(this.start)),!s)return null;let o=this.start,i=this.end;return e.start.isBefore(o)&&(o=e.start),e.end.isAfter(i)&&(i=e.end),new a(o,i)}getMinimalFlatRanges(){const e=[],t=this.start.getCommonPath(this.end).length,s=o.ZP._createAt(this.start);let i=s.parent;for(;s.path.length>t+1;){const t=i.maxOffset-s.offset;0!==t&&e.push(new a(s,s.getShiftedBy(t))),s.path=s.path.slice(0,-1),s.offset++,i=i.parent}for(;s.path.length<=this.end.path.length;){const t=this.end.path[s.path.length-1],o=t-s.offset;0!==o&&e.push(new a(s,s.getShiftedBy(o))),s.offset=t,s.path.push(0)}return e}getWalker(e={}){return e.boundaries=this,new i.Z(e)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new i.Z(e);for(const e of t)yield e.item}*getPositions(e={}){e.boundaries=this;const t=new i.Z(e);yield t.position;for(const e of t)yield e.nextPosition}getTransformedByOperation(e){switch(e.type){case"insert":return this._getTransformedByInsertOperation(e);case"move":case"remove":case"reinsert":return this._getTransformedByMoveOperation(e);case"split":return[this._getTransformedBySplitOperation(e)];case"merge":return[this._getTransformedByMergeOperation(e)]}return[new a(this.start,this.end)]}getTransformedByOperations(e){const t=[new a(this.start,this.end)];for(const s of e)for(let e=0;e<t.length;e++){const o=t[e].getTransformedByOperation(s);t.splice(e,1,...o),e+=o.length-1}for(let e=0;e<t.length;e++){const s=t[e];for(let o=e+1;o<t.length;o++){const e=t[o];(s.containsRange(e)||e.containsRange(s)||s.isEqual(e))&&t.splice(o,1)}}return t}getCommonAncestor(){return this.start.getCommonAncestor(this.end)}getContainedElement(){if(this.isCollapsed)return null;const e=this.start.nodeAfter,t=this.end.nodeBefore;return e&&e.is("element")&&e===t?e:null}toJSON(){return{start:this.start.toJSON(),end:this.end.toJSON()}}clone(){return new this.constructor(this.start,this.end)}_getTransformedByInsertOperation(e,t=!1){return this._getTransformedByInsertion(e.position,e.howMany,t)}_getTransformedByMoveOperation(e,t=!1){const s=e.sourcePosition,o=e.howMany,i=e.targetPosition;return this._getTransformedByMove(s,i,o,t)}_getTransformedBySplitOperation(e){const t=this.start._getTransformedBySplitOperation(e);let s=this.end._getTransformedBySplitOperation(e);return this.end.isEqual(e.insertionPosition)&&(s=this.end.getShiftedBy(1)),t.root!=s.root&&(s=this.end.getShiftedBy(-1)),new a(t,s)}_getTransformedByMergeOperation(e){if(this.start.isEqual(e.targetPosition)&&this.end.isEqual(e.deletionPosition))return new a(this.start);let t=this.start._getTransformedByMergeOperation(e),s=this.end._getTransformedByMergeOperation(e);return t.root!=s.root&&(s=this.end.getShiftedBy(-1)),t.isAfter(s)?(e.sourcePosition.isBefore(e.targetPosition)?(t=o.ZP._createAt(s),t.offset=0):(e.deletionPosition.isEqual(t)||(s=e.deletionPosition),t=e.targetPosition),new a(t,s)):new a(t,s)}_getTransformedByInsertion(e,t,s=!1){if(s&&this.containsPosition(e))return[new a(this.start,e),new a(e.getShiftedBy(t),this.end._getTransformedByInsertion(e,t))];{const s=new a(this.start,this.end);return s.start=s.start._getTransformedByInsertion(e,t),s.end=s.end._getTransformedByInsertion(e,t),[s]}}_getTransformedByMove(e,t,s,o=!1){if(this.isCollapsed){const o=this.start._getTransformedByMove(e,t,s);return[new a(o)]}const i=a._createFromPositionAndShift(e,s),r=t._getTransformedByDeletion(e,s);if(this.containsPosition(t)&&!o&&(i.containsPosition(this.start)||i.containsPosition(this.end))){const o=this.start._getTransformedByMove(e,t,s),i=this.end._getTransformedByMove(e,t,s);return[new a(o,i)]}let n;const c=this.getDifference(i);let l=null;const d=this.getIntersection(i);if(1==c.length?l=new a(c[0].start._getTransformedByDeletion(e,s),c[0].end._getTransformedByDeletion(e,s)):2==c.length&&(l=new a(this.start,this.end._getTransformedByDeletion(e,s))),n=l?l._getTransformedByInsertion(r,s,null!==d||o):[],d){const e=new a(d.start._getCombined(i.start,r),d.end._getCombined(i.start,r));2==n.length?n.splice(1,0,e):n.push(e)}return n}_getTransformedByDeletion(e,t){let s=this.start._getTransformedByDeletion(e,t),o=this.end._getTransformedByDeletion(e,t);return null==s&&null==o?null:(null==s&&(s=e),null==o&&(o=e),new a(s,o))}static _createFromPositionAndShift(e,t){const s=e,o=e.getShiftedBy(t);return t>0?new this(s,o):new this(o,s)}static _createIn(e){return new this(o.ZP._createAt(e,0),o.ZP._createAt(e,e.maxOffset))}static _createOn(e){return this._createFromPositionAndShift(o.ZP._createBefore(e),e.offsetSize)}static _createFromRanges(e){if(0===e.length)throw new r.ZP("range-create-from-ranges-empty-array",null);if(1==e.length)return e[0].clone();const t=e[0];e.sort(((e,t)=>e.start.isAfter(t.start)?1:-1));const s=e.indexOf(t),i=new this(t.start,t.end);if(s>0)for(let t=s-1;e[t].end.isEqual(i.start);t++)i.start=o.ZP._createAt(e[t].start);for(let t=s+1;t<e.length&&e[t].start.isEqual(i.end);t++)i.end=o.ZP._createAt(e[t].end);return i}static fromJSON(e,t){return new this(o.ZP.fromJSON(e.start,t),o.ZP.fromJSON(e.end,t))}}},"./packages/ckeditor5-engine/src/model/schema.js":(e,t,s)=>{"use strict";s.d(t,{G:()=>u,Z:()=>h});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/observablemixin.ts"),r=s("./packages/ckeditor5-utils/src/mix.ts"),n=s("./packages/ckeditor5-engine/src/model/range.js"),a=s("./packages/ckeditor5-engine/src/model/position.js"),c=s("./packages/ckeditor5-engine/src/model/element.js"),l=s("./packages/ckeditor5-engine/src/model/text.js"),d=s("./packages/ckeditor5-engine/src/model/treewalker.js");class h{constructor(){this._sourceDefinitions={},this._attributeProperties={},this.decorate("checkChild"),this.decorate("checkAttribute"),this.on("checkAttribute",((e,t)=>{t[0]=new u(t[0])}),{priority:"highest"}),this.on("checkChild",((e,t)=>{t[0]=new u(t[0]),t[1]=this.getDefinition(t[1])}),{priority:"highest"})}register(e,t){if(this._sourceDefinitions[e])throw new o.ZP("schema-cannot-register-item-twice",this,{itemName:e});this._sourceDefinitions[e]=[Object.assign({},t)],this._clearCache()}extend(e,t){if(!this._sourceDefinitions[e])throw new o.ZP("schema-cannot-extend-missing-item",this,{itemName:e});this._sourceDefinitions[e].push(Object.assign({},t)),this._clearCache()}getDefinitions(){return this._compiledDefinitions||this._compile(),this._compiledDefinitions}getDefinition(e){let t;return t="string"==typeof e?e:e.is&&(e.is("$text")||e.is("$textProxy"))?"$text":e.name,this.getDefinitions()[t]}isRegistered(e){return!!this.getDefinition(e)}isBlock(e){const t=this.getDefinition(e);return!(!t||!t.isBlock)}isLimit(e){const t=this.getDefinition(e);return!!t&&!(!t.isLimit&&!t.isObject)}isObject(e){const t=this.getDefinition(e);return!!t&&!!(t.isObject||t.isLimit&&t.isSelectable&&t.isContent)}isInline(e){const t=this.getDefinition(e);return!(!t||!t.isInline)}isSelectable(e){const t=this.getDefinition(e);return!!t&&!(!t.isSelectable&&!t.isObject)}isContent(e){const t=this.getDefinition(e);return!!t&&!(!t.isContent&&!t.isObject)}checkChild(e,t){return!!t&&this._checkContextMatch(t,e)}checkAttribute(e,t){const s=this.getDefinition(e.last);return!!s&&s.allowAttributes.includes(t)}checkMerge(e,t=null){if(e instanceof a.ZP){const t=e.nodeBefore,s=e.nodeAfter;if(!(t instanceof c.Z))throw new o.ZP("schema-check-merge-no-element-before",this);if(!(s instanceof c.Z))throw new o.ZP("schema-check-merge-no-element-after",this);return this.checkMerge(t,s)}for(const s of t.getChildren())if(!this.checkChild(e,s))return!1;return!0}addChildCheck(e){this.on("checkChild",((t,[s,o])=>{if(!o)return;const i=e(s,o);"boolean"==typeof i&&(t.stop(),t.return=i)}),{priority:"high"})}addAttributeCheck(e){this.on("checkAttribute",((t,[s,o])=>{const i=e(s,o);"boolean"==typeof i&&(t.stop(),t.return=i)}),{priority:"high"})}setAttributeProperties(e,t){this._attributeProperties[e]=Object.assign(this.getAttributeProperties(e),t)}getAttributeProperties(e){return this._attributeProperties[e]||{}}getLimitElement(e){let t;if(e instanceof a.ZP)t=e.parent;else{t=(e instanceof n.Z?[e]:Array.from(e.getRanges())).reduce(((e,t)=>{const s=t.getCommonAncestor();return e?e.getCommonAncestor(s,{includeSelf:!0}):s}),null)}for(;!this.isLimit(t)&&t.parent;)t=t.parent;return t}checkAttributeInSelection(e,t){if(e.isCollapsed){const s=[...e.getFirstPosition().getAncestors(),new l.Z("",e.getAttributes())];return this.checkAttribute(s,t)}{const s=e.getRanges();for(const e of s)for(const s of e)if(this.checkAttribute(s.item,t))return!0}return!1}*getValidRanges(e,t){e=function*(e){for(const t of e)yield*t.getMinimalFlatRanges()}(e);for(const s of e)yield*this._getValidRangesForRange(s,t)}getNearestSelectionRange(e,t="both"){if(this.checkChild(e,"$text"))return new n.Z(e);let s,o;const i=e.getAncestors().reverse().find((e=>this.isLimit(e)))||e.root;"both"!=t&&"backward"!=t||(s=new d.Z({boundaries:n.Z._createIn(i),startPosition:e,direction:"backward"})),"both"!=t&&"forward"!=t||(o=new d.Z({boundaries:n.Z._createIn(i),startPosition:e}));for(const e of function*(e,t){let s=!1;for(;!s;){if(s=!0,e){const t=e.next();t.done||(s=!1,yield{walker:e,value:t.value})}if(t){const e=t.next();e.done||(s=!1,yield{walker:t,value:e.value})}}}(s,o)){const t=e.walker==s?"elementEnd":"elementStart",o=e.value;if(o.type==t&&this.isObject(o.item))return n.Z._createOn(o.item);if(this.checkChild(o.nextPosition,"$text"))return new n.Z(o.nextPosition)}return null}findAllowedParent(e,t){let s=e.parent;for(;s;){if(this.checkChild(s,t))return s;if(this.isLimit(s))return null;s=s.parent}return null}setAllowedAttributes(e,t,s){const o=s.model;for(const[i,r]of Object.entries(t))o.schema.checkAttribute(e,i)&&s.setAttribute(i,r,e)}removeDisallowedAttributes(e,t){for(const s of e)if(s.is("$text"))x(this,s,t);else{const e=n.Z._createIn(s).getPositions();for(const s of e){x(this,s.nodeBefore||s.parent,t)}}}getAttributesWithProperty(e,t,s){const o={};for(const[i,r]of e.getAttributes()){const e=this.getAttributeProperties(i);void 0!==e[t]&&(void 0!==s&&s!==e[t]||(o[i]=r))}return o}createContext(e){return new u(e)}_clearCache(){this._compiledDefinitions=null}_compile(){const e={},t=this._sourceDefinitions,s=Object.keys(t);for(const o of s)e[o]=p(t[o],o);for(const t of s)g(e,t);for(const t of s)m(e,t);for(const t of s)f(e,t);for(const t of s)k(e,t),_(e,t);for(const t of s)b(e,t),w(e,t),v(e,t);this._compiledDefinitions=e}_checkContextMatch(e,t,s=t.length-1){const o=t.getItem(s);if(e.allowIn.includes(o.name)){if(0==s)return!0;{const e=this.getDefinition(o);return this._checkContextMatch(e,t,s-1)}}return!1}*_getValidRangesForRange(e,t){let s=e.start,o=e.start;for(const i of e.getItems({shallow:!0}))i.is("element")&&(yield*this._getValidRangesForRange(n.Z._createIn(i),t)),this.checkAttribute(i,t)||(s.isEqual(o)||(yield new n.Z(s,o)),s=a.ZP._createAfter(i)),o=a.ZP._createAfter(i);s.isEqual(o)||(yield new n.Z(s,o))}}(0,r.Z)(h,i.Z);class u{constructor(e){if(e instanceof u)return e;"string"==typeof e?e=[e]:Array.isArray(e)||(e=e.getAncestors({includeSelf:!0})),this._items=e.map(P)}get length(){return this._items.length}get last(){return this._items[this._items.length-1]}[Symbol.iterator](){return this._items[Symbol.iterator]()}push(e){const t=new u([e]);return t._items=[...this._items,...t._items],t}getItem(e){return this._items[e]}*getNames(){yield*this._items.map((e=>e.name))}endsWith(e){return Array.from(this.getNames()).join(" ").endsWith(e)}startsWith(e){return Array.from(this.getNames()).join(" ").startsWith(e)}}function p(e,t){const s={name:t,allowIn:[],allowContentOf:[],allowWhere:[],allowAttributes:[],allowAttributesOf:[],allowChildren:[],inheritTypesFrom:[]};return function(e,t){for(const s of e){const e=Object.keys(s).filter((e=>e.startsWith("is")));for(const o of e)t[o]=s[o]}}(e,s),y(e,s,"allowIn"),y(e,s,"allowContentOf"),y(e,s,"allowWhere"),y(e,s,"allowAttributes"),y(e,s,"allowAttributesOf"),y(e,s,"allowChildren"),y(e,s,"inheritTypesFrom"),function(e,t){for(const s of e){const e=s.inheritAllFrom;e&&(t.allowContentOf.push(e),t.allowWhere.push(e),t.allowAttributesOf.push(e),t.inheritTypesFrom.push(e))}}(e,s),s}function g(e,t){const s=e[t];for(const o of s.allowChildren){const s=e[o];s&&s.allowIn.push(t)}s.allowChildren.length=0}function m(e,t){for(const s of e[t].allowContentOf)if(e[s]){Z(e,s).forEach((e=>{e.allowIn.push(t)}))}delete e[t].allowContentOf}function f(e,t){for(const s of e[t].allowWhere){const o=e[s];if(o){const s=o.allowIn;e[t].allowIn.push(...s)}}delete e[t].allowWhere}function k(e,t){for(const s of e[t].allowAttributesOf){const o=e[s];if(o){const s=o.allowAttributes;e[t].allowAttributes.push(...s)}}delete e[t].allowAttributesOf}function _(e,t){const s=e[t];for(const t of s.inheritTypesFrom){const o=e[t];if(o){const e=Object.keys(o).filter((e=>e.startsWith("is")));for(const t of e)t in s||(s[t]=o[t])}}delete s.inheritTypesFrom}function b(e,t){const s=e[t],o=s.allowIn.filter((t=>e[t]));s.allowIn=Array.from(new Set(o))}function w(e,t){const s=e[t];for(const o of s.allowIn){e[o].allowChildren.push(t)}}function v(e,t){const s=e[t];s.allowAttributes=Array.from(new Set(s.allowAttributes))}function y(e,t,s){for(const o of e)"string"==typeof o[s]?t[s].push(o[s]):Array.isArray(o[s])&&t[s].push(...o[s])}function Z(e,t){const s=e[t];return(o=e,Object.keys(o).map((e=>o[e]))).filter((e=>e.allowIn.includes(s.name)));var o}function P(e){return"string"==typeof e||e.is("documentFragment")?{name:"string"==typeof e?e:"$documentFragment",*getAttributeKeys(){},getAttribute(){}}:{name:e.is("element")?e.name:"$text",*getAttributeKeys(){yield*e.getAttributeKeys()},getAttribute:t=>e.getAttribute(t)}}function x(e,t,s){for(const o of t.getAttributeKeys())e.checkAttribute(t,o)||s.removeAttribute(o,t)}},"./packages/ckeditor5-engine/src/model/selection.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});var o=s("./packages/ckeditor5-engine/src/model/position.js"),i=s("./packages/ckeditor5-engine/src/model/node.js"),r=s("./packages/ckeditor5-engine/src/model/range.js"),n=s("./packages/ckeditor5-utils/src/emittermixin.ts"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),c=s("./packages/ckeditor5-utils/src/mix.ts"),l=s("./packages/ckeditor5-utils/src/isiterable.ts");class d{constructor(e,t,s){this._lastRangeBackward=!1,this._ranges=[],this._attrs=new Map,e&&this.setTo(e,t,s)}get anchor(){if(this._ranges.length>0){const e=this._ranges[this._ranges.length-1];return this._lastRangeBackward?e.end:e.start}return null}get focus(){if(this._ranges.length>0){const e=this._ranges[this._ranges.length-1];return this._lastRangeBackward?e.start:e.end}return null}get isCollapsed(){return 1===this._ranges.length&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}isEqual(e){if(this.rangeCount!=e.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(e.anchor)||!this.focus.isEqual(e.focus))return!1;for(const t of this._ranges){let s=!1;for(const o of e._ranges)if(t.isEqual(o)){s=!0;break}if(!s)return!1}return!0}*getRanges(){for(const e of this._ranges)yield new r.Z(e.start,e.end)}getFirstRange(){let e=null;for(const t of this._ranges)e&&!t.start.isBefore(e.start)||(e=t);return e?new r.Z(e.start,e.end):null}getLastRange(){let e=null;for(const t of this._ranges)e&&!t.end.isAfter(e.end)||(e=t);return e?new r.Z(e.start,e.end):null}getFirstPosition(){const e=this.getFirstRange();return e?e.start.clone():null}getLastPosition(){const e=this.getLastRange();return e?e.end.clone():null}setTo(e,t,s){if(null===e)this._setRanges([]);else if(e instanceof d)this._setRanges(e.getRanges(),e.isBackward);else if(e&&"function"==typeof e.getRanges)this._setRanges(e.getRanges(),e.isBackward);else if(e instanceof r.Z)this._setRanges([e],!!t&&!!t.backward);else if(e instanceof o.ZP)this._setRanges([new r.Z(e)]);else if(e instanceof i.Z){const i=!!s&&!!s.backward;let n;if("in"==t)n=r.Z._createIn(e);else if("on"==t)n=r.Z._createOn(e);else{if(void 0===t)throw new a.ZP("model-selection-setto-required-second-parameter",[this,e]);n=new r.Z(o.ZP._createAt(e,t))}this._setRanges([n],i)}else{if(!(0,l.Z)(e))throw new a.ZP("model-selection-setto-not-selectable",[this,e]);this._setRanges(e,t&&!!t.backward)}}_setRanges(e,t=!1){const s=(e=Array.from(e)).some((t=>{if(!(t instanceof r.Z))throw new a.ZP("model-selection-set-ranges-not-range",[this,e]);return this._ranges.every((e=>!e.isEqual(t)))}));if(e.length!==this._ranges.length||s){this._removeAllRanges();for(const t of e)this._pushRange(t);this._lastRangeBackward=!!t,this.fire("change:range",{directChange:!0})}}setFocus(e,t){if(null===this.anchor)throw new a.ZP("model-selection-setfocus-no-ranges",[this,e]);const s=o.ZP._createAt(e,t);if("same"==s.compareWith(this.focus))return;const i=this.anchor;this._ranges.length&&this._popRange(),"before"==s.compareWith(i)?(this._pushRange(new r.Z(s,i)),this._lastRangeBackward=!0):(this._pushRange(new r.Z(i,s)),this._lastRangeBackward=!1),this.fire("change:range",{directChange:!0})}getAttribute(e){return this._attrs.get(e)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}hasAttribute(e){return this._attrs.has(e)}removeAttribute(e){this.hasAttribute(e)&&(this._attrs.delete(e),this.fire("change:attribute",{attributeKeys:[e],directChange:!0}))}setAttribute(e,t){this.getAttribute(e)!==t&&(this._attrs.set(e,t),this.fire("change:attribute",{attributeKeys:[e],directChange:!0}))}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}is(e){return"selection"===e||"model:selection"===e}*getSelectedBlocks(){const e=new WeakSet;for(const t of this.getRanges()){const s=p(t.start,e);s&&g(s,t)&&(yield s);for(const s of t.getWalker()){const o=s.item;"elementEnd"==s.type&&u(o,e,t)&&(yield o)}const i=p(t.end,e);i&&!t.end.isTouching(o.ZP._createAt(i,0))&&g(i,t)&&(yield i)}}containsEntireContent(e=this.anchor.root){const t=o.ZP._createAt(e,0),s=o.ZP._createAt(e,"end");return t.isTouching(this.getFirstPosition())&&s.isTouching(this.getLastPosition())}_pushRange(e){this._checkRange(e),this._ranges.push(new r.Z(e.start,e.end))}_checkRange(e){for(let t=0;t<this._ranges.length;t++)if(e.isIntersecting(this._ranges[t]))throw new a.ZP("model-selection-range-intersects",[this,e],{addedRange:e,intersectingRange:this._ranges[t]})}_removeAllRanges(){for(;this._ranges.length>0;)this._popRange()}_popRange(){this._ranges.pop()}}function h(e,t){return!t.has(e)&&(t.add(e),e.root.document.model.schema.isBlock(e)&&e.parent)}function u(e,t,s){return h(e,t)&&g(e,s)}function p(e,t){const s=e.parent.root.document.model.schema,o=e.parent.getAncestors({parentFirst:!0,includeSelf:!0});let i=!1;const r=o.find((e=>!i&&(i=s.isLimit(e),!i&&h(e,t))));return o.forEach((e=>t.add(e))),r}function g(e,t){const s=function(e){const t=e.root.document.model.schema;let s=e.parent;for(;s;){if(t.isBlock(s))return s;s=s.parent}}(e);if(!s)return!0;return!t.containsRange(r.Z._createOn(s),!0)}(0,c.Z)(d,n.ZP)},"./packages/ckeditor5-engine/src/model/text.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-engine/src/model/node.js");class i extends o.Z{constructor(e,t){super(t),this._data=e||""}get offsetSize(){return this.data.length}get data(){return this._data}is(e){return"$text"===e||"model:$text"===e||"text"===e||"model:text"===e||"node"===e||"model:node"===e}toJSON(){const e=super.toJSON();return e.data=this.data,e}_clone(){return new i(this.data,this.getAttributes())}static fromJSON(e){return new i(e.data,e.attributes)}}},"./packages/ckeditor5-engine/src/model/textproxy.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class i{constructor(e,t,s){if(this.textNode=e,t<0||t>e.offsetSize)throw new o.ZP("model-textproxy-wrong-offsetintext",this);if(s<0||t+s>e.offsetSize)throw new o.ZP("model-textproxy-wrong-length",this);this.data=e.data.substring(t,t+s),this.offsetInText=t}get startOffset(){return null!==this.textNode.startOffset?this.textNode.startOffset+this.offsetInText:null}get offsetSize(){return this.data.length}get endOffset(){return null!==this.startOffset?this.startOffset+this.offsetSize:null}get isPartial(){return this.offsetSize!==this.textNode.offsetSize}get parent(){return this.textNode.parent}get root(){return this.textNode.root}is(e){return"$textProxy"===e||"model:$textProxy"===e||"textProxy"===e||"model:textProxy"===e}getPath(){const e=this.textNode.getPath();return e.length>0&&(e[e.length-1]+=this.offsetInText),e}getAncestors(e={includeSelf:!1,parentFirst:!1}){const t=[];let s=e.includeSelf?this:this.parent;for(;s;)t[e.parentFirst?"push":"unshift"](s),s=s.parent;return t}hasAttribute(e){return this.textNode.hasAttribute(e)}getAttribute(e){return this.textNode.getAttribute(e)}getAttributes(){return this.textNode.getAttributes()}getAttributeKeys(){return this.textNode.getAttributeKeys()}}},"./packages/ckeditor5-engine/src/model/treewalker.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/model/text.js"),i=s("./packages/ckeditor5-engine/src/model/textproxy.js"),r=s("./packages/ckeditor5-engine/src/model/element.js"),n=s("./packages/ckeditor5-engine/src/model/position.js"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class c{constructor(e={}){if(!e.boundaries&&!e.startPosition)throw new a.ZP("model-tree-walker-no-start-position",null);const t=e.direction||"forward";if("forward"!=t&&"backward"!=t)throw new a.ZP("model-tree-walker-unknown-direction",e,{direction:t});this.direction=t,this.boundaries=e.boundaries||null,e.startPosition?this.position=e.startPosition.clone():this.position=n.ZP._createAt(this.boundaries["backward"==this.direction?"end":"start"]),this.position.stickiness="toNone",this.singleCharacters=!!e.singleCharacters,this.shallow=!!e.shallow,this.ignoreElementEnd=!!e.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null,this._visitedParent=this.position.parent}[Symbol.iterator](){return this}skip(e){let t,s,o,i;do{o=this.position,i=this._visitedParent,({done:t,value:s}=this.next())}while(!t&&e(s));t||(this.position=o,this._visitedParent=i)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){const e=this.position,t=this.position.clone(),s=this._visitedParent;if(null===s.parent&&t.offset===s.maxOffset)return{done:!0};if(s===this._boundaryEndParent&&t.offset==this.boundaries.end.offset)return{done:!0};const a=(0,n.Rt)(t,s),c=a||(0,n.Ux)(t,s,a);if(c instanceof r.Z)return this.shallow?t.offset++:(t.path.push(0),this._visitedParent=c),this.position=t,l("elementStart",c,e,t,1);if(c instanceof o.Z){let o;if(this.singleCharacters)o=1;else{let e=c.endOffset;this._boundaryEndParent==s&&this.boundaries.end.offset<e&&(e=this.boundaries.end.offset),o=e-t.offset}const r=t.offset-c.startOffset,n=new i.Z(c,r,o);return t.offset+=o,this.position=t,l("text",n,e,t,o)}return t.path.pop(),t.offset++,this.position=t,this._visitedParent=s.parent,this.ignoreElementEnd?this._next():l("elementEnd",s,e,t)}_previous(){const e=this.position,t=this.position.clone(),s=this._visitedParent;if(null===s.parent&&0===t.offset)return{done:!0};if(s==this._boundaryStartParent&&t.offset==this.boundaries.start.offset)return{done:!0};const a=t.parent,c=(0,n.Rt)(t,a),d=c||(0,n.YV)(t,a,c);if(d instanceof r.Z)return t.offset--,this.shallow?(this.position=t,l("elementStart",d,e,t,1)):(t.path.push(d.maxOffset),this.position=t,this._visitedParent=d,this.ignoreElementEnd?this._previous():l("elementEnd",d,e,t));if(d instanceof o.Z){let o;if(this.singleCharacters)o=1;else{let e=d.startOffset;this._boundaryStartParent==s&&this.boundaries.start.offset>e&&(e=this.boundaries.start.offset),o=t.offset-e}const r=t.offset-d.startOffset,n=new i.Z(d,r-o,o);return t.offset-=o,this.position=t,l("text",n,e,t,o)}return t.path.pop(),this.position=t,this._visitedParent=s.parent,l("elementStart",s,e,t,1)}}function l(e,t,s,o,i){return{done:!1,value:{type:e,item:t,previousPosition:s,nextPosition:o,length:i}}}},"./packages/ckeditor5-engine/src/model/utils/autoparagraphing.js":(e,t,s)=>{"use strict";function o(e){const{schema:t,document:s}=e.model;for(const o of s.getRootNames()){const i=s.getRoot(o);if(i.isEmpty&&!t.checkChild(i,"$text")&&t.checkChild(i,"paragraph"))return e.insertElement("paragraph",i),!0}return!1}function i(e,t,s){const o=s.createContext(e);return!!s.checkChild(o,"paragraph")&&!!s.checkChild(o.push("paragraph"),t)}function r(e,t){const s=t.createElement("paragraph");return t.insert(s,e),t.createPositionAt(s,0)}s.d(t,{_m:()=>o,gg:()=>i,zX:()=>r})},"./packages/ckeditor5-engine/src/model/utils/findoptimalinsertionrange.js":(e,t,s)=>{"use strict";s.d(t,{K:()=>i});var o=s("./packages/ckeditor5-utils/src/first.ts");function i(e,t,s="auto"){const i=e.getSelectedElement();if(i&&t.schema.isObject(i)&&!t.schema.isInline(i))return["before","after"].includes(s)?t.createRange(t.createPositionAt(i,s)):t.createRangeOn(i);const r=(0,o.Z)(e.getSelectedBlocks());if(!r)return t.createRange(e.focus);if(r.isEmpty)return t.createRange(t.createPositionAt(r,0));const n=t.createPositionAfter(r);return e.focus.isTouching(n)?t.createRange(n):t.createRange(t.createPositionBefore(r))}},"./packages/ckeditor5-engine/src/view/attributeelement.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/view/element.js"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(e,t,s,o){super(e,t,s,o),this.getFillerOffset=n,this._priority=10,this._id=null,this._clonesGroup=null}get priority(){return this._priority}get id(){return this._id}getElementsWithSameId(){if(null===this.id)throw new i.ZP("attribute-element-get-elements-with-same-id-no-id",this);return new Set(this._clonesGroup)}is(e,t=null){return t?t===this.name&&("attributeElement"===e||"view:attributeElement"===e||"element"===e||"view:element"===e):"attributeElement"===e||"view:attributeElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}isSimilar(e){return null!==this.id||null!==e.id?this.id===e.id:super.isSimilar(e)&&this.priority==e.priority}_clone(e){const t=super._clone(e);return t._priority=this._priority,t._id=this._id,t}}function n(){if(a(this))return null;let e=this.parent;for(;e&&e.is("attributeElement");){if(a(e)>1)return null;e=e.parent}return!e||a(e)>1?null:this.childCount}function a(e){return Array.from(e.getChildren()).filter((e=>!e.is("uiElement"))).length}r.DEFAULT_PRIORITY=10},"./packages/ckeditor5-engine/src/view/containerelement.js":(e,t,s)=>{"use strict";s.d(t,{Y:()=>r,Z:()=>i});var o=s("./packages/ckeditor5-engine/src/view/element.js");class i extends o.Z{constructor(e,t,s,o){super(e,t,s,o),this.getFillerOffset=r}is(e,t=null){return t?t===this.name&&("containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}}function r(){const e=[...this.getChildren()],t=e[this.childCount-1];if(t&&t.is("element","br"))return this.childCount;for(const t of e)if(!t.is("uiElement"))return null;return this.childCount}},"./packages/ckeditor5-engine/src/view/document.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>_});var o=s("./packages/ckeditor5-engine/src/view/documentselection.js"),i=s("./packages/ckeditor5-utils/src/collection.ts"),r=s("./packages/ckeditor5-utils/src/mix.ts"),n=s("./packages/ckeditor5-utils/src/eventinfo.ts"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),c=s("./packages/ckeditor5-utils/src/emittermixin.ts"),l=s("./packages/ckeditor5-utils/src/toarray.ts"),d=s("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.js");const h=Symbol("bubbling contexts"),u={fire(e,...t){try{const s=e instanceof n.Z?e:new n.Z(this,e),o=f(this);if(!o.size)return;if(p(s,"capturing",this),g(o,"$capture",s,...t))return s.return;const i=s.startRange||this.selection.getFirstRange(),r=i?i.getContainedElement():null,a=!!r&&Boolean(m(o,r));let c=r||function(e){if(!e)return null;const t=e.start.parent,s=e.end.parent,o=t.getPath(),i=s.getPath();return o.length>i.length?t:s}(i);if(p(s,"atTarget",c),!a){if(g(o,"$text",s,...t))return s.return;p(s,"bubbling",c)}for(;c;){if(c.is("rootElement")){if(g(o,"$root",s,...t))return s.return}else if(c.is("element")&&g(o,c.name,s,...t))return s.return;if(g(o,c,s,...t))return s.return;c=c.parent,p(s,"bubbling",c)}return p(s,"bubbling",this),g(o,"$document",s,...t),s.return}catch(e){a.ZP.rethrowUnexpectedError(e,this)}},_addEventListener(e,t,s){const o=(0,l.Z)(s.context||"$document"),i=f(this);for(const r of o){let o=i.get(r);o||(o=Object.create(c.ZP),i.set(r,o)),this.listenTo(o,e,t,s)}},_removeEventListener(e,t){const s=f(this);for(const o of s.values())this.stopListening(o,e,t)}};function p(e,t,s){e instanceof d.Z&&(e._eventPhase=t,e._currentTarget=s)}function g(e,t,s,...o){const i="string"==typeof t?e.get(t):m(e,t);return!!i&&(i.fire(s,...o),s.stop.called)}function m(e,t){for(const[s,o]of e)if("function"==typeof s&&s(t))return o;return null}function f(e){return e[h]||(e[h]=new Map),e[h]}var k=s("./packages/ckeditor5-utils/src/observablemixin.ts");class _{constructor(e){this.selection=new o.Z,this.roots=new i.Z({idProperty:"rootName"}),this.stylesProcessor=e,this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isSelecting",!1),this.set("isComposing",!1),this._postFixers=new Set}getRoot(e="main"){return this.roots.get(e)}registerPostFixer(e){this._postFixers.add(e)}destroy(){this.roots.map((e=>e.destroy())),this.stopListening()}_callPostFixers(e){let t=!1;do{for(const s of this._postFixers)if(t=s(e),t)break}while(t)}}(0,r.Z)(_,u),(0,r.Z)(_,k.Z)},"./packages/ckeditor5-engine/src/view/documentfragment.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/view/text.js"),i=s("./packages/ckeditor5-engine/src/view/textproxy.js"),r=s("./packages/ckeditor5-utils/src/mix.ts"),n=s("./packages/ckeditor5-utils/src/isiterable.ts"),a=s("./packages/ckeditor5-utils/src/emittermixin.ts");class c{constructor(e,t){this.document=e,this._children=[],t&&this._insertChild(0,t)}[Symbol.iterator](){return this._children[Symbol.iterator]()}get childCount(){return this._children.length}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}is(e){return"documentFragment"===e||"view:documentFragment"===e}_appendChild(e){return this._insertChild(this.childCount,e)}getChild(e){return this._children[e]}getChildIndex(e){return this._children.indexOf(e)}getChildren(){return this._children[Symbol.iterator]()}_insertChild(e,t){this._fireChange("children",this);let s=0;const r=function(e,t){if("string"==typeof t)return[new o.Z(e,t)];(0,n.Z)(t)||(t=[t]);return Array.from(t).map((t=>"string"==typeof t?new o.Z(e,t):t instanceof i.Z?new o.Z(e,t.data):t))}(this.document,t);for(const t of r)null!==t.parent&&t._remove(),t.parent=this,this._children.splice(e,0,t),e++,s++;return s}_removeChildren(e,t=1){this._fireChange("children",this);for(let s=e;s<e+t;s++)this._children[s].parent=null;return this._children.splice(e,t)}_fireChange(e,t){this.fire("change:"+e,t)}}(0,r.Z)(c,a.ZP)},"./packages/ckeditor5-engine/src/view/documentselection.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/view/selection.js"),i=s("./packages/ckeditor5-utils/src/mix.ts"),r=s("./packages/ckeditor5-utils/src/emittermixin.ts");class n{constructor(e=null,t,s){this._selection=new o.Z,this._selection.delegate("change").to(this),this._selection.setTo(e,t,s)}get isFake(){return this._selection.isFake}get fakeSelectionLabel(){return this._selection.fakeSelectionLabel}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get isCollapsed(){return this._selection.isCollapsed}get rangeCount(){return this._selection.rangeCount}get isBackward(){return this._selection.isBackward}get editableElement(){return this._selection.editableElement}get _ranges(){return this._selection._ranges}*getRanges(){yield*this._selection.getRanges()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getSelectedElement(){return this._selection.getSelectedElement()}isEqual(e){return this._selection.isEqual(e)}isSimilar(e){return this._selection.isSimilar(e)}is(e){return"selection"===e||"documentSelection"==e||"view:selection"==e||"view:documentSelection"==e}_setTo(e,t,s){this._selection.setTo(e,t,s)}_setFocus(e,t){this._selection.setFocus(e,t)}}(0,i.Z)(n,r.ZP)},"./packages/ckeditor5-engine/src/view/domconverter.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>P});var o=s("./packages/ckeditor5-engine/src/view/text.js"),i=s("./packages/ckeditor5-engine/src/view/element.js"),r=s("./packages/ckeditor5-engine/src/view/uielement.js"),n=s("./packages/ckeditor5-engine/src/view/position.js"),a=s("./packages/ckeditor5-engine/src/view/range.js"),c=s("./packages/ckeditor5-engine/src/view/selection.js"),l=s("./packages/ckeditor5-engine/src/view/documentfragment.js"),d=s("./packages/ckeditor5-engine/src/view/treewalker.js"),h=s("./packages/ckeditor5-engine/src/view/matcher.js"),u=s("./packages/ckeditor5-engine/src/view/filler.js"),p=s("./packages/ckeditor5-utils/src/dom/global.ts"),g=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");function m(e){let t=0;for(;e.previousSibling;)e=e.previousSibling,t++;return t}function f(e){const t=[];let s=e;for(;s&&s.nodeType!=Node.DOCUMENT_NODE;)t.unshift(s),s=s.parentNode;return t}var k=s("./packages/ckeditor5-utils/src/dom/istext.ts"),_=s("./packages/ckeditor5-utils/src/dom/iscomment.ts");const b=(0,u.yl)(p.Z.document),w=(0,u.N3)(p.Z.document),v=(0,u.PQ)(p.Z.document),y="data-ck-unsafe-attribute-",Z="data-ck-unsafe-element";class P{constructor(e,t={}){this.document=e,this.renderingMode=t.renderingMode||"editing",this.blockFillerMode=t.blockFillerMode||("editing"===this.renderingMode?"br":"nbsp"),this.preElements=["pre"],this.blockElements=["address","article","aside","blockquote","caption","center","dd","details","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","legend","li","main","menu","nav","ol","p","pre","section","summary","table","tbody","td","tfoot","th","thead","tr","ul"],this.inlineObjectElements=["object","iframe","input","button","textarea","select","option","video","embed","audio","img","canvas"],this.unsafeElements=["script","style"],this._domDocument="editing"===this.renderingMode?p.Z.document:p.Z.document.implementation.createHTMLDocument(""),this._domToViewMapping=new WeakMap,this._viewToDomMapping=new WeakMap,this._fakeSelectionMapping=new WeakMap,this._rawContentElementMatcher=new h.Z,this._encounteredRawContentDomNodes=new WeakSet}bindFakeSelection(e,t){this._fakeSelectionMapping.set(e,new c.Z(t))}fakeSelectionToView(e){return this._fakeSelectionMapping.get(e)}bindElements(e,t){this._domToViewMapping.set(e,t),this._viewToDomMapping.set(t,e)}unbindDomElement(e){const t=this._domToViewMapping.get(e);if(t){this._domToViewMapping.delete(e),this._viewToDomMapping.delete(t);for(const t of e.childNodes)this.unbindDomElement(t)}}bindDocumentFragments(e,t){this._domToViewMapping.set(e,t),this._viewToDomMapping.set(t,e)}shouldRenderAttribute(e,t,s){return"data"===this.renderingMode||!(e=e.toLowerCase()).startsWith("on")&&(("srcdoc"!==e||!t.match(/\bon\S+\s*=|javascript:|<\s*\/*script/i))&&("img"===s&&("src"===e||"srcset"===e)||("source"===s&&"srcset"===e||!t.match(/^\s*(javascript:|data:(image\/svg|text\/x?html))/i))))}setContentOf(e,t){if("data"===this.renderingMode)return void(e.innerHTML=t);const s=(new DOMParser).parseFromString(t,"text/html"),o=s.createDocumentFragment(),i=s.body.childNodes;for(;i.length>0;)o.appendChild(i[0]);const r=s.createTreeWalker(o,NodeFilter.SHOW_ELEMENT),n=[];let a;for(;a=r.nextNode();)n.push(a);for(const e of n){for(const t of e.getAttributeNames())this.setDomElementAttribute(e,t,e.getAttribute(t));const t=e.tagName.toLowerCase();this._shouldRenameElement(t)&&(j(t),e.replaceWith(this._createReplacementDomElement(t,e)))}for(;e.firstChild;)e.firstChild.remove();e.append(o)}viewToDom(e,t={}){if(e.is("$text")){const t=this._processDataFromViewText(e);return this._domDocument.createTextNode(t)}{if(this.mapViewToDom(e))return this.mapViewToDom(e);let s;if(e.is("documentFragment"))s=this._domDocument.createDocumentFragment(),t.bind&&this.bindDocumentFragments(s,e);else{if(e.is("uiElement"))return s="$comment"===e.name?this._domDocument.createComment(e.getCustomProperty("$rawContent")):e.render(this._domDocument,this),t.bind&&this.bindElements(s,e),s;this._shouldRenameElement(e.name)?(j(e.name),s=this._createReplacementDomElement(e.name)):s=e.hasAttribute("xmlns")?this._domDocument.createElementNS(e.getAttribute("xmlns"),e.name):this._domDocument.createElement(e.name),e.is("rawElement")&&e.render(s,this),t.bind&&this.bindElements(s,e);for(const t of e.getAttributeKeys())this.setDomElementAttribute(s,t,e.getAttribute(t),e)}if(!1!==t.withChildren)for(const o of this.viewChildrenToDom(e,t))s.appendChild(o);return s}}setDomElementAttribute(e,t,s,o=null){const i=this.shouldRenderAttribute(t,s,e.tagName.toLowerCase())||o&&o.shouldRenderUnsafeAttribute(t);i||(0,g.KE)("domconverter-unsafe-attribute-detected",{domElement:e,key:t,value:s}),e.hasAttribute(t)&&!i?e.removeAttribute(t):e.hasAttribute(y+t)&&i&&e.removeAttribute(y+t),e.setAttribute(i?t:y+t,s)}removeDomElementAttribute(e,t){t!=Z&&(e.removeAttribute(t),e.removeAttribute(y+t))}*viewChildrenToDom(e,t={}){const s=e.getFillerOffset&&e.getFillerOffset();let o=0;for(const i of e.getChildren()){s===o&&(yield this._getBlockFiller());const e=i.is("element")&&i.getCustomProperty("dataPipeline:transparentRendering");e&&"data"==this.renderingMode?yield*this.viewChildrenToDom(i,t):(e&&(0,g.KE)("domconverter-transparent-rendering-unsupported-in-editing-pipeline",{viewElement:i}),yield this.viewToDom(i,t)),o++}s===o&&(yield this._getBlockFiller())}viewRangeToDom(e){const t=this.viewPositionToDom(e.start),s=this.viewPositionToDom(e.end),o=this._domDocument.createRange();return o.setStart(t.parent,t.offset),o.setEnd(s.parent,s.offset),o}viewPositionToDom(e){const t=e.parent;if(t.is("$text")){const s=this.findCorrespondingDomText(t);if(!s)return null;let o=e.offset;return(0,u.Sw)(s)&&(o+=u.b_),{parent:s,offset:o}}{let s,o,i;if(0===e.offset){if(s=this.mapViewToDom(t),!s)return null;i=s.childNodes[0]}else{const t=e.nodeBefore;if(o=t.is("$text")?this.findCorrespondingDomText(t):this.mapViewToDom(e.nodeBefore),!o)return null;s=o.parentNode,i=o.nextSibling}if((0,k.Z)(i)&&(0,u.Sw)(i))return{parent:i,offset:u.b_};return{parent:s,offset:o?m(o)+1:0}}}domToView(e,t={}){if(this.isBlockFiller(e))return null;const s=this.getHostViewElement(e);if(s)return s;if((0,_.Z)(e)&&t.skipComments)return null;if((0,k.Z)(e)){if((0,u.Qh)(e))return null;{const t=this._processDataFromDomText(e);return""===t?null:new o.Z(this.document,t)}}{if(this.mapDomToView(e))return this.mapDomToView(e);let s;if(this.isDocumentFragment(e))s=new l.Z(this.document),t.bind&&this.bindDocumentFragments(e,s);else{s=this._createViewElement(e,t),t.bind&&this.bindElements(e,s);const o=e.attributes;if(o)for(let e=o.length,t=0;t<e;t++)s._setAttribute(o[t].name,o[t].value);if(this._isViewElementWithRawContent(s,t)||(0,_.Z)(e)){const t=(0,_.Z)(e)?e.data:e.innerHTML;return s._setCustomProperty("$rawContent",t),this._encounteredRawContentDomNodes.add(e),s}}if(!1!==t.withChildren)for(const o of this.domChildrenToView(e,t))s._appendChild(o);return s}}*domChildrenToView(e,t={}){for(let s=0;s<e.childNodes.length;s++){const o=e.childNodes[s],i=this.domToView(o,t);null!==i&&(yield i)}}domSelectionToView(e){if(1===e.rangeCount){let t=e.getRangeAt(0).startContainer;(0,k.Z)(t)&&(t=t.parentNode);const s=this.fakeSelectionToView(t);if(s)return s}const t=this.isDomSelectionBackward(e),s=[];for(let t=0;t<e.rangeCount;t++){const o=e.getRangeAt(t),i=this.domRangeToView(o);i&&s.push(i)}return new c.Z(s,{backward:t})}domRangeToView(e){const t=this.domPositionToView(e.startContainer,e.startOffset),s=this.domPositionToView(e.endContainer,e.endOffset);return t&&s?new a.Z(t,s):null}domPositionToView(e,t=0){if(this.isBlockFiller(e))return this.domPositionToView(e.parentNode,m(e));const s=this.mapDomToView(e);if(s&&(s.is("uiElement")||s.is("rawElement")))return n.Z._createBefore(s);if((0,k.Z)(e)){if((0,u.Qh)(e))return this.domPositionToView(e.parentNode,m(e));const s=this.findCorrespondingViewText(e);let o=t;return s?((0,u.Sw)(e)&&(o-=u.b_,o=o<0?0:o),new n.Z(s,o)):null}if(0===t){const t=this.mapDomToView(e);if(t)return new n.Z(t,0)}else{const s=e.childNodes[t-1],o=(0,k.Z)(s)?this.findCorrespondingViewText(s):this.mapDomToView(s);if(o&&o.parent)return new n.Z(o.parent,o.index+1)}return null}mapDomToView(e){return this.getHostViewElement(e)||this._domToViewMapping.get(e)}findCorrespondingViewText(e){if((0,u.Qh)(e))return null;const t=this.getHostViewElement(e);if(t)return t;const s=e.previousSibling;if(s){if(!this.isElement(s))return null;const e=this.mapDomToView(s);if(e){return e.nextSibling instanceof o.Z?e.nextSibling:null}}else{const t=this.mapDomToView(e.parentNode);if(t){const e=t.getChild(0);return e instanceof o.Z?e:null}}return null}mapViewToDom(e){return this._viewToDomMapping.get(e)}findCorrespondingDomText(e){const t=e.previousSibling;return t&&this.mapViewToDom(t)?this.mapViewToDom(t).nextSibling:!t&&e.parent&&this.mapViewToDom(e.parent)?this.mapViewToDom(e.parent).childNodes[0]:null}focus(e){const t=this.mapViewToDom(e);if(t&&t.ownerDocument.activeElement!==t){const{scrollX:e,scrollY:s}=p.Z.window,o=[];x(t,(e=>{const{scrollLeft:t,scrollTop:s}=e;o.push([t,s])})),t.focus(),x(t,(e=>{const[t,s]=o.shift();e.scrollLeft=t,e.scrollTop=s})),p.Z.window.scrollTo(e,s)}}isElement(e){return e&&e.nodeType==Node.ELEMENT_NODE}isDocumentFragment(e){return e&&e.nodeType==Node.DOCUMENT_FRAGMENT_NODE}isBlockFiller(e){return"br"==this.blockFillerMode?e.isEqualNode(b):!("BR"!==e.tagName||!A(e,this.blockElements)||1!==e.parentNode.childNodes.length)||(e.isEqualNode(v)||function(e,t){return e.isEqualNode(w)&&A(e,t)&&1===e.parentNode.childNodes.length}(e,this.blockElements))}isDomSelectionBackward(e){if(e.isCollapsed)return!1;const t=this._domDocument.createRange();t.setStart(e.anchorNode,e.anchorOffset),t.setEnd(e.focusNode,e.focusOffset);const s=t.collapsed;return t.detach(),s}getHostViewElement(e){const t=f(e);for(t.pop();t.length;){const e=t.pop(),s=this._domToViewMapping.get(e);if(s&&(s.is("uiElement")||s.is("rawElement")))return s}return null}isDomSelectionCorrect(e){return this._isDomSelectionPositionCorrect(e.anchorNode,e.anchorOffset)&&this._isDomSelectionPositionCorrect(e.focusNode,e.focusOffset)}registerRawContentMatcher(e){this._rawContentElementMatcher.add(e)}_getBlockFiller(){switch(this.blockFillerMode){case"nbsp":return(0,u.N3)(this._domDocument);case"markedNbsp":return(0,u.PQ)(this._domDocument);case"br":return(0,u.yl)(this._domDocument)}}_isDomSelectionPositionCorrect(e,t){if((0,k.Z)(e)&&(0,u.Sw)(e)&&t<u.b_)return!1;if(this.isElement(e)&&(0,u.Sw)(e.childNodes[t]))return!1;const s=this.mapDomToView(e);return!s||!s.is("uiElement")&&!s.is("rawElement")}_processDataFromViewText(e){let t=e.data;if(e.getAncestors().some((e=>this.preElements.includes(e.name))))return t;if(" "==t.charAt(0)){const s=this._getTouchingInlineViewNode(e,!1);!(s&&s.is("$textProxy")&&this._nodeEndsWithSpace(s))&&s||(t=" "+t.substr(1))}if(" "==t.charAt(t.length-1)){const s=this._getTouchingInlineViewNode(e,!0),o=s&&s.is("$textProxy")&&" "==s.data.charAt(0);" "!=t.charAt(t.length-2)&&s&&!o||(t=t.substr(0,t.length-1)+" ")}return t.replace(/ {2}/g," ")}_nodeEndsWithSpace(e){if(e.getAncestors().some((e=>this.preElements.includes(e.name))))return!1;const t=this._processDataFromViewText(e);return" "==t.charAt(t.length-1)}_processDataFromDomText(e){let t=e.data;if(function(e,t){return f(e).some((e=>e.tagName&&t.includes(e.tagName.toLowerCase())))}(e,this.preElements))return(0,u.th)(e);t=t.replace(/[ \n\t\r]{1,}/g," ");const s=this._getTouchingInlineDomNode(e,!1),o=this._getTouchingInlineDomNode(e,!0),i=this._checkShouldLeftTrimDomText(e,s),r=this._checkShouldRightTrimDomText(e,o);i&&(t=t.replace(/^ /,"")),r&&(t=t.replace(/ $/,"")),t=(0,u.th)(new Text(t)),t=t.replace(/ \u00A0/g," ");const n=o&&this.isElement(o)&&"BR"!=o.tagName,a=o&&(0,k.Z)(o)&&" "==o.data.charAt(0);return(/( |\u00A0)\u00A0$/.test(t)||!o||n||a)&&(t=t.replace(/\u00A0$/," ")),(i||s&&this.isElement(s)&&"BR"!=s.tagName)&&(t=t.replace(/^\u00A0/," ")),t}_checkShouldLeftTrimDomText(e,t){return!t||(this.isElement(t)?"BR"===t.tagName:!this._encounteredRawContentDomNodes.has(e.previousSibling)&&/[^\S\u00A0]/.test(t.data.charAt(t.data.length-1)))}_checkShouldRightTrimDomText(e,t){return!t&&!(0,u.Sw)(e)}_getTouchingInlineViewNode(e,t){const s=new d.Z({startPosition:t?n.Z._createAfter(e):n.Z._createBefore(e),direction:t?"forward":"backward"});for(const e of s){if(e.item.is("element")&&this.inlineObjectElements.includes(e.item.name))return e.item;if(e.item.is("containerElement"))return null;if(e.item.is("element","br"))return null;if(e.item.is("$textProxy"))return e.item}return null}_getTouchingInlineDomNode(e,t){if(!e.parentNode)return null;const s=t?"firstChild":"lastChild",o=t?"nextSibling":"previousSibling";let i=!0;do{if(!i&&e[s]?e=e[s]:e[o]?(e=e[o],i=!1):(e=e.parentNode,i=!0),!e||this._isBlockElement(e))return null}while(!(0,k.Z)(e)&&"BR"!=e.tagName&&!this._isInlineObjectElement(e));return e}_isBlockElement(e){return this.isElement(e)&&this.blockElements.includes(e.tagName.toLowerCase())}_isInlineObjectElement(e){return this.isElement(e)&&this.inlineObjectElements.includes(e.tagName.toLowerCase())}_createViewElement(e,t){if((0,_.Z)(e))return new r.Z(this.document,"$comment");const s=t.keepOriginalCase?e.tagName:e.tagName.toLowerCase();return new i.Z(this.document,s)}_isViewElementWithRawContent(e,t){return!1!==t.withChildren&&this._rawContentElementMatcher.match(e)}_shouldRenameElement(e){const t=e.toLowerCase();return"editing"===this.renderingMode&&this.unsafeElements.includes(t)}_createReplacementDomElement(e,t=null){const s=this._domDocument.createElement("span");if(s.setAttribute(Z,e),t){for(;t.firstChild;)s.appendChild(t.firstChild);for(const e of t.getAttributeNames())s.setAttribute(e,t.getAttribute(e))}return s}}function x(e,t){for(;e&&e!=p.Z.document;)t(e),e=e.parentNode}function A(e,t){const s=e.parentNode;return s&&s.tagName&&t.includes(s.tagName.toLowerCase())}function j(e){"script"===e&&(0,g.KE)("domconverter-unsafe-script-element-detected"),"style"===e&&(0,g.KE)("domconverter-unsafe-style-element-detected")}},"./packages/ckeditor5-engine/src/view/downcastwriter.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>k});var o=s("./packages/ckeditor5-engine/src/view/position.js"),i=s("./packages/ckeditor5-engine/src/view/range.js"),r=s("./packages/ckeditor5-engine/src/view/selection.js"),n=s("./packages/ckeditor5-engine/src/view/containerelement.js"),a=s("./packages/ckeditor5-engine/src/view/attributeelement.js"),c=s("./packages/ckeditor5-engine/src/view/emptyelement.js"),l=s("./packages/ckeditor5-engine/src/view/uielement.js"),d=s("./packages/ckeditor5-engine/src/view/rawelement.js"),h=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),u=s("./packages/ckeditor5-engine/src/view/documentfragment.js"),p=s("./packages/ckeditor5-utils/src/isiterable.ts"),g=s("./packages/ckeditor5-engine/src/view/text.js"),m=s("./packages/ckeditor5-engine/src/view/editableelement.js"),f=s("./node_modules/lodash-es/isPlainObject.js");class k{constructor(e){this.document=e,this._cloneGroups=new Map,this._slotFactory=null}setSelection(e,t,s){this.document.selection._setTo(e,t,s)}setSelectionFocus(e,t){this.document.selection._setFocus(e,t)}createDocumentFragment(e){return new u.Z(this.document,e)}createText(e){return new g.Z(this.document,e)}createAttributeElement(e,t,s={}){const o=new a.Z(this.document,e,t);return"number"==typeof s.priority&&(o._priority=s.priority),s.id&&(o._id=s.id),s.renderUnsafeAttributes&&o._unsafeAttributesToRender.push(...s.renderUnsafeAttributes),o}createContainerElement(e,t,s={},o={}){let i=null;(0,f.Z)(s)?o=s:i=s;const r=new n.Z(this.document,e,t,i);return o.renderUnsafeAttributes&&r._unsafeAttributesToRender.push(...o.renderUnsafeAttributes),r}createEditableElement(e,t,s={}){const o=new m.Z(this.document,e,t);return o._document=this.document,s.renderUnsafeAttributes&&o._unsafeAttributesToRender.push(...s.renderUnsafeAttributes),o}createEmptyElement(e,t,s={}){const o=new c.Z(this.document,e,t);return s.renderUnsafeAttributes&&o._unsafeAttributesToRender.push(...s.renderUnsafeAttributes),o}createUIElement(e,t,s){const o=new l.Z(this.document,e,t);return s&&(o.render=s),o}createRawElement(e,t,s,o={}){const i=new d.Z(this.document,e,t);return i.render=s||(()=>{}),o.renderUnsafeAttributes&&i._unsafeAttributesToRender.push(...o.renderUnsafeAttributes),i}setAttribute(e,t,s){s._setAttribute(e,t)}removeAttribute(e,t){t._removeAttribute(e)}addClass(e,t){t._addClass(e)}removeClass(e,t){t._removeClass(e)}setStyle(e,t,s){(0,f.Z)(e)&&void 0===s&&(s=t),s._setStyle(e,t)}removeStyle(e,t){t._removeStyle(e)}setCustomProperty(e,t,s){s._setCustomProperty(e,t)}removeCustomProperty(e,t){return t._removeCustomProperty(e)}breakAttributes(e){return e instanceof o.Z?this._breakAttributes(e):this._breakAttributesRange(e)}breakContainer(e){const t=e.parent;if(!t.is("containerElement"))throw new h.ZP("view-writer-break-non-container-element",this.document);if(!t.parent)throw new h.ZP("view-writer-break-root",this.document);if(e.isAtStart)return o.Z._createBefore(t);if(!e.isAtEnd){const s=t._clone(!1);this.insert(o.Z._createAfter(t),s);const r=new i.Z(e,o.Z._createAt(t,"end")),n=new o.Z(s,0);this.move(r,n)}return o.Z._createAfter(t)}mergeAttributes(e){const t=e.offset,s=e.parent;if(s.is("$text"))return e;if(s.is("attributeElement")&&0===s.childCount){const e=s.parent,t=s.index;return s._remove(),this._removeFromClonedElementsGroup(s),this.mergeAttributes(new o.Z(e,t))}const i=s.getChild(t-1),r=s.getChild(t);if(!i||!r)return e;if(i.is("$text")&&r.is("$text"))return y(i,r);if(i.is("attributeElement")&&r.is("attributeElement")&&i.isSimilar(r)){const e=i.childCount;return i._appendChild(r.getChildren()),r._remove(),this._removeFromClonedElementsGroup(r),this.mergeAttributes(new o.Z(i,e))}return e}mergeContainers(e){const t=e.nodeBefore,s=e.nodeAfter;if(!(t&&s&&t.is("containerElement")&&s.is("containerElement")))throw new h.ZP("view-writer-merge-containers-invalid-position",this.document);const r=t.getChild(t.childCount-1),n=r instanceof g.Z?o.Z._createAt(r,"end"):o.Z._createAt(t,"end");return this.move(i.Z._createIn(s),o.Z._createAt(t,"end")),this.remove(i.Z._createOn(s)),n}insert(e,t){Z(t=(0,p.Z)(t)?[...t]:[t],this.document);const s=t.reduce(((e,t)=>{const s=e[e.length-1],o=!t.is("uiElement");return s&&s.breakAttributes==o?s.nodes.push(t):e.push({breakAttributes:o,nodes:[t]}),e}),[]);let o=null,r=e;for(const{nodes:e,breakAttributes:t}of s){const s=this._insertNodes(r,e,t);o||(o=s.start),r=s.end}return o?new i.Z(o,r):new i.Z(e)}remove(e){const t=e instanceof i.Z?e:i.Z._createOn(e);if(A(t,this.document),t.isCollapsed)return new u.Z(this.document);const{start:s,end:o}=this._breakAttributesRange(t,!0),r=s.parent,n=o.offset-s.offset,a=r._removeChildren(s.offset,n);for(const e of a)this._removeFromClonedElementsGroup(e);const c=this.mergeAttributes(s);return t.start=c,t.end=c.clone(),new u.Z(this.document,a)}clear(e,t){A(e,this.document);const s=e.getWalker({direction:"backward",ignoreElementEnd:!0});for(const o of s){const s=o.item;let r;if(s.is("element")&&t.isSimilar(s))r=i.Z._createOn(s);else if(!o.nextPosition.isAfter(e.start)&&s.is("$textProxy")){const e=s.getAncestors().find((e=>e.is("element")&&t.isSimilar(e)));e&&(r=i.Z._createIn(e))}r&&(r.end.isAfter(e.end)&&(r.end=e.end),r.start.isBefore(e.start)&&(r.start=e.start),this.remove(r))}}move(e,t){let s;if(t.isAfter(e.end)){const o=(t=this._breakAttributes(t,!0)).parent,i=o.childCount;e=this._breakAttributesRange(e,!0),s=this.remove(e),t.offset+=o.childCount-i}else s=this.remove(e);return this.insert(t,s)}wrap(e,t){if(!(t instanceof a.Z))throw new h.ZP("view-writer-wrap-invalid-attribute",this.document);if(A(e,this.document),e.isCollapsed){let o=e.start;o.parent.is("element")&&(s=o.parent,!Array.from(s.getChildren()).some((e=>!e.is("uiElement"))))&&(o=o.getLastMatchingPosition((e=>e.item.is("uiElement")))),o=this._wrapPosition(o,t);const r=this.document.selection;return r.isCollapsed&&r.getFirstPosition().isEqual(e.start)&&this.setSelection(o),new i.Z(o)}return this._wrapRange(e,t);var s}unwrap(e,t){if(!(t instanceof a.Z))throw new h.ZP("view-writer-unwrap-invalid-attribute",this.document);if(A(e,this.document),e.isCollapsed)return e;const{start:s,end:o}=this._breakAttributesRange(e,!0),r=s.parent,n=this._unwrapChildren(r,s.offset,o.offset,t),c=this.mergeAttributes(n.start);c.isEqual(n.start)||n.end.offset--;const l=this.mergeAttributes(n.end);return new i.Z(c,l)}rename(e,t){const s=new n.Z(this.document,e,t.getAttributes());return this.insert(o.Z._createAfter(t),s),this.move(i.Z._createIn(t),o.Z._createAt(s,0)),this.remove(i.Z._createOn(t)),s}clearClonedElementsGroup(e){this._cloneGroups.delete(e)}createPositionAt(e,t){return o.Z._createAt(e,t)}createPositionAfter(e){return o.Z._createAfter(e)}createPositionBefore(e){return o.Z._createBefore(e)}createRange(e,t){return new i.Z(e,t)}createRangeOn(e){return i.Z._createOn(e)}createRangeIn(e){return i.Z._createIn(e)}createSelection(e,t,s){return new r.Z(e,t,s)}createSlot(e){if(!this._slotFactory)throw new h.ZP("view-writer-invalid-create-slot-context",this.document);return this._slotFactory(this,e)}_registerSlotFactory(e){this._slotFactory=e}_clearSlotFactory(){this._slotFactory=null}_insertNodes(e,t,s){let o,r;if(o=s?_(e):e.parent.is("$text")?e.parent.parent:e.parent,!o)throw new h.ZP("view-writer-invalid-position-container",this.document);r=s?this._breakAttributes(e,!0):e.parent.is("$text")?v(e):e;const n=o._insertChild(r.offset,t);for(const e of t)this._addToClonedElementsGroup(e);const a=r.getShiftedBy(n),c=this.mergeAttributes(r);c.isEqual(r)||a.offset--;const l=this.mergeAttributes(a);return new i.Z(c,l)}_wrapChildren(e,t,s,r){let n=t;const a=[];for(;n<s;){const t=e.getChild(n),s=t.is("$text"),i=t.is("attributeElement");if(i&&this._wrapAttributeElement(r,t))a.push(new o.Z(e,n));else if(s||!i||b(r,t)){const s=r._clone();t._remove(),s._appendChild(t),e._insertChild(n,s),this._addToClonedElementsGroup(s),a.push(new o.Z(e,n))}else this._wrapChildren(t,0,t.childCount,r);n++}let c=0;for(const e of a){if(e.offset-=c,e.offset==t)continue;this.mergeAttributes(e).isEqual(e)||(c++,s--)}return i.Z._createFromParentsAndOffsets(e,t,e,s)}_unwrapChildren(e,t,s,r){let n=t;const a=[];for(;n<s;){const t=e.getChild(n);if(t.is("attributeElement"))if(t.isSimilar(r)){const i=t.getChildren(),r=t.childCount;t._remove(),e._insertChild(n,i),this._removeFromClonedElementsGroup(t),a.push(new o.Z(e,n),new o.Z(e,n+r)),n+=r,s+=r-1}else this._unwrapAttributeElement(r,t)?(a.push(new o.Z(e,n),new o.Z(e,n+1)),n++):(this._unwrapChildren(t,0,t.childCount,r),n++);else n++}let c=0;for(const e of a){if(e.offset-=c,e.offset==t||e.offset==s)continue;this.mergeAttributes(e).isEqual(e)||(c++,s--)}return i.Z._createFromParentsAndOffsets(e,t,e,s)}_wrapRange(e,t){const{start:s,end:o}=this._breakAttributesRange(e,!0),r=s.parent,n=this._wrapChildren(r,s.offset,o.offset,t),a=this.mergeAttributes(n.start);a.isEqual(n.start)||n.end.offset--;const c=this.mergeAttributes(n.end);return new i.Z(a,c)}_wrapPosition(e,t){if(t.isSimilar(e.parent))return w(e.clone());e.parent.is("$text")&&(e=v(e));const s=this.createAttributeElement();s._priority=Number.POSITIVE_INFINITY,s.isSimilar=()=>!1,e.parent._insertChild(e.offset,s);const r=new i.Z(e,e.getShiftedBy(1));this.wrap(r,t);const n=new o.Z(s.parent,s.index);s._remove();const a=n.nodeBefore,c=n.nodeAfter;return a instanceof g.Z&&c instanceof g.Z?y(a,c):w(n)}_wrapAttributeElement(e,t){if(!j(e,t))return!1;if(e.name!==t.name||e.priority!==t.priority)return!1;for(const s of e.getAttributeKeys())if("class"!==s&&"style"!==s&&t.hasAttribute(s)&&t.getAttribute(s)!==e.getAttribute(s))return!1;for(const s of e.getStyleNames())if(t.hasStyle(s)&&t.getStyle(s)!==e.getStyle(s))return!1;for(const s of e.getAttributeKeys())"class"!==s&&"style"!==s&&(t.hasAttribute(s)||this.setAttribute(s,e.getAttribute(s),t));for(const s of e.getStyleNames())t.hasStyle(s)||this.setStyle(s,e.getStyle(s),t);for(const s of e.getClassNames())t.hasClass(s)||this.addClass(s,t);return!0}_unwrapAttributeElement(e,t){if(!j(e,t))return!1;if(e.name!==t.name||e.priority!==t.priority)return!1;for(const s of e.getAttributeKeys())if("class"!==s&&"style"!==s&&(!t.hasAttribute(s)||t.getAttribute(s)!==e.getAttribute(s)))return!1;if(!t.hasClass(...e.getClassNames()))return!1;for(const s of e.getStyleNames())if(!t.hasStyle(s)||t.getStyle(s)!==e.getStyle(s))return!1;for(const s of e.getAttributeKeys())"class"!==s&&"style"!==s&&this.removeAttribute(s,t);return this.removeClass(Array.from(e.getClassNames()),t),this.removeStyle(Array.from(e.getStyleNames()),t),!0}_breakAttributesRange(e,t=!1){const s=e.start,o=e.end;if(A(e,this.document),e.isCollapsed){const s=this._breakAttributes(e.start,t);return new i.Z(s,s)}const r=this._breakAttributes(o,t),n=r.parent.childCount,a=this._breakAttributes(s,t);return r.offset+=r.parent.childCount-n,new i.Z(a,r)}_breakAttributes(e,t=!1){const s=e.offset,i=e.parent;if(e.parent.is("emptyElement"))throw new h.ZP("view-writer-cannot-break-empty-element",this.document);if(e.parent.is("uiElement"))throw new h.ZP("view-writer-cannot-break-ui-element",this.document);if(e.parent.is("rawElement"))throw new h.ZP("view-writer-cannot-break-raw-element",this.document);if(!t&&i.is("$text")&&x(i.parent))return e.clone();if(x(i))return e.clone();if(i.is("$text"))return this._breakAttributes(v(e),t);if(s==i.childCount){const e=new o.Z(i.parent,i.index+1);return this._breakAttributes(e,t)}if(0===s){const e=new o.Z(i.parent,i.index);return this._breakAttributes(e,t)}{const e=i.index+1,r=i._clone();i.parent._insertChild(e,r),this._addToClonedElementsGroup(r);const n=i.childCount-s,a=i._removeChildren(s,n);r._appendChild(a);const c=new o.Z(i.parent,e);return this._breakAttributes(c,t)}}_addToClonedElementsGroup(e){if(!e.root.is("rootElement"))return;if(e.is("element"))for(const t of e.getChildren())this._addToClonedElementsGroup(t);const t=e.id;if(!t)return;let s=this._cloneGroups.get(t);s||(s=new Set,this._cloneGroups.set(t,s)),s.add(e),e._clonesGroup=s}_removeFromClonedElementsGroup(e){if(e.is("element"))for(const t of e.getChildren())this._removeFromClonedElementsGroup(t);const t=e.id;if(!t)return;const s=this._cloneGroups.get(t);s&&s.delete(e)}}function _(e){let t=e.parent;for(;!x(t);){if(!t)return;t=t.parent}return t}function b(e,t){return e.priority<t.priority||!(e.priority>t.priority)&&e.getIdentity()<t.getIdentity()}function w(e){const t=e.nodeBefore;if(t&&t.is("$text"))return new o.Z(t,t.data.length);const s=e.nodeAfter;return s&&s.is("$text")?new o.Z(s,0):e}function v(e){if(e.offset==e.parent.data.length)return new o.Z(e.parent.parent,e.parent.index+1);if(0===e.offset)return new o.Z(e.parent.parent,e.parent.index);const t=e.parent.data.slice(e.offset);return e.parent._data=e.parent.data.slice(0,e.offset),e.parent.parent._insertChild(e.parent.index+1,new g.Z(e.root.document,t)),new o.Z(e.parent.parent,e.parent.index+1)}function y(e,t){const s=e.data.length;return e._data+=t.data,t._remove(),new o.Z(e,s)}function Z(e,t){for(const s of e){if(!P.some((e=>s instanceof e)))throw new h.ZP("view-writer-insert-invalid-node-type",t);s.is("$text")||Z(s.getChildren(),t)}}const P=[g.Z,a.Z,n.Z,c.Z,d.Z,l.Z];function x(e){return e&&(e.is("containerElement")||e.is("documentFragment"))}function A(e,t){const s=_(e.start),o=_(e.end);if(!s||!o||s!==o)throw new h.ZP("view-writer-invalid-range-container",t)}function j(e,t){return null===e.id&&null===t.id}},"./packages/ckeditor5-engine/src/view/editableelement.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/view/containerelement.js"),i=s("./packages/ckeditor5-utils/src/mix.ts"),r=s("./packages/ckeditor5-utils/src/observablemixin.ts");class n extends o.Z{constructor(e,t,s,o){super(e,t,s,o),this.set("isReadOnly",!1),this.set("isFocused",!1),this.bind("isReadOnly").to(e),this.bind("isFocused").to(e,"isFocused",(t=>t&&e.selection.editableElement==this)),this.listenTo(e.selection,"change",(()=>{this.isFocused=e.isFocused&&e.selection.editableElement==this}))}is(e,t=null){return t?t===this.name&&("editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}destroy(){this.stopListening()}}(0,i.Z)(n,r.Z)},"./packages/ckeditor5-engine/src/view/element.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./packages/ckeditor5-engine/src/view/node.js"),i=s("./packages/ckeditor5-engine/src/view/text.js"),r=s("./packages/ckeditor5-engine/src/view/textproxy.js"),n=s("./packages/ckeditor5-utils/src/tomap.ts"),a=s("./packages/ckeditor5-utils/src/toarray.ts"),c=s("./packages/ckeditor5-utils/src/isiterable.ts"),l=s("./packages/ckeditor5-engine/src/view/matcher.js"),d=s("./packages/ckeditor5-engine/src/view/stylesmap.js");class h extends o.Z{constructor(e,t,s,o){if(super(e),this.name=t,this._attrs=function(e){e=(0,n.Z)(e);for(const[t,s]of e)null===s?e.delete(t):"string"!=typeof s&&e.set(t,String(s));return e}(s),this._children=[],o&&this._insertChild(0,o),this._classes=new Set,this._attrs.has("class")){const e=this._attrs.get("class");u(this._classes,e),this._attrs.delete("class")}this._styles=new d.Z(this.document.stylesProcessor),this._attrs.has("style")&&(this._styles.setTo(this._attrs.get("style")),this._attrs.delete("style")),this._customProperties=new Map,this._unsafeAttributesToRender=[]}get childCount(){return this._children.length}get isEmpty(){return 0===this._children.length}is(e,t=null){return t?t===this.name&&("element"===e||"view:element"===e):"element"===e||"view:element"===e||"node"===e||"view:node"===e}getChild(e){return this._children[e]}getChildIndex(e){return this._children.indexOf(e)}getChildren(){return this._children[Symbol.iterator]()}*getAttributeKeys(){this._classes.size>0&&(yield"class"),this._styles.isEmpty||(yield"style"),yield*this._attrs.keys()}*getAttributes(){yield*this._attrs.entries(),this._classes.size>0&&(yield["class",this.getAttribute("class")]),this._styles.isEmpty||(yield["style",this.getAttribute("style")])}getAttribute(e){if("class"==e)return this._classes.size>0?[...this._classes].join(" "):void 0;if("style"==e){const e=this._styles.toString();return""==e?void 0:e}return this._attrs.get(e)}hasAttribute(e){return"class"==e?this._classes.size>0:"style"==e?!this._styles.isEmpty:this._attrs.has(e)}isSimilar(e){if(!(e instanceof h))return!1;if(this===e)return!0;if(this.name!=e.name)return!1;if(this._attrs.size!==e._attrs.size||this._classes.size!==e._classes.size||this._styles.size!==e._styles.size)return!1;for(const[t,s]of this._attrs)if(!e._attrs.has(t)||e._attrs.get(t)!==s)return!1;for(const t of this._classes)if(!e._classes.has(t))return!1;for(const t of this._styles.getStyleNames())if(!e._styles.has(t)||e._styles.getAsString(t)!==this._styles.getAsString(t))return!1;return!0}hasClass(...e){for(const t of e)if(!this._classes.has(t))return!1;return!0}getClassNames(){return this._classes.keys()}getStyle(e){return this._styles.getAsString(e)}getNormalizedStyle(e){return this._styles.getNormalized(e)}getStyleNames(e=!1){return this._styles.getStyleNames(e)}hasStyle(...e){for(const t of e)if(!this._styles.has(t))return!1;return!0}findAncestor(...e){const t=new l.Z(...e);let s=this.parent;for(;s;){if(t.match(s))return s;s=s.parent}return null}getCustomProperty(e){return this._customProperties.get(e)}*getCustomProperties(){yield*this._customProperties.entries()}getIdentity(){const e=Array.from(this._classes).sort().join(","),t=this._styles.toString(),s=Array.from(this._attrs).map((e=>`${e[0]}="${e[1]}"`)).sort().join(" ");return this.name+(""==e?"":` class="${e}"`)+(t?` style="${t}"`:"")+(""==s?"":` ${s}`)}shouldRenderUnsafeAttribute(e){return this._unsafeAttributesToRender.includes(e)}_clone(e=!1){const t=[];if(e)for(const s of this.getChildren())t.push(s._clone(e));const s=new this.constructor(this.document,this.name,this._attrs,t);return s._classes=new Set(this._classes),s._styles.set(this._styles.getNormalized()),s._customProperties=new Map(this._customProperties),s.getFillerOffset=this.getFillerOffset,s._unsafeAttributesToRender=this._unsafeAttributesToRender,s}_appendChild(e){return this._insertChild(this.childCount,e)}_insertChild(e,t){this._fireChange("children",this);let s=0;const o=function(e,t){if("string"==typeof t)return[new i.Z(e,t)];(0,c.Z)(t)||(t=[t]);return Array.from(t).map((t=>"string"==typeof t?new i.Z(e,t):t instanceof r.Z?new i.Z(e,t.data):t))}(this.document,t);for(const t of o)null!==t.parent&&t._remove(),t.parent=this,t.document=this.document,this._children.splice(e,0,t),e++,s++;return s}_removeChildren(e,t=1){this._fireChange("children",this);for(let s=e;s<e+t;s++)this._children[s].parent=null;return this._children.splice(e,t)}_setAttribute(e,t){t=String(t),this._fireChange("attributes",this),"class"==e?u(this._classes,t):"style"==e?this._styles.setTo(t):this._attrs.set(e,t)}_removeAttribute(e){return this._fireChange("attributes",this),"class"==e?this._classes.size>0&&(this._classes.clear(),!0):"style"==e?!this._styles.isEmpty&&(this._styles.clear(),!0):this._attrs.delete(e)}_addClass(e){this._fireChange("attributes",this);for(const t of(0,a.Z)(e))this._classes.add(t)}_removeClass(e){this._fireChange("attributes",this);for(const t of(0,a.Z)(e))this._classes.delete(t)}_setStyle(e,t){this._fireChange("attributes",this),this._styles.set(e,t)}_removeStyle(e){this._fireChange("attributes",this);for(const t of(0,a.Z)(e))this._styles.remove(t)}_setCustomProperty(e,t){this._customProperties.set(e,t)}_removeCustomProperty(e){return this._customProperties.delete(e)}}function u(e,t){const s=t.split(/\s+/);e.clear(),s.forEach((t=>e.add(t)))}},"./packages/ckeditor5-engine/src/view/emptyelement.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/view/element.js"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-engine/src/view/node.js");class n extends o.Z{constructor(e,t,s,o){super(e,t,s,o),this.getFillerOffset=a}is(e,t=null){return t?t===this.name&&("emptyElement"===e||"view:emptyElement"===e||"element"===e||"view:element"===e):"emptyElement"===e||"view:emptyElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}_insertChild(e,t){if(t&&(t instanceof r.Z||Array.from(t).length>0))throw new i.ZP("view-emptyelement-cannot-add",[this,t])}}function a(){return null}},"./packages/ckeditor5-engine/src/view/filler.js":(e,t,s)=>{"use strict";s.d(t,{N3:()=>r,PQ:()=>n,Pj:()=>l,Qh:()=>h,Sw:()=>d,b_:()=>c,mm:()=>p,th:()=>u,yl:()=>a});var o=s("./packages/ckeditor5-utils/src/keyboard.ts"),i=s("./packages/ckeditor5-utils/src/dom/istext.ts");const r=e=>e.createTextNode(" "),n=e=>{const t=e.createElement("span");return t.dataset.ckeFiller=!0,t.innerText=" ",t},a=e=>{const t=e.createElement("br");return t.dataset.ckeFiller=!0,t},c=7,l="".repeat(c);function d(e){return(0,i.Z)(e)&&e.data.substr(0,c)===l}function h(e){return e.data.length==c&&d(e)}function u(e){return d(e)?e.data.slice(c):e.data}function p(e){e.document.on("arrowKey",g,{priority:"low"})}function g(e,t){if(t.keyCode==o.Do.arrowleft){const e=t.domTarget.ownerDocument.defaultView.getSelection();if(1==e.rangeCount&&e.getRangeAt(0).collapsed){const t=e.getRangeAt(0).startContainer,s=e.getRangeAt(0).startOffset;d(t)&&s<=c&&e.collapse(t,0)}}}},"./packages/ckeditor5-engine/src/view/matcher.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/isPlainObject.js"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r{constructor(...e){this._patterns=[],this.add(...e)}add(...e){for(let t of e)("string"==typeof t||t instanceof RegExp)&&(t={name:t}),this._patterns.push(t)}match(...e){for(const t of e)for(const e of this._patterns){const s=n(t,e);if(s)return{element:t,pattern:e,match:s}}return null}matchAll(...e){const t=[];for(const s of e)for(const e of this._patterns){const o=n(s,e);o&&t.push({element:s,pattern:e,match:o})}return t.length>0?t:null}getElementName(){if(1!==this._patterns.length)return null;const e=this._patterns[0],t=e.name;return"function"==typeof e||!t||t instanceof RegExp?null:t}}function n(e,t){if("function"==typeof t)return t(e);const s={};return t.name&&(s.name=function(e,t){if(e instanceof RegExp)return!!t.match(e);return e===t}(t.name,e.name),!s.name)||t.attributes&&(s.attributes=function(e,t){const s=new Set(t.getAttributeKeys());(0,o.Z)(e)?(void 0!==e.style&&(0,i.KE)("matcher-pattern-deprecated-attributes-style-key",e),void 0!==e.class&&(0,i.KE)("matcher-pattern-deprecated-attributes-class-key",e)):(s.delete("style"),s.delete("class"));return a(e,s,(e=>t.getAttribute(e)))}(t.attributes,e),!s.attributes)?null:!(t.classes&&(s.classes=function(e,t){return a(e,t.getClassNames())}(t.classes,e),!s.classes))&&(!(t.styles&&(s.styles=function(e,t){return a(e,t.getStyleNames(!0),(e=>t.getStyle(e)))}(t.styles,e),!s.styles))&&s)}function a(e,t,s){const r=function(e){if(Array.isArray(e))return e.map((e=>(0,o.Z)(e)?(void 0!==e.key&&void 0!==e.value||(0,i.KE)("matcher-pattern-missing-key-or-value",e),[e.key,e.value]):[e,!0]));if((0,o.Z)(e))return Object.entries(e);return[[e,!0]]}(e),n=Array.from(t),a=[];return r.forEach((([e,t])=>{n.forEach((o=>{(function(e,t){return!0===e||e===t||e instanceof RegExp&&t.match(e)})(e,o)&&function(e,t,s){if(!0===e)return!0;const o=s(t);return e===o||e instanceof RegExp&&!!String(o).match(e)}(t,o,s)&&a.push(o)}))})),!r.length||a.length<r.length?null:a}},"./packages/ckeditor5-engine/src/view/node.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/emittermixin.ts"),r=s("./packages/ckeditor5-utils/src/mix.ts"),n=s("./packages/ckeditor5-utils/src/comparearrays.ts"),a=s("./node_modules/lodash-es/clone.js");s("./packages/ckeditor5-utils/src/version.ts");class c{constructor(e){this.document=e,this.parent=null}get index(){let e;if(!this.parent)return null;if(-1==(e=this.parent.getChildIndex(this)))throw new o.ZP("view-node-not-found-in-parent",this);return e}get nextSibling(){const e=this.index;return null!==e&&this.parent.getChild(e+1)||null}get previousSibling(){const e=this.index;return null!==e&&this.parent.getChild(e-1)||null}get root(){let e=this;for(;e.parent;)e=e.parent;return e}isAttached(){return this.root.is("rootElement")}getPath(){const e=[];let t=this;for(;t.parent;)e.unshift(t.index),t=t.parent;return e}getAncestors(e={includeSelf:!1,parentFirst:!1}){const t=[];let s=e.includeSelf?this:this.parent;for(;s;)t[e.parentFirst?"push":"unshift"](s),s=s.parent;return t}getCommonAncestor(e,t={}){const s=this.getAncestors(t),o=e.getAncestors(t);let i=0;for(;s[i]==o[i]&&s[i];)i++;return 0===i?null:s[i-1]}isBefore(e){if(this==e)return!1;if(this.root!==e.root)return!1;const t=this.getPath(),s=e.getPath(),o=(0,n.Z)(t,s);switch(o){case"prefix":return!0;case"extension":return!1;default:return t[o]<s[o]}}isAfter(e){return this!=e&&(this.root===e.root&&!this.isBefore(e))}_remove(){this.parent._removeChildren(this.index)}_fireChange(e,t){this.fire("change:"+e,t),this.parent&&this.parent._fireChange(e,t)}toJSON(){const e=(0,a.Z)(this);return delete e.parent,e}is(e){return"node"===e||"view:node"===e}}(0,r.Z)(c,i.ZP)},"./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/eventinfo.ts");class i extends o.Z{constructor(e,t,s){super(e,t),this.startRange=s,this._eventPhase="none",this._currentTarget=null}get eventPhase(){return this._eventPhase}get currentTarget(){return this._currentTarget}}},"./packages/ckeditor5-engine/src/view/observer/domeventdata.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/assignIn.js");class i{constructor(e,t,s){this.view=e,this.document=e.document,this.domEvent=t,this.domTarget=t.target,(0,o.Z)(this,s)}get target(){return this.view.domConverter.mapDomToView(this.domTarget)}preventDefault(){this.domEvent.preventDefault()}stopPropagation(){this.domEvent.stopPropagation()}}},"./packages/ckeditor5-engine/src/view/observer/domeventobserver.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/view/observer/observer.js"),i=s("./packages/ckeditor5-engine/src/view/observer/domeventdata.js");class r extends o.Z{constructor(e){super(e),this.useCapture=!1}observe(e){("string"==typeof this.domEventType?[this.domEventType]:this.domEventType).forEach((t=>{this.listenTo(e,t,((e,t)=>{this.isEnabled&&!this.checkShouldIgnoreEventFromTarget(t.target)&&this.onDomEvent(t)}),{useCapture:this.useCapture})}))}fire(e,t,s){this.isEnabled&&this.document.fire(e,new i.Z(this.view,t,s))}}},"./packages/ckeditor5-engine/src/view/observer/mouseobserver.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-engine/src/view/observer/domeventobserver.js");class i extends o.Z{constructor(e){super(e),this.domEventType=["mousedown","mouseup","mouseover","mouseout"]}onDomEvent(e){this.fire(e.type,e)}}},"./packages/ckeditor5-engine/src/view/observer/observer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts");class r{constructor(e){this.view=e,this.document=e.document,this.isEnabled=!1}enable(){this.isEnabled=!0}disable(){this.isEnabled=!1}destroy(){this.disable(),this.stopListening()}checkShouldIgnoreEventFromTarget(e){return e&&3===e.nodeType&&(e=e.parentNode),!(!e||1!==e.nodeType)&&e.matches("[data-cke-ignore-events], [data-cke-ignore-events] *")}}(0,i.Z)(r,o.Z)},"./packages/ckeditor5-engine/src/view/position.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-engine/src/view/treewalker.js"),i=s("./packages/ckeditor5-utils/src/comparearrays.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-engine/src/view/editableelement.js");s("./packages/ckeditor5-utils/src/version.ts");class a{constructor(e,t){this.parent=e,this.offset=t}get nodeAfter(){return this.parent.is("$text")?null:this.parent.getChild(this.offset)||null}get nodeBefore(){return this.parent.is("$text")?null:this.parent.getChild(this.offset-1)||null}get isAtStart(){return 0===this.offset}get isAtEnd(){const e=this.parent.is("$text")?this.parent.data.length:this.parent.childCount;return this.offset===e}get root(){return this.parent.root}get editableElement(){let e=this.parent;for(;!(e instanceof n.Z);){if(!e.parent)return null;e=e.parent}return e}getShiftedBy(e){const t=a._createAt(this),s=t.offset+e;return t.offset=s<0?0:s,t}getLastMatchingPosition(e,t={}){t.startPosition=this;const s=new o.Z(t);return s.skip(e),s.position}getAncestors(){return this.parent.is("documentFragment")?[this.parent]:this.parent.getAncestors({includeSelf:!0})}getCommonAncestor(e){const t=this.getAncestors(),s=e.getAncestors();let o=0;for(;t[o]==s[o]&&t[o];)o++;return 0===o?null:t[o-1]}is(e){return"position"===e||"view:position"===e}isEqual(e){return this.parent==e.parent&&this.offset==e.offset}isBefore(e){return"before"==this.compareWith(e)}isAfter(e){return"after"==this.compareWith(e)}compareWith(e){if(this.root!==e.root)return"different";if(this.isEqual(e))return"same";const t=this.parent.is("node")?this.parent.getPath():[],s=e.parent.is("node")?e.parent.getPath():[];t.push(this.offset),s.push(e.offset);const o=(0,i.Z)(t,s);switch(o){case"prefix":return"before";case"extension":return"after";default:return t[o]<s[o]?"before":"after"}}getWalker(e={}){return e.startPosition=this,new o.Z(e)}clone(){return new a(this.parent,this.offset)}static _createAt(e,t){if(e instanceof a)return new this(e.parent,e.offset);{const s=e;if("end"==t)t=s.is("$text")?s.data.length:s.childCount;else{if("before"==t)return this._createBefore(s);if("after"==t)return this._createAfter(s);if(0!==t&&!t)throw new r.ZP("view-createpositionat-offset-required",s)}return new a(s,t)}}static _createAfter(e){if(e.is("$textProxy"))return new a(e.textNode,e.offsetInText+e.data.length);if(!e.parent)throw new r.ZP("view-position-after-root",e,{root:e});return new a(e.parent,e.index+1)}static _createBefore(e){if(e.is("$textProxy"))return new a(e.textNode,e.offsetInText);if(!e.parent)throw new r.ZP("view-position-before-root",e,{root:e});return new a(e.parent,e.index)}}},"./packages/ckeditor5-engine/src/view/range.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/view/position.js"),i=s("./packages/ckeditor5-engine/src/view/treewalker.js");class r{constructor(e,t=null){this.start=e.clone(),this.end=t?t.clone():e.clone()}*[Symbol.iterator](){yield*new i.Z({boundaries:this,ignoreElementEnd:!0})}get isCollapsed(){return this.start.isEqual(this.end)}get isFlat(){return this.start.parent===this.end.parent}get root(){return this.start.root}getEnlarged(){let e=this.start.getLastMatchingPosition(n,{direction:"backward"}),t=this.end.getLastMatchingPosition(n);return e.parent.is("$text")&&e.isAtStart&&(e=o.Z._createBefore(e.parent)),t.parent.is("$text")&&t.isAtEnd&&(t=o.Z._createAfter(t.parent)),new r(e,t)}getTrimmed(){let e=this.start.getLastMatchingPosition(n);if(e.isAfter(this.end)||e.isEqual(this.end))return new r(e,e);let t=this.end.getLastMatchingPosition(n,{direction:"backward"});const s=e.nodeAfter,i=t.nodeBefore;return s&&s.is("$text")&&(e=new o.Z(s,0)),i&&i.is("$text")&&(t=new o.Z(i,i.data.length)),new r(e,t)}isEqual(e){return this==e||this.start.isEqual(e.start)&&this.end.isEqual(e.end)}containsPosition(e){return e.isAfter(this.start)&&e.isBefore(this.end)}containsRange(e,t=!1){e.isCollapsed&&(t=!1);const s=this.containsPosition(e.start)||t&&this.start.isEqual(e.start),o=this.containsPosition(e.end)||t&&this.end.isEqual(e.end);return s&&o}getDifference(e){const t=[];return this.isIntersecting(e)?(this.containsPosition(e.start)&&t.push(new r(this.start,e.start)),this.containsPosition(e.end)&&t.push(new r(e.end,this.end))):t.push(this.clone()),t}getIntersection(e){if(this.isIntersecting(e)){let t=this.start,s=this.end;return this.containsPosition(e.start)&&(t=e.start),this.containsPosition(e.end)&&(s=e.end),new r(t,s)}return null}getWalker(e={}){return e.boundaries=this,new i.Z(e)}getCommonAncestor(){return this.start.getCommonAncestor(this.end)}getContainedElement(){if(this.isCollapsed)return null;let e=this.start.nodeAfter,t=this.end.nodeBefore;return this.start.parent.is("$text")&&this.start.isAtEnd&&this.start.parent.nextSibling&&(e=this.start.parent.nextSibling),this.end.parent.is("$text")&&this.end.isAtStart&&this.end.parent.previousSibling&&(t=this.end.parent.previousSibling),e&&e.is("element")&&e===t?e:null}clone(){return new r(this.start,this.end)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new i.Z(e);for(const e of t)yield e.item}*getPositions(e={}){e.boundaries=this;const t=new i.Z(e);yield t.position;for(const e of t)yield e.nextPosition}is(e){return"range"===e||"view:range"===e}isIntersecting(e){return this.start.isBefore(e.end)&&this.end.isAfter(e.start)}static _createFromParentsAndOffsets(e,t,s,i){return new this(new o.Z(e,t),new o.Z(s,i))}static _createFromPositionAndShift(e,t){const s=e,o=e.getShiftedBy(t);return t>0?new this(s,o):new this(o,s)}static _createIn(e){return this._createFromParentsAndOffsets(e,0,e,e.childCount)}static _createOn(e){const t=e.is("$textProxy")?e.offsetSize:1;return this._createFromPositionAndShift(o.Z._createBefore(e),t)}}function n(e){return!(!e.item.is("attributeElement")&&!e.item.is("uiElement"))}},"./packages/ckeditor5-engine/src/view/rawelement.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/view/element.js"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-engine/src/view/node.js");class n extends o.Z{constructor(e,t,s,o){super(e,t,s,o),this.getFillerOffset=a}is(e,t=null){return t?t===this.name&&("rawElement"===e||"view:rawElement"===e||"element"===e||"view:element"===e):"rawElement"===e||"view:rawElement"===e||e===this.name||e==="view:"+this.name||"element"===e||"view:element"===e||"node"===e||"view:node"===e}_insertChild(e,t){if(t&&(t instanceof r.Z||Array.from(t).length>0))throw new i.ZP("view-rawelement-cannot-add",[this,t])}}function a(){return null}},"./packages/ckeditor5-engine/src/view/renderer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>v});var o=s("./packages/ckeditor5-engine/src/view/text.js"),i=s("./packages/ckeditor5-engine/src/view/position.js"),r=s("./packages/ckeditor5-engine/src/view/filler.js"),n=s("./packages/ckeditor5-utils/src/mix.ts"),a=s("./packages/ckeditor5-utils/src/diff.ts");function c(e,t,s){e.insertBefore(s,e.childNodes[t]||null)}function l(e){const t=e.parentNode;t&&t.removeChild(e)}var d=s("./packages/ckeditor5-utils/src/observablemixin.ts"),h=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),u=s("./packages/ckeditor5-utils/src/dom/istext.ts"),p=s("./packages/ckeditor5-utils/src/dom/iscomment.ts"),g=s("./packages/ckeditor5-utils/src/dom/isnode.ts"),m=s("./packages/ckeditor5-utils/src/fastdiff.ts"),f=s("./packages/ckeditor5-utils/src/env.ts"),k=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),_=s.n(k),b=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-engine/theme/renderer.css"),w={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};_()(b.Z,w);b.Z.locals;class v{constructor(e,t){this.domDocuments=new Set,this.domConverter=e,this.markedAttributes=new Set,this.markedChildren=new Set,this.markedTexts=new Set,this.selection=t,this.set("isFocused",!1),this.set("isSelecting",!1),f.ZP.isBlink&&!f.ZP.isAndroid&&this.on("change:isSelecting",(()=>{this.isSelecting||this.render()})),this._inlineFiller=null,this._fakeSelectionContainer=null}markToSync(e,t){if("text"===e)this.domConverter.mapViewToDom(t.parent)&&this.markedTexts.add(t);else{if(!this.domConverter.mapViewToDom(t))return;if("attributes"===e)this.markedAttributes.add(t);else{if("children"!==e)throw new h.ZP("view-renderer-unknown-type",this);this.markedChildren.add(t)}}}render(){let e;const t=!(f.ZP.isBlink&&!f.ZP.isAndroid)||!this.isSelecting;for(const e of this.markedChildren)this._updateChildrenMappings(e);t?(this._inlineFiller&&!this._isSelectionInInlineFiller()&&this._removeInlineFiller(),this._inlineFiller?e=this._getInlineFillerPosition():this._needsInlineFillerAtSelection()&&(e=this.selection.getFirstPosition(),this.markedChildren.add(e.parent))):this._inlineFiller&&this._inlineFiller.parentNode&&(e=this.domConverter.domPositionToView(this._inlineFiller),e&&e.parent.is("$text")&&(e=i.Z._createBefore(e.parent)));for(const e of this.markedAttributes)this._updateAttrs(e);for(const t of this.markedChildren)this._updateChildren(t,{inlineFillerPosition:e});for(const t of this.markedTexts)!this.markedChildren.has(t.parent)&&this.domConverter.mapViewToDom(t.parent)&&this._updateText(t,{inlineFillerPosition:e});if(t)if(e){const t=this.domConverter.viewPositionToDom(e),s=t.parent.ownerDocument;(0,r.Sw)(t.parent)?this._inlineFiller=t.parent:this._inlineFiller=y(s,t.parent,t.offset)}else this._inlineFiller=null;this._updateFocus(),this._updateSelection(),this.markedTexts.clear(),this.markedAttributes.clear(),this.markedChildren.clear()}_updateChildrenMappings(e){if(!this.domConverter.mapViewToDom(e))return;const t=Array.from(this.domConverter.mapViewToDom(e).childNodes),s=Array.from(this.domConverter.viewChildrenToDom(e,{withChildren:!1})),o=this._diffNodeLists(t,s),i=this._findReplaceActions(o,t,s);if(-1!==i.indexOf("replace")){const o={equal:0,insert:0,delete:0};for(const r of i)if("replace"===r){const i=o.equal+o.insert,r=o.equal+o.delete,n=e.getChild(i);!n||n.is("uiElement")||n.is("rawElement")||this._updateElementMappings(n,t[r]),l(s[i]),o.equal++}else o[r]++}}_updateElementMappings(e,t){this.domConverter.unbindDomElement(t),this.domConverter.bindElements(t,e),this.markedChildren.add(e),this.markedAttributes.add(e)}_getInlineFillerPosition(){const e=this.selection.getFirstPosition();return e.parent.is("$text")?i.Z._createBefore(this.selection.getFirstPosition().parent):e}_isSelectionInInlineFiller(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const e=this.selection.getFirstPosition(),t=this.domConverter.viewPositionToDom(e);return!!(t&&(0,u.Z)(t.parent)&&(0,r.Sw)(t.parent))}_removeInlineFiller(){const e=this._inlineFiller;if(!(0,r.Sw)(e))throw new h.ZP("view-renderer-filler-was-lost",this);(0,r.Qh)(e)?e.remove():e.data=e.data.substr(r.b_),this._inlineFiller=null}_needsInlineFillerAtSelection(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const e=this.selection.getFirstPosition(),t=e.parent,s=e.offset;if(!this.domConverter.mapViewToDom(t.root))return!1;if(!t.is("element"))return!1;if(!function(e){if("false"==e.getAttribute("contenteditable"))return!1;const t=e.findAncestor((e=>e.hasAttribute("contenteditable")));return!t||"true"==t.getAttribute("contenteditable")}(t))return!1;if(s===t.getFillerOffset())return!1;const i=e.nodeBefore,r=e.nodeAfter;return!(i instanceof o.Z||r instanceof o.Z)}_updateText(e,t){const s=this.domConverter.findCorrespondingDomText(e),o=this.domConverter.viewToDom(e),i=s.data;let n=o.data;const a=t.inlineFillerPosition;if(a&&a.parent==e.parent&&a.offset==e.index&&(n=r.Pj+n),i!=n){const e=(0,m.Z)(i,n);for(const t of e)"insert"===t.type?s.insertData(t.index,t.values.join("")):s.deleteData(t.index,t.howMany)}}_updateAttrs(e){const t=this.domConverter.mapViewToDom(e);if(!t)return;const s=Array.from(t.attributes).map((e=>e.name)),o=e.getAttributeKeys();for(const s of o)this.domConverter.setDomElementAttribute(t,s,e.getAttribute(s),e);for(const o of s)e.hasAttribute(o)||this.domConverter.removeDomElementAttribute(t,o)}_updateChildren(e,t){const s=this.domConverter.mapViewToDom(e);if(!s)return;const o=t.inlineFillerPosition,i=this.domConverter.mapViewToDom(e).childNodes,r=Array.from(this.domConverter.viewChildrenToDom(e,{bind:!0}));o&&o.parent===e&&y(s.ownerDocument,r,o.offset);const n=this._diffNodeLists(i,r);let a=0;const d=new Set;for(const e of n)"delete"===e?(d.add(i[a]),l(i[a])):"equal"===e&&a++;a=0;for(const e of n)"insert"===e?(c(s,a,r[a]),a++):"equal"===e&&(this._markDescendantTextToSync(this.domConverter.domToView(r[a])),a++);for(const e of d)e.parentNode||this.domConverter.unbindDomElement(e)}_diffNodeLists(e,t){return e=function(e,t){const s=Array.from(e);if(0==s.length||!t)return s;s[s.length-1]==t&&s.pop();return s}(e,this._fakeSelectionContainer),(0,a.Z)(e,t,P.bind(null,this.domConverter))}_findReplaceActions(e,t,s){if(-1===e.indexOf("insert")||-1===e.indexOf("delete"))return e;let o=[],i=[],r=[];const n={equal:0,insert:0,delete:0};for(const c of e)"insert"===c?r.push(s[n.equal+n.insert]):"delete"===c?i.push(t[n.equal+n.delete]):(o=o.concat((0,a.Z)(i,r,Z).map((e=>"equal"===e?"replace":e))),o.push("equal"),i=[],r=[]),n[c]++;return o.concat((0,a.Z)(i,r,Z).map((e=>"equal"===e?"replace":e)))}_markDescendantTextToSync(e){if(e)if(e.is("$text"))this.markedTexts.add(e);else if(e.is("element"))for(const t of e.getChildren())this._markDescendantTextToSync(t)}_updateSelection(){if(f.ZP.isBlink&&!f.ZP.isAndroid&&this.isSelecting&&!this.markedChildren.size)return;if(0===this.selection.rangeCount)return this._removeDomSelection(),void this._removeFakeSelection();const e=this.domConverter.mapViewToDom(this.selection.editableElement);this.isFocused&&e&&(this.selection.isFake?this._updateFakeSelection(e):(this._removeFakeSelection(),this._updateDomSelection(e)))}_updateFakeSelection(e){const t=e.ownerDocument;this._fakeSelectionContainer||(this._fakeSelectionContainer=function(e){const t=e.createElement("div");return t.className="ck-fake-selection-container",Object.assign(t.style,{position:"fixed",top:0,left:"-9999px",width:"42px"}),t.textContent=" ",t}(t));const s=this._fakeSelectionContainer;if(this.domConverter.bindFakeSelection(s,this.selection),!this._fakeSelectionNeedsUpdate(e))return;s.parentElement&&s.parentElement==e||e.appendChild(s),s.textContent=this.selection.fakeSelectionLabel||" ";const o=t.getSelection(),i=t.createRange();o.removeAllRanges(),i.selectNodeContents(s),o.addRange(i)}_updateDomSelection(e){const t=e.ownerDocument.defaultView.getSelection();if(!this._domSelectionNeedsUpdate(t))return;const s=this.domConverter.viewPositionToDom(this.selection.anchor),o=this.domConverter.viewPositionToDom(this.selection.focus);t.collapse(s.parent,s.offset),t.extend(o.parent,o.offset),f.ZP.isGecko&&function(e,t){const s=e.parent;if(s.nodeType!=Node.ELEMENT_NODE||e.offset!=s.childNodes.length-1)return;const o=s.childNodes[e.offset];o&&"BR"==o.tagName&&t.addRange(t.getRangeAt(0))}(o,t)}_domSelectionNeedsUpdate(e){if(!this.domConverter.isDomSelectionCorrect(e))return!0;const t=e&&this.domConverter.domSelectionToView(e);return(!t||!this.selection.isEqual(t))&&!(!this.selection.isCollapsed&&this.selection.isSimilar(t))}_fakeSelectionNeedsUpdate(e){const t=this._fakeSelectionContainer,s=e.ownerDocument.getSelection();return!t||t.parentElement!==e||(s.anchorNode!==t&&!t.contains(s.anchorNode)||t.textContent!==this.selection.fakeSelectionLabel)}_removeDomSelection(){for(const e of this.domDocuments){if(e.getSelection().rangeCount){const t=e.activeElement,s=this.domConverter.mapDomToView(t);t&&s&&e.getSelection().removeAllRanges()}}}_removeFakeSelection(){const e=this._fakeSelectionContainer;e&&e.remove()}_updateFocus(){if(this.isFocused){const e=this.selection.editableElement;e&&this.domConverter.focus(e)}}}function y(e,t,s){const o=t instanceof Array?t:t.childNodes,i=o[s];if((0,u.Z)(i))return i.data=r.Pj+i.data,i;{const i=e.createTextNode(r.Pj);return Array.isArray(t)?o.splice(s,0,i):c(t,s,i),i}}function Z(e,t){return(0,g.Z)(e)&&(0,g.Z)(t)&&!(0,u.Z)(e)&&!(0,u.Z)(t)&&!(0,p.Z)(e)&&!(0,p.Z)(t)&&e.tagName.toLowerCase()===t.tagName.toLowerCase()}function P(e,t,s){return t===s||((0,u.Z)(t)&&(0,u.Z)(s)?t.data===s.data:!(!e.isBlockFiller(t)||!e.isBlockFiller(s)))}(0,n.Z)(v,d.Z)},"./packages/ckeditor5-engine/src/view/selection.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-engine/src/view/range.js"),r=s("./packages/ckeditor5-engine/src/view/position.js"),n=s("./packages/ckeditor5-utils/src/mix.ts"),a=s("./packages/ckeditor5-utils/src/emittermixin.ts"),c=s("./packages/ckeditor5-engine/src/view/node.js"),l=s("./packages/ckeditor5-utils/src/count.ts"),d=s("./packages/ckeditor5-utils/src/isiterable.ts"),h=s("./packages/ckeditor5-engine/src/view/documentselection.js");class u{constructor(e=null,t,s){this._ranges=[],this._lastRangeBackward=!1,this._isFake=!1,this._fakeSelectionLabel="",this.setTo(e,t,s)}get isFake(){return this._isFake}get fakeSelectionLabel(){return this._fakeSelectionLabel}get anchor(){if(!this._ranges.length)return null;const e=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?e.end:e.start).clone()}get focus(){if(!this._ranges.length)return null;const e=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?e.start:e.end).clone()}get isCollapsed(){return 1===this.rangeCount&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}get editableElement(){return this.anchor?this.anchor.editableElement:null}*getRanges(){for(const e of this._ranges)yield e.clone()}getFirstRange(){let e=null;for(const t of this._ranges)e&&!t.start.isBefore(e.start)||(e=t);return e?e.clone():null}getLastRange(){let e=null;for(const t of this._ranges)e&&!t.end.isAfter(e.end)||(e=t);return e?e.clone():null}getFirstPosition(){const e=this.getFirstRange();return e?e.start.clone():null}getLastPosition(){const e=this.getLastRange();return e?e.end.clone():null}isEqual(e){if(this.isFake!=e.isFake)return!1;if(this.isFake&&this.fakeSelectionLabel!=e.fakeSelectionLabel)return!1;if(this.rangeCount!=e.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(e.anchor)||!this.focus.isEqual(e.focus))return!1;for(const t of this._ranges){let s=!1;for(const o of e._ranges)if(t.isEqual(o)){s=!0;break}if(!s)return!1}return!0}isSimilar(e){if(this.isBackward!=e.isBackward)return!1;const t=(0,l.Z)(this.getRanges());if(t!=(0,l.Z)(e.getRanges()))return!1;if(0==t)return!0;for(let t of this.getRanges()){t=t.getTrimmed();let s=!1;for(let o of e.getRanges())if(o=o.getTrimmed(),t.start.isEqual(o.start)&&t.end.isEqual(o.end)){s=!0;break}if(!s)return!1}return!0}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}setTo(e,t,s){if(null===e)this._setRanges([]),this._setFakeOptions(t);else if(e instanceof u||e instanceof h.Z)this._setRanges(e.getRanges(),e.isBackward),this._setFakeOptions({fake:e.isFake,label:e.fakeSelectionLabel});else if(e instanceof i.Z)this._setRanges([e],t&&t.backward),this._setFakeOptions(t);else if(e instanceof r.Z)this._setRanges([new i.Z(e)]),this._setFakeOptions(t);else if(e instanceof c.Z){const n=!!s&&!!s.backward;let a;if(void 0===t)throw new o.ZP("view-selection-setto-required-second-parameter",this);a="in"==t?i.Z._createIn(e):"on"==t?i.Z._createOn(e):new i.Z(r.Z._createAt(e,t)),this._setRanges([a],n),this._setFakeOptions(s)}else{if(!(0,d.Z)(e))throw new o.ZP("view-selection-setto-not-selectable",this);this._setRanges(e,t&&t.backward),this._setFakeOptions(t)}this.fire("change")}setFocus(e,t){if(null===this.anchor)throw new o.ZP("view-selection-setfocus-no-ranges",this);const s=r.Z._createAt(e,t);if("same"==s.compareWith(this.focus))return;const n=this.anchor;this._ranges.pop(),"before"==s.compareWith(n)?this._addRange(new i.Z(s,n),!0):this._addRange(new i.Z(n,s)),this.fire("change")}is(e){return"selection"===e||"view:selection"===e}_setRanges(e,t=!1){e=Array.from(e),this._ranges=[];for(const t of e)this._addRange(t);this._lastRangeBackward=!!t}_setFakeOptions(e={}){this._isFake=!!e.fake,this._fakeSelectionLabel=e.fake&&e.label||""}_addRange(e,t=!1){if(!(e instanceof i.Z))throw new o.ZP("view-selection-add-range-not-range",this);this._pushRange(e),this._lastRangeBackward=!!t}_pushRange(e){for(const t of this._ranges)if(e.isIntersecting(t))throw new o.ZP("view-selection-range-intersects",this,{addedRange:e,intersectingRange:t});this._ranges.push(new i.Z(e.start,e.end))}}(0,n.Z)(u,a.ZP)},"./packages/ckeditor5-engine/src/view/stylesmap.js":(e,t,s)=>{"use strict";s.d(t,{A:()=>ee,Z:()=>Y});var o=s("./node_modules/lodash-es/isObject.js"),i=s("./node_modules/lodash-es/isArray.js"),r=s("./node_modules/lodash-es/isSymbol.js"),n=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;const c=function(e,t){if((0,i.Z)(e))return!1;var s=typeof e;return!("number"!=s&&"symbol"!=s&&"boolean"!=s&&null!=e&&!(0,r.Z)(e))||(a.test(e)||!n.test(e)||null!=t&&e in Object(t))};var l=s("./node_modules/lodash-es/_MapCache.js");function d(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var s=function(){var o=arguments,i=t?t.apply(this,o):o[0],r=s.cache;if(r.has(i))return r.get(i);var n=e.apply(this,o);return s.cache=r.set(i,n)||r,n};return s.cache=new(d.Cache||l.Z),s}d.Cache=l.Z;const h=d;var u=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,p=/\\(\\)?/g;const g=function(e){var t=h(e,(function(e){return 500===s.size&&s.clear(),e})),s=t.cache;return t}((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(u,(function(e,s,o,i){t.push(o?i.replace(p,"$1"):s||e)})),t}));var m=s("./node_modules/lodash-es/toString.js");const f=function(e,t){return(0,i.Z)(e)?e:c(e,t)?[e]:g((0,m.Z)(e))};const k=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0};const _=function(e){if("string"==typeof e||(0,r.Z)(e))return e;var t=e+"";return"0"==t&&1/e==-Infinity?"-0":t};const b=function(e,t){for(var s=0,o=(t=f(t,e)).length;null!=e&&s<o;)e=e[_(t[s++])];return s&&s==o?e:void 0};const w=function(e,t,s){var o=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(s=s>i?i:s)<0&&(s+=i),i=t>s?0:s-t>>>0,t>>>=0;for(var r=Array(i);++o<i;)r[o]=e[o+t];return r};const v=function(e,t){return t.length<2?e:b(e,w(t,0,-1))};const y=function(e,t){return t=f(t,e),null==(e=v(e,t))||delete e[_(k(t))]};const Z=function(e,t){return null==e||y(e,t)};const P=function(e,t,s){var o=null==e?void 0:b(e,t);return void 0===o?s:o};var x=s("./node_modules/lodash-es/_Stack.js"),A=s("./node_modules/lodash-es/_baseAssignValue.js"),j=s("./node_modules/lodash-es/eq.js");const T=function(e,t,s){(void 0!==s&&!(0,j.Z)(e[t],s)||void 0===s&&!(t in e))&&(0,A.Z)(e,t,s)};const C=function(e){return function(t,s,o){for(var i=-1,r=Object(t),n=o(t),a=n.length;a--;){var c=n[e?a:++i];if(!1===s(r[c],c,r))break}return t}}();var E=s("./node_modules/lodash-es/_cloneBuffer.js"),S=s("./node_modules/lodash-es/_cloneTypedArray.js"),O=s("./node_modules/lodash-es/_copyArray.js"),R=s("./node_modules/lodash-es/_initCloneObject.js"),M=s("./node_modules/lodash-es/isArguments.js"),N=s("./node_modules/lodash-es/isArrayLike.js"),I=s("./node_modules/lodash-es/isObjectLike.js");const V=function(e){return(0,I.Z)(e)&&(0,N.Z)(e)};var z=s("./node_modules/lodash-es/isBuffer.js"),D=s("./node_modules/lodash-es/isFunction.js"),B=s("./node_modules/lodash-es/isPlainObject.js"),F=s("./node_modules/lodash-es/isTypedArray.js");const L=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]};var W=s("./node_modules/lodash-es/_copyObject.js"),q=s("./node_modules/lodash-es/keysIn.js");const $=function(e){return(0,W.Z)(e,(0,q.Z)(e))};const H=function(e,t,s,r,n,a,c){var l=L(e,s),d=L(t,s),h=c.get(d);if(h)T(e,s,h);else{var u=a?a(l,d,s+"",e,t,c):void 0,p=void 0===u;if(p){var g=(0,i.Z)(d),m=!g&&(0,z.Z)(d),f=!g&&!m&&(0,F.Z)(d);u=d,g||m||f?(0,i.Z)(l)?u=l:V(l)?u=(0,O.Z)(l):m?(p=!1,u=(0,E.Z)(d,!0)):f?(p=!1,u=(0,S.Z)(d,!0)):u=[]:(0,B.Z)(d)||(0,M.Z)(d)?(u=l,(0,M.Z)(l)?u=$(l):(0,o.Z)(l)&&!(0,D.Z)(l)||(u=(0,R.Z)(d))):p=!1}p&&(c.set(d,u),n(u,d,r,a,c),c.delete(d)),T(e,s,u)}};const U=function e(t,s,i,r,n){t!==s&&C(s,(function(a,c){if(n||(n=new x.Z),(0,o.Z)(a))H(t,s,c,i,e,r,n);else{var l=r?r(L(t,c),a,c+"",t,s,n):void 0;void 0===l&&(l=a),T(t,c,l)}}),q.Z)};const K=(0,s("./node_modules/lodash-es/_createAssigner.js").Z)((function(e,t,s){U(e,t,s)}));var G=s("./node_modules/lodash-es/_assignValue.js"),J=s("./node_modules/lodash-es/_isIndex.js");const X=function(e,t,s,i){if(!(0,o.Z)(e))return e;for(var r=-1,n=(t=f(t,e)).length,a=n-1,c=e;null!=c&&++r<n;){var l=_(t[r]),d=s;if("__proto__"===l||"constructor"===l||"prototype"===l)return e;if(r!=a){var h=c[l];void 0===(d=i?i(h,l,c):void 0)&&(d=(0,o.Z)(h)?h:(0,J.Z)(t[r+1])?[]:{})}(0,G.Z)(c,l,d),c=c[l]}return e};const Q=function(e,t,s){return null==e?e:X(e,t,s)};class Y{constructor(e){this._styles={},this._styleProcessor=e}get isEmpty(){const e=Object.entries(this._styles);return!Array.from(e).length}get size(){return this.isEmpty?0:this.getStyleNames().length}setTo(e){this.clear();const t=Array.from(function(e){let t=null,s=0,o=0,i=null;const r=new Map;if(""===e)return r;";"!=e.charAt(e.length-1)&&(e+=";");for(let n=0;n<e.length;n++){const a=e.charAt(n);if(null===t)switch(a){case":":i||(i=e.substr(s,n-s),o=n+1);break;case'"':case"'":t=a;break;case";":{const t=e.substr(o,n-o);i&&r.set(i.trim(),t.trim()),i=null,s=n+1;break}}else a===t&&(t=null)}return r}(e).entries());for(const[e,s]of t)this._styleProcessor.toNormalizedForm(e,s,this._styles)}has(e){if(this.isEmpty)return!1;const t=this._styleProcessor.getReducedForm(e,this._styles).find((([t])=>t===e));return Array.isArray(t)}set(e,t){if((0,o.Z)(e))for(const[t,s]of Object.entries(e))this._styleProcessor.toNormalizedForm(t,s,this._styles);else this._styleProcessor.toNormalizedForm(e,t,this._styles)}remove(e){const t=te(e);Z(this._styles,t),delete this._styles[e],this._cleanEmptyObjectsOnPath(t)}getNormalized(e){return this._styleProcessor.getNormalized(e,this._styles)}toString(){return this.isEmpty?"":this._getStylesEntries().map((e=>e.join(":"))).sort().join(";")+";"}getAsString(e){if(this.isEmpty)return;if(this._styles[e]&&!(0,o.Z)(this._styles[e]))return this._styles[e];const t=this._styleProcessor.getReducedForm(e,this._styles).find((([t])=>t===e));return Array.isArray(t)?t[1]:void 0}getStyleNames(e=!1){if(this.isEmpty)return[];if(e)return this._styleProcessor.getStyleNames(this._styles);return this._getStylesEntries().map((([e])=>e))}clear(){this._styles={}}_getStylesEntries(){const e=[],t=Object.keys(this._styles);for(const s of t)e.push(...this._styleProcessor.getReducedForm(s,this._styles));return e}_cleanEmptyObjectsOnPath(e){const t=e.split(".");if(!(t.length>1))return;const s=t.splice(0,t.length-1).join("."),o=P(this._styles,s);if(!o)return;!Array.from(Object.keys(o)).length&&this.remove(s)}}class ee{constructor(){this._normalizers=new Map,this._extractors=new Map,this._reducers=new Map,this._consumables=new Map}toNormalizedForm(e,t,s){if((0,o.Z)(t))se(s,te(e),t);else if(this._normalizers.has(e)){const o=this._normalizers.get(e),{path:i,value:r}=o(t);se(s,i,r)}else se(s,e,t)}getNormalized(e,t){if(!e)return K({},t);if(void 0!==t[e])return t[e];if(this._extractors.has(e)){const s=this._extractors.get(e);if("string"==typeof s)return P(t,s);const o=s(e,t);if(o)return o}return P(t,te(e))}getReducedForm(e,t){const s=this.getNormalized(e,t);if(void 0===s)return[];if(this._reducers.has(e)){return this._reducers.get(e)(s)}return[[e,s]]}getStyleNames(e){const t=Array.from(this._consumables.keys()).filter((t=>{const s=this.getNormalized(t,e);return s&&"object"==typeof s?Object.keys(s).length:s})),s=new Set([...t,...Object.keys(e)]);return Array.from(s.values())}getRelatedStyles(e){return this._consumables.get(e)||[]}setNormalizer(e,t){this._normalizers.set(e,t)}setExtractor(e,t){this._extractors.set(e,t)}setReducer(e,t){this._reducers.set(e,t)}setStyleRelation(e,t){this._mapStyleNames(e,t);for(const s of t)this._mapStyleNames(s,[e])}_mapStyleNames(e,t){this._consumables.has(e)||this._consumables.set(e,[]),this._consumables.get(e).push(...t)}}function te(e){return e.replace("-",".")}function se(e,t,s){let i=s;(0,o.Z)(s)&&(i=K({},P(e,t),s)),Q(e,t,i)}},"./packages/ckeditor5-engine/src/view/text.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-engine/src/view/node.js");class i extends o.Z{constructor(e,t){super(e),this._textData=t}is(e){return"$text"===e||"view:$text"===e||"text"===e||"view:text"===e||"node"===e||"view:node"===e}get data(){return this._textData}get _data(){return this.data}set _data(e){this._fireChange("text",this),this._textData=e}isSimilar(e){return e instanceof i&&(this===e||this.data===e.data)}_clone(){return new i(this.document,this.data)}}},"./packages/ckeditor5-engine/src/view/textproxy.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class i{constructor(e,t,s){if(this.textNode=e,t<0||t>e.data.length)throw new o.ZP("view-textproxy-wrong-offsetintext",this);if(s<0||t+s>e.data.length)throw new o.ZP("view-textproxy-wrong-length",this);this.data=e.data.substring(t,t+s),this.offsetInText=t}get offsetSize(){return this.data.length}get isPartial(){return this.data.length!==this.textNode.data.length}get parent(){return this.textNode.parent}get root(){return this.textNode.root}get document(){return this.textNode.document}is(e){return"$textProxy"===e||"view:$textProxy"===e||"textProxy"===e||"view:textProxy"===e}getAncestors(e={includeSelf:!1,parentFirst:!1}){const t=[];let s=e.includeSelf?this.textNode:this.parent;for(;null!==s;)t[e.parentFirst?"push":"unshift"](s),s=s.parent;return t}}},"./packages/ckeditor5-engine/src/view/treewalker.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/view/element.js"),i=s("./packages/ckeditor5-engine/src/view/text.js"),r=s("./packages/ckeditor5-engine/src/view/textproxy.js"),n=s("./packages/ckeditor5-engine/src/view/position.js"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class c{constructor(e={}){if(!e.boundaries&&!e.startPosition)throw new a.ZP("view-tree-walker-no-start-position",null);if(e.direction&&"forward"!=e.direction&&"backward"!=e.direction)throw new a.ZP("view-tree-walker-unknown-direction",e.startPosition,{direction:e.direction});this.boundaries=e.boundaries||null,e.startPosition?this.position=n.Z._createAt(e.startPosition):this.position=n.Z._createAt(e.boundaries["backward"==e.direction?"end":"start"]),this.direction=e.direction||"forward",this.singleCharacters=!!e.singleCharacters,this.shallow=!!e.shallow,this.ignoreElementEnd=!!e.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null}[Symbol.iterator](){return this}skip(e){let t,s,o;do{o=this.position,({done:t,value:s}=this.next())}while(!t&&e(s));t||(this.position=o)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){let e=this.position.clone();const t=this.position,s=e.parent;if(null===s.parent&&e.offset===s.childCount)return{done:!0};if(s===this._boundaryEndParent&&e.offset==this.boundaries.end.offset)return{done:!0};let a;if(s instanceof i.Z){if(e.isAtEnd)return this.position=n.Z._createAfter(s),this._next();a=s.data[e.offset]}else a=s.getChild(e.offset);if(a instanceof o.Z)return this.shallow?e.offset++:e=new n.Z(a,0),this.position=e,this._formatReturnValue("elementStart",a,t,e,1);if(a instanceof i.Z){if(this.singleCharacters)return e=new n.Z(a,0),this.position=e,this._next();{let s,o=a.data.length;return a==this._boundaryEndParent?(o=this.boundaries.end.offset,s=new r.Z(a,0,o),e=n.Z._createAfter(s)):(s=new r.Z(a,0,a.data.length),e.offset++),this.position=e,this._formatReturnValue("text",s,t,e,o)}}if("string"==typeof a){let o;if(this.singleCharacters)o=1;else{o=(s===this._boundaryEndParent?this.boundaries.end.offset:s.data.length)-e.offset}const i=new r.Z(s,e.offset,o);return e.offset+=o,this.position=e,this._formatReturnValue("text",i,t,e,o)}return e=n.Z._createAfter(s),this.position=e,this.ignoreElementEnd?this._next():this._formatReturnValue("elementEnd",s,t,e)}_previous(){let e=this.position.clone();const t=this.position,s=e.parent;if(null===s.parent&&0===e.offset)return{done:!0};if(s==this._boundaryStartParent&&e.offset==this.boundaries.start.offset)return{done:!0};let a;if(s instanceof i.Z){if(e.isAtStart)return this.position=n.Z._createBefore(s),this._previous();a=s.data[e.offset-1]}else a=s.getChild(e.offset-1);if(a instanceof o.Z)return this.shallow?(e.offset--,this.position=e,this._formatReturnValue("elementStart",a,t,e,1)):(e=new n.Z(a,a.childCount),this.position=e,this.ignoreElementEnd?this._previous():this._formatReturnValue("elementEnd",a,t,e));if(a instanceof i.Z){if(this.singleCharacters)return e=new n.Z(a,a.data.length),this.position=e,this._previous();{let s,o=a.data.length;if(a==this._boundaryStartParent){const t=this.boundaries.start.offset;s=new r.Z(a,t,a.data.length-t),o=s.data.length,e=n.Z._createBefore(s)}else s=new r.Z(a,0,a.data.length),e.offset--;return this.position=e,this._formatReturnValue("text",s,t,e,o)}}if("string"==typeof a){let o;if(this.singleCharacters)o=1;else{const t=s===this._boundaryStartParent?this.boundaries.start.offset:0;o=e.offset-t}e.offset-=o;const i=new r.Z(s,e.offset,o);return this.position=e,this._formatReturnValue("text",i,t,e,o)}return e=n.Z._createBefore(s),this.position=e,this._formatReturnValue("elementStart",s,t,e,1)}_formatReturnValue(e,t,s,o,i){return t instanceof r.Z&&(t.offsetInText+t.data.length==t.textNode.data.length&&("forward"!=this.direction||this.boundaries&&this.boundaries.end.isEqual(this.position)?s=n.Z._createAfter(t.textNode):(o=n.Z._createAfter(t.textNode),this.position=o)),0===t.offsetInText&&("backward"!=this.direction||this.boundaries&&this.boundaries.start.isEqual(this.position)?s=n.Z._createBefore(t.textNode):(o=n.Z._createBefore(t.textNode),this.position=o))),{done:!1,value:{type:e,item:t,previousPosition:s,nextPosition:o,length:i}}}}},"./packages/ckeditor5-engine/src/view/uielement.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a,h:()=>c});var o=s("./packages/ckeditor5-engine/src/view/element.js"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-engine/src/view/node.js"),n=s("./packages/ckeditor5-utils/src/keyboard.ts");class a extends o.Z{constructor(e,t,s,o){super(e,t,s,o),this.getFillerOffset=l}is(e,t=null){return t?t===this.name&&("uiElement"===e||"view:uiElement"===e||"element"===e||"view:element"===e):"uiElement"===e||"view:uiElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}_insertChild(e,t){if(t&&(t instanceof r.Z||Array.from(t).length>0))throw new i.ZP("view-uielement-cannot-add",this)}render(e){return this.toDomElement(e)}toDomElement(e){const t=e.createElement(this.name);for(const e of this.getAttributeKeys())t.setAttribute(e,this.getAttribute(e));return t}}function c(e){e.document.on("arrowKey",((t,s)=>function(e,t,s){if(t.keyCode==n.Do.arrowright){const e=t.domTarget.ownerDocument.defaultView.getSelection(),o=1==e.rangeCount&&e.getRangeAt(0).collapsed;if(o||t.shiftKey){const t=e.focusNode,i=e.focusOffset,r=s.domPositionToView(t,i);if(null===r)return;let n=!1;const a=r.getLastMatchingPosition((e=>(e.item.is("uiElement")&&(n=!0),!(!e.item.is("uiElement")&&!e.item.is("attributeElement")))));if(n){const t=s.viewPositionToDom(a);o?e.collapse(t.parent,t.offset):e.extend(t.parent,t.offset)}}}}(0,s,e.domConverter)),{priority:"low"})}function l(){return null}},"./packages/ckeditor5-enter/src/enter.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-enter/src/utils.js");class n extends i.Z{execute(){const e=this.editor.model,t=e.document;e.change((s=>{!function(e,t,s,o){const i=s.isCollapsed,n=s.getFirstRange(),c=n.start.parent,l=n.end.parent;if(o.isLimit(c)||o.isLimit(l))return void(i||c!=l||e.deleteContent(s));if(i){const e=(0,r.G)(t.model.schema,s.getAttributes());a(t,n.start),t.setSelectionAttribute(e)}else{const o=!(n.start.isAtStart&&n.end.isAtEnd),i=c==l;e.deleteContent(s,{leaveUnmerged:o}),o&&(i?a(t,s.focus):t.setSelection(l,0))}}(this.editor.model,s,t.selection,e.schema),this.fire("afterExecute",{writer:s})}))}}function a(e,t){e.split(t),e.setSelection(t.parent.nextSibling,0)}var c=s("./packages/ckeditor5-enter/src/enterobserver.js");class l extends o.Z{static get pluginName(){return"Enter"}init(){const e=this.editor,t=e.editing.view,s=t.document;t.addObserver(c.Z),e.commands.add("enter",new n(e)),this.listenTo(s,"enter",((s,o)=>{o.preventDefault(),o.isSoft||(e.execute("enter"),t.scrollToTheSelection())}),{priority:"low"})}}},"./packages/ckeditor5-enter/src/enterobserver.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-engine/src/view/observer/observer.js"),i=s("./packages/ckeditor5-engine/src/view/observer/domeventdata.js"),r=s("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.js"),n=s("./packages/ckeditor5-utils/src/keyboard.ts");class a extends o.Z{constructor(e){super(e);const t=this.document;t.on("keydown",((e,s)=>{if(this.isEnabled&&s.keyCode==n.Do.enter){const o=new r.Z(t,"enter",t.selection.getFirstRange());t.fire(o,new i.Z(t,s.domEvent,{isSoft:s.shiftKey})),o.stop.called&&e.stop()}}))}observe(){}}},"./packages/ckeditor5-enter/src/utils.js":(e,t,s)=>{"use strict";function*o(e,t){for(const s of t)s&&e.getAttributeProperties(s[0]).copyOnEnter&&(yield s)}s.d(t,{G:()=>o})},"./packages/ckeditor5-typing/src/delete.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>m});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-utils/src/count.ts"),n=s("./packages/ckeditor5-typing/src/utils/changebuffer.js");class a extends i.Z{constructor(e,t){super(e),this.direction=t,this._buffer=new n.Z(e.model,e.config.get("typing.undoStep"))}get buffer(){return this._buffer}execute(e={}){const t=this.editor.model,s=t.document;t.enqueueChange(this._buffer.batch,(o=>{this._buffer.lock();const i=o.createSelection(e.selection||s.selection),n=e.sequence||1,a=i.isCollapsed;if(i.isCollapsed&&t.modifySelection(i,{direction:this.direction,unit:e.unit,treatEmojiAsSingleUnit:!0}),this._shouldEntireContentBeReplacedWithParagraph(n))return void this._replaceEntireContentWithParagraph(o);if(this._shouldReplaceFirstBlockWithParagraph(i,n))return void this.editor.execute("paragraph",{selection:i});if(i.isCollapsed)return;let c=0;i.getFirstRange().getMinimalFlatRanges().forEach((e=>{c+=(0,r.Z)(e.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))})),t.deleteContent(i,{doNotResetEntireContent:a,direction:this.direction}),this._buffer.input(c),o.setSelection(i),this._buffer.unlock()}))}_shouldEntireContentBeReplacedWithParagraph(e){if(e>1)return!1;const t=this.editor.model,s=t.document.selection,o=t.schema.getLimitElement(s);if(!(s.isCollapsed&&s.containsEntireContent(o)))return!1;if(!t.schema.checkChild(o,"paragraph"))return!1;const i=o.getChild(0);return!i||"paragraph"!==i.name}_replaceEntireContentWithParagraph(e){const t=this.editor.model,s=t.document.selection,o=t.schema.getLimitElement(s),i=e.createElement("paragraph");e.remove(e.createRangeIn(o)),e.insert(i,o),e.setSelection(i,0)}_shouldReplaceFirstBlockWithParagraph(e,t){const s=this.editor.model;if(t>1||"backward"!=this.direction)return!1;if(!e.isCollapsed)return!1;const o=e.getFirstPosition(),i=s.schema.getLimitElement(o),r=i.getChild(0);return o.parent==r&&(!!e.containsEntireContent(r)&&(!!s.schema.checkChild(i,"paragraph")&&"paragraph"!=r.name))}}var c=s("./packages/ckeditor5-engine/src/view/observer/observer.js"),l=s("./packages/ckeditor5-engine/src/view/observer/domeventdata.js"),d=s("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.js"),h=s("./packages/ckeditor5-utils/src/keyboard.ts"),u=s("./packages/ckeditor5-utils/src/env.ts"),p=s("./packages/ckeditor5-typing/src/utils/utils.js");class g extends c.Z{constructor(e){super(e);const t=e.document;let s=0;function o(e,s,o){const i=new d.Z(t,"delete",t.selection.getFirstRange());t.fire(i,new l.Z(t,s,o)),i.stop.called&&e.stop()}t.on("keyup",((e,t)=>{t.keyCode!=h.Do.delete&&t.keyCode!=h.Do.backspace||(s=0)})),t.on("keydown",((e,i)=>{if(u.ZP.isWindows&&(0,p.Uw)(i,t))return;const r={};if(i.keyCode==h.Do.delete)r.direction="forward",r.unit="character";else{if(i.keyCode!=h.Do.backspace)return;r.direction="backward",r.unit="codePoint"}const n=u.ZP.isMac?i.altKey:i.ctrlKey;r.unit=n?"word":r.unit,r.sequence=++s,o(e,i.domEvent,r)})),u.ZP.isAndroid&&t.on("beforeinput",((t,s)=>{if("deleteContentBackward"!=s.domEvent.inputType)return;const i={unit:"codepoint",direction:"backward",sequence:1},r=s.domTarget.ownerDocument.defaultView.getSelection();r.anchorNode==r.focusNode&&r.anchorOffset+1!=r.focusOffset&&(i.selectionToRemove=e.domConverter.domSelectionToView(r)),o(t,s.domEvent,i)}))}observe(){}}class m extends o.Z{static get pluginName(){return"Delete"}init(){const e=this.editor,t=e.editing.view,s=t.document,o=e.model.document;t.addObserver(g),this._undoOnBackspace=!1;const i=new a(e,"forward");if(e.commands.add("deleteForward",i),e.commands.add("forwardDelete",i),e.commands.add("delete",new a(e,"backward")),this.listenTo(s,"delete",((s,o)=>{const i={unit:o.unit,sequence:o.sequence};if(o.selectionToRemove){const t=e.model.createSelection(),s=[];for(const t of o.selectionToRemove.getRanges())s.push(e.editing.mapper.toModelRange(t));t.setTo(s),i.selection=t}e.execute("forward"==o.direction?"deleteForward":"delete",i),o.preventDefault(),t.scrollToTheSelection()}),{priority:"low"}),u.ZP.isAndroid){let e=null;this.listenTo(s,"delete",((t,s)=>{const o=s.domTarget.ownerDocument.defaultView.getSelection();e={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}}),{priority:"lowest"}),this.listenTo(s,"keyup",((t,s)=>{if(e){const t=s.domTarget.ownerDocument.defaultView.getSelection();t.collapse(e.anchorNode,e.anchorOffset),t.extend(e.focusNode,e.focusOffset),e=null}}))}this.editor.plugins.has("UndoEditing")&&(this.listenTo(s,"delete",((t,s)=>{this._undoOnBackspace&&"backward"==s.direction&&1==s.sequence&&"codePoint"==s.unit&&(this._undoOnBackspace=!1,e.execute("undo"),s.preventDefault(),t.stop())}),{context:"$capture"}),this.listenTo(o,"change",(()=>{this._undoOnBackspace=!1})))}requestUndoOnBackspace(){this.editor.plugins.has("UndoEditing")&&(this._undoOnBackspace=!0)}}},"./packages/ckeditor5-typing/src/utils/changebuffer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{constructor(e,t=20){this.model=e,this.size=0,this.limit=t,this.isLocked=!1,this._changeCallback=(e,t)=>{t.isLocal&&t.isUndoable&&t!==this._batch&&this._reset(!0)},this._selectionChangeCallback=()=>{this._reset()},this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch({isTyping:!0})),this._batch}input(e){this.size+=e,this.size>=this.limit&&this._reset(!0)}lock(){this.isLocked=!0}unlock(){this.isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(e){this.isLocked&&!e||(this._batch=null,this.size=0)}}},"./packages/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n,u:()=>c});var o=s("./packages/ckeditor5-utils/src/keyboard.ts"),i=s("./packages/ckeditor5-utils/src/env.ts"),r=s("./packages/ckeditor5-typing/src/utils/utils.js");function n(e){let t=null;const s=e.model,o=e.editing.view,n=e.commands.get("input");function a(e){if(i.ZP.isWindows&&(0,r.Uw)(e,o.document))return;const a=s.document,d=o.document.isComposing,h=t&&t.isEqual(a.selection);t=null,n.isEnabled&&(c(e)||a.selection.isCollapsed||d&&229===e.keyCode||!d&&229===e.keyCode&&h||l())}function l(){const e=n.buffer;e.lock();const t=e.batch;s.enqueueChange(t,(()=>{s.deleteContent(s.document.selection)})),e.unlock()}i.ZP.isAndroid?o.document.on("beforeinput",((e,t)=>a(t)),{priority:"lowest"}):o.document.on("keydown",((e,t)=>a(t)),{priority:"lowest"}),o.document.on("compositionstart",(function(){const e=s.document,t=1!==e.selection.rangeCount||e.selection.getFirstRange().isFlat;if(e.selection.isCollapsed||t)return;l()}),{priority:"lowest"}),o.document.on("compositionend",(()=>{t=s.createSelection(s.document.selection)}),{priority:"lowest"})}const a=[(0,o.Cq)("arrowUp"),(0,o.Cq)("arrowRight"),(0,o.Cq)("arrowDown"),(0,o.Cq)("arrowLeft"),9,16,17,18,19,20,27,33,34,35,36,45,91,93,144,145,173,174,175,176,177,178,179,255];for(let e=112;e<=135;e++)a.push(e);function c(e){return!(!e.ctrlKey&&!e.metaKey)||a.includes(e.keyCode)}},"./packages/ckeditor5-typing/src/utils/utils.js":(e,t,s)=>{"use strict";s.d(t,{E9:()=>r,xG:()=>n,Uw:()=>c});var o=s("./packages/ckeditor5-utils/src/diff.ts");var i=s("./packages/ckeditor5-utils/src/keyboard.ts");function r(e){if(0==e.length)return!1;for(const t of e)if("children"===t.type&&!n(t))return!0;return!1}function n(e){if(e.newChildren.length-e.oldChildren.length!=1)return;const t=function(e,t){const s=[];let o=0,i=null;return e.forEach((e=>{"equal"==e?(r(),o++):"insert"==e?(i&&"insert"==i.type?i.values.push(t[o]):(r(),i={type:"insert",index:o,values:[t[o]]}),o++):i&&"delete"==i.type?i.howMany++:(r(),i={type:"delete",index:o,howMany:1})})),r(),s;function r(){i&&(s.push(i),i=null)}}((0,o.Z)(e.oldChildren,e.newChildren,a),e.newChildren);if(t.length>1)return;const s=t[0];return s.values[0]&&s.values[0].is("$text")?s:void 0}function a(e,t){return e&&e.is("$text")&&t&&t.is("$text")?e.data===t.data:e===t}function c(e,t){const s=t.selection,o=e.shiftKey&&e.keyCode===i.Do.delete,r=!s.isCollapsed;return o&&r}},"./packages/ckeditor5-ui/src/bindings/clickoutsidehandler.js":(e,t,s)=>{"use strict";function o({emitter:e,activator:t,callback:s,contextElements:o}){e.listenTo(document,"mousedown",((e,i)=>{if(!t())return;const r="function"==typeof i.composedPath?i.composedPath():[];for(const e of o)if(e.contains(i.target)||r.includes(e))return;s()}))}s.d(t,{Z:()=>o})},"./packages/ckeditor5-ui/src/button/buttonview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>p});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-ui/src/icon/iconview.js"),r=s("./packages/ckeditor5-ui/src/tooltip/tooltipview.js"),n=s("./packages/ckeditor5-utils/src/uid.ts"),a=s("./packages/ckeditor5-utils/src/keyboard.ts"),c=s("./packages/ckeditor5-utils/src/env.ts"),l=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),d=s.n(l),h=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/button/button.css"),u={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};d()(h.Z,u);h.Z.locals;class p extends o.Z{constructor(e){super(e);const t=this.bindTemplate,s=(0,n.Z)();this.set("class"),this.set("labelStyle"),this.set("icon"),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isVisible",!0),this.set("isToggleable",!1),this.set("keystroke"),this.set("label"),this.set("tabindex",-1),this.set("tooltip"),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.set("withKeystroke",!1),this.children=this.createCollection(),this.tooltipView=this._createTooltipView(),this.labelView=this._createLabelView(s),this.iconView=new i.Z,this.iconView.extendTemplate({attributes:{class:"ck-button__icon"}}),this.keystrokeView=this._createKeystrokeView(),this.bind("_tooltipString").to(this,"tooltip",this,"label",this,"keystroke",this._getTooltipString.bind(this));const o={tag:"button",attributes:{class:["ck","ck-button",t.to("class"),t.if("isEnabled","ck-disabled",(e=>!e)),t.if("isVisible","ck-hidden",(e=>!e)),t.to("isOn",(e=>e?"ck-on":"ck-off")),t.if("withText","ck-button_with-text"),t.if("withKeystroke","ck-button_with-keystroke")],type:t.to("type",(e=>e||"button")),tabindex:t.to("tabindex"),"aria-labelledby":`ck-editor__aria-label_${s}`,"aria-disabled":t.if("isEnabled",!0,(e=>!e)),"aria-pressed":t.to("isOn",(e=>!!this.isToggleable&&String(!!e)))},children:this.children,on:{click:t.to((e=>{this.isEnabled?this.fire("execute"):e.preventDefault()}))}};c.ZP.isSafari&&(o.on.mousedown=t.to((e=>{this.focus(),e.preventDefault()}))),this.setTemplate(o)}render(){super.render(),this.icon&&(this.iconView.bind("content").to(this,"icon"),this.children.add(this.iconView)),this.children.add(this.tooltipView),this.children.add(this.labelView),this.withKeystroke&&this.keystroke&&this.children.add(this.keystrokeView)}focus(){this.element.focus()}_createTooltipView(){const e=new r.Z;return e.bind("text").to(this,"_tooltipString"),e.bind("position").to(this,"tooltipPosition"),e}_createLabelView(e){const t=new o.Z,s=this.bindTemplate;return t.setTemplate({tag:"span",attributes:{class:["ck","ck-button__label"],style:s.to("labelStyle"),id:`ck-editor__aria-label_${e}`},children:[{text:this.bindTemplate.to("label")}]}),t}_createKeystrokeView(){const e=new o.Z;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__keystroke"]},children:[{text:this.bindTemplate.to("keystroke",(e=>(0,a.XU)(e)))}]}),e}_getTooltipString(e,t,s){return e?"string"==typeof e?e:(s&&(s=(0,a.XU)(s)),e instanceof Function?e(t,s):`${t}${s?` (${s})`:""}`):""}}},"./packages/ckeditor5-ui/src/button/switchbuttonview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-ui/src/button/buttonview.js"),r=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),n=s.n(r),a=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/button/switchbutton.css"),c={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n()(a.Z,c);a.Z.locals;class l extends i.Z{constructor(e){super(e),this.isToggleable=!0,this.toggleSwitchView=this._createToggleView(),this.extendTemplate({attributes:{class:"ck-switchbutton"}})}render(){super.render(),this.children.add(this.toggleSwitchView)}_createToggleView(){const e=new o.Z;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__toggle"]},children:[{tag:"span",attributes:{class:["ck","ck-button__toggle__inner"]}}]}),e}}},"./packages/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-ui/src/button/buttonview.js"),i=s("./packages/ckeditor5-ui/theme/icons/dropdown-arrow.svg"),r=s("./packages/ckeditor5-ui/src/icon/iconview.js");class n extends o.Z{constructor(e){super(e),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{"aria-haspopup":!0}}),this.delegate("execute").to(this,"open")}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new r.Z;return e.content=i.Z,e.extendTemplate({attributes:{class:"ck-dropdown__arrow"}}),e}}},"./packages/ckeditor5-ui/src/dropdown/utils.js":(e,t,s)=>{"use strict";s.d(t,{Pm:()=>j,up:()=>A,t9:()=>x,Mh:()=>T});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("isVisible",!1),this.set("position","se"),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-dropdown__panel",t.to("position",(e=>`ck-dropdown__panel_${e}`)),t.if("isVisible","ck-dropdown__panel-visible")]},children:this.children,on:{selectstart:t.to((e=>e.preventDefault()))}})}focus(){this.children.length&&("function"==typeof this.children.first.focus?this.children.first.focus():(0,i.KE)("ui-dropdown-panel-focus-child-missing-focus",{childView:this.children.first,dropdownPanel:this}))}focusLast(){if(this.children.length){const e=this.children.last;"function"==typeof e.focusLast?e.focusLast():e.focus()}}}var n=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),a=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),c=s.n(a),l=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/dropdown.css"),d={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(l.Z,d);l.Z.locals;var h=s("./packages/ckeditor5-utils/src/dom/position.ts");class u extends o.Z{constructor(e,t,s){super(e);const o=this.bindTemplate;this.buttonView=t,this.panelView=s,this.set("isOpen",!1),this.set("isEnabled",!0),this.set("class"),this.set("id"),this.set("panelPosition","auto"),this.keystrokes=new n.Z,this.setTemplate({tag:"div",attributes:{class:["ck","ck-dropdown",o.to("class"),o.if("isEnabled","ck-disabled",(e=>!e))],id:o.to("id"),"aria-describedby":o.to("ariaDescribedById")},children:[t,s]}),t.extendTemplate({attributes:{class:["ck-dropdown__button"]}})}render(){super.render(),this.listenTo(this.buttonView,"open",(()=>{this.isOpen=!this.isOpen})),this.panelView.bind("isVisible").to(this,"isOpen"),this.on("change:isOpen",(()=>{this.isOpen?("auto"===this.panelPosition?this.panelView.position=u._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions}).name:this.panelView.position=this.panelPosition,this.panelView.focus()):this.focus()})),this.keystrokes.listenTo(this.element);const e=(e,t)=>{this.isOpen&&(this.isOpen=!1,t())};this.keystrokes.set("arrowdown",((e,t)=>{this.buttonView.isEnabled&&!this.isOpen&&(this.isOpen=!0,t())})),this.keystrokes.set("arrowright",((e,t)=>{this.isOpen&&t()})),this.keystrokes.set("arrowleft",e),this.keystrokes.set("esc",e)}focus(){this.buttonView.focus()}get _panelPositions(){const{south:e,north:t,southEast:s,southWest:o,northEast:i,northWest:r,southMiddleEast:n,southMiddleWest:a,northMiddleEast:c,northMiddleWest:l}=u.defaultPanelPositions;return"rtl"!==this.locale.uiLanguageDirection?[s,o,n,a,e,i,r,c,l,t]:[o,s,a,n,e,r,i,l,c,t]}}u.defaultPanelPositions={south:(e,t)=>({top:e.bottom,left:e.left-(t.width-e.width)/2,name:"s"}),southEast:e=>({top:e.bottom,left:e.left,name:"se"}),southWest:(e,t)=>({top:e.bottom,left:e.left-t.width+e.width,name:"sw"}),southMiddleEast:(e,t)=>({top:e.bottom,left:e.left-(t.width-e.width)/4,name:"sme"}),southMiddleWest:(e,t)=>({top:e.bottom,left:e.left-3*(t.width-e.width)/4,name:"smw"}),north:(e,t)=>({top:e.top-t.height,left:e.left-(t.width-e.width)/2,name:"n"}),northEast:(e,t)=>({top:e.top-t.height,left:e.left,name:"ne"}),northWest:(e,t)=>({top:e.top-t.height,left:e.left-t.width+e.width,name:"nw"}),northMiddleEast:(e,t)=>({top:e.top-t.height,left:e.left-(t.width-e.width)/4,name:"nme"}),northMiddleWest:(e,t)=>({top:e.top-t.height,left:e.left-3*(t.width-e.width)/4,name:"nmw"})},u._getOptimalPosition=h.x;var p=s("./packages/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js"),g=s("./packages/ckeditor5-ui/src/toolbar/toolbarview.js"),m=s("./packages/ckeditor5-ui/src/list/listview.js"),f=s("./packages/ckeditor5-ui/src/list/listitemview.js");class k extends o.Z{constructor(e){super(e),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__separator"]}})}}var _=s("./packages/ckeditor5-ui/src/button/buttonview.js"),b=s("./packages/ckeditor5-ui/src/button/switchbuttonview.js"),w=s("./packages/ckeditor5-ui/src/bindings/clickoutsidehandler.js"),v=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css"),y={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(v.Z,y);v.Z.locals;var Z=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/listdropdown.css"),P={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(Z.Z,P);Z.Z.locals;function x(e,t=p.Z){const s=new t(e),o=new r(e),i=new u(e,s,o);return s.bind("isEnabled").to(i),s instanceof p.Z?s.bind("isOn").to(i,"isOpen"):s.arrowView.bind("isOn").to(i,"isOpen"),function(e){(function(e){e.on("render",(()=>{(0,w.Z)({emitter:e,activator:()=>e.isOpen,callback:()=>{e.isOpen=!1},contextElements:[e.element]})}))})(e),function(e){e.on("execute",(t=>{t.source instanceof b.Z||(e.isOpen=!1)}))}(e),function(e){e.keystrokes.set("arrowdown",((t,s)=>{e.isOpen&&(e.panelView.focus(),s())})),e.keystrokes.set("arrowup",((t,s)=>{e.isOpen&&(e.panelView.focusLast(),s())}))}(e)}(i),i}function A(e,t,s={}){const o=e.locale,i=o.t,r=e.toolbarView=new g.Z(o);r.set("ariaLabel",i("Dropdown toolbar")),e.extendTemplate({attributes:{class:["ck-toolbar-dropdown"]}}),t.map((e=>r.items.add(e))),s.enableActiveItemFocusOnDropdownOpen&&T(e,(()=>r.items.find((e=>e.isOn)))),e.panelView.children.add(r),r.items.delegate("execute").to(e)}function j(e,t){const s=e.locale,o=e.listView=new m.Z(s);o.items.bindTo(t).using((({type:e,model:t})=>{if("separator"===e)return new k(s);if("button"===e||"switchbutton"===e){const o=new f.Z(s);let i;return i="button"===e?new _.Z(s):new b.Z(s),i.bind(...Object.keys(t)).to(t),i.delegate("execute").to(o),o.children.add(i),o}})),e.panelView.children.add(o),o.items.delegate("execute").to(e),T(e,(()=>o.items.find((e=>e instanceof f.Z&&e.children.first.isOn))))}function T(e,t){e.on("change:isOpen",(()=>{if(!e.isOpen)return;const s=t();s&&("function"==typeof s.focus?s.focus():(0,i.KE)("ui-dropdown-focus-child-on-open-child-missing-focus",{view:s}))}),{priority:"low"})}},"./packages/ckeditor5-ui/src/focuscycler.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/dom/isvisible.ts");class i{constructor(e){if(Object.assign(this,e),e.actions&&e.keystrokeHandler)for(const t in e.actions){let s=e.actions[t];"string"==typeof s&&(s=[s]);for(const o of s)e.keystrokeHandler.set(o,((e,s)=>{this[t](),s()}))}}get first(){return this.focusables.find(r)||null}get last(){return this.focusables.filter(r).slice(-1)[0]||null}get next(){return this._getFocusableItem(1)}get previous(){return this._getFocusableItem(-1)}get current(){let e=null;return null===this.focusTracker.focusedElement?null:(this.focusables.find(((t,s)=>{const o=t.element===this.focusTracker.focusedElement;return o&&(e=s),o})),e)}focusFirst(){this._focus(this.first)}focusLast(){this._focus(this.last)}focusNext(){this._focus(this.next)}focusPrevious(){this._focus(this.previous)}_focus(e){e&&e.focus()}_getFocusableItem(e){const t=this.current,s=this.focusables.length;if(!s)return null;if(null===t)return this[1===e?"first":"last"];let o=(t+s+e)%s;do{const t=this.focusables.get(o);if(r(t))return t;o=(o+s+e)%s}while(o!==t);return null}}function r(e){return!(!e.focus||!(0,o.Z)(e.element))}},"./packages/ckeditor5-ui/src/icon/iconview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),r=s.n(i),n=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/icon/icon.css"),a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};r()(n.Z,a);n.Z.locals;class c extends o.Z{constructor(){super();const e=this.bindTemplate;this.set("content",""),this.set("viewBox","0 0 20 20"),this.set("fillColor",""),this.setTemplate({tag:"svg",ns:"http://www.w3.org/2000/svg",attributes:{class:["ck","ck-icon"],viewBox:e.to("viewBox")}})}render(){super.render(),this._updateXMLContent(),this._colorFillPaths(),this.on("change:content",(()=>{this._updateXMLContent(),this._colorFillPaths()})),this.on("change:fillColor",(()=>{this._colorFillPaths()}))}_updateXMLContent(){if(this.content){const e=(new DOMParser).parseFromString(this.content.trim(),"image/svg+xml").querySelector("svg"),t=e.getAttribute("viewBox");for(t&&(this.viewBox=t),this.element.innerHTML="";e.childNodes.length>0;)this.element.appendChild(e.childNodes[0])}}_colorFillPaths(){this.fillColor&&this.element.querySelectorAll(".ck-icon__fill").forEach((e=>{e.style.fill=this.fillColor}))}}},"./packages/ckeditor5-ui/src/list/listitemview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-ui/src/view.js");class i extends o.Z{constructor(e){super(e),this.children=this.createCollection(),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__item"]},children:this.children})}focus(){this.children.first.focus()}}},"./packages/ckeditor5-ui/src/list/listview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-utils/src/focustracker.ts"),r=s("./packages/ckeditor5-ui/src/focuscycler.js"),n=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),a=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),c=s.n(a),l=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/list/list.css"),d={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(l.Z,d);l.Z.locals;class h extends o.Z{constructor(){super(),this.items=this.createCollection(),this.focusTracker=new i.Z,this.keystrokes=new n.Z,this._focusCycler=new r.Z({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"arrowup",focusNext:"arrowdown"}}),this.setTemplate({tag:"ul",attributes:{class:["ck","ck-reset","ck-list"]},children:this.items})}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",((e,t)=>{this.focusTracker.add(t.element)})),this.items.on("remove",((e,t)=>{this.focusTracker.remove(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}}},"./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>m,M:()=>k});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-utils/src/dom/position.ts"),r=s("./packages/ckeditor5-utils/src/dom/isrange.ts"),n=s("./packages/ckeditor5-utils/src/dom/tounit.ts"),a=s("./packages/ckeditor5-utils/src/dom/global.ts"),c=s("./node_modules/lodash-es/isElement.js"),l=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),d=s.n(l),h=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/balloonpanel.css"),u={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};d()(h.Z,u);h.Z.locals;const p=(0,n.Z)("px"),g=a.Z.document.body;class m extends o.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("position","arrow_nw"),this.set("isVisible",!1),this.set("withArrow",!0),this.set("class"),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-panel",t.to("position",(e=>`ck-balloon-panel_${e}`)),t.if("isVisible","ck-balloon-panel_visible"),t.if("withArrow","ck-balloon-panel_with-arrow"),t.to("class")],style:{top:t.to("top",p),left:t.to("left",p)}},children:this.content})}show(){this.isVisible=!0}hide(){this.isVisible=!1}attachTo(e){this.show();const t=m.defaultPositions,s=Object.assign({},{element:this.element,positions:[t.southArrowNorth,t.southArrowNorthMiddleWest,t.southArrowNorthMiddleEast,t.southArrowNorthWest,t.southArrowNorthEast,t.northArrowSouth,t.northArrowSouthMiddleWest,t.northArrowSouthMiddleEast,t.northArrowSouthWest,t.northArrowSouthEast,t.viewportStickyNorth],limiter:g,fitInViewport:!0},e),o=m._getOptimalPosition(s),i=parseInt(o.left),r=parseInt(o.top),{name:n,config:a={}}=o,{withArrow:c=!0}=a;Object.assign(this,{top:r,left:i,position:n,withArrow:c})}pin(e){this.unpin(),this._pinWhenIsVisibleCallback=()=>{this.isVisible?this._startPinning(e):this._stopPinning()},this._startPinning(e),this.listenTo(this,"change:isVisible",this._pinWhenIsVisibleCallback)}unpin(){this._pinWhenIsVisibleCallback&&(this._stopPinning(),this.stopListening(this,"change:isVisible",this._pinWhenIsVisibleCallback),this._pinWhenIsVisibleCallback=null,this.hide())}_startPinning(e){this.attachTo(e);const t=f(e.target),s=e.limiter?f(e.limiter):g;this.listenTo(a.Z.document,"scroll",((o,i)=>{const r=i.target,n=t&&r.contains(t),a=s&&r.contains(s);!n&&!a&&t&&s||this.attachTo(e)}),{useCapture:!0}),this.listenTo(a.Z.window,"resize",(()=>{this.attachTo(e)}))}_stopPinning(){this.stopListening(a.Z.document,"scroll"),this.stopListening(a.Z.window,"resize")}}function f(e){return(0,c.Z)(e)?e:(0,r.Z)(e)?e.commonAncestorContainer:"function"==typeof e?f(e()):null}function k({horizontalOffset:e=m.arrowHorizontalOffset,verticalOffset:t=m.arrowVerticalOffset,stickyVerticalOffset:s=m.stickyVerticalOffset,config:o}={}){return{northWestArrowSouthWest:(t,s)=>({top:i(t,s),left:t.left-e,name:"arrow_sw",...o&&{config:o}}),northWestArrowSouthMiddleWest:(t,s)=>({top:i(t,s),left:t.left-.25*s.width-e,name:"arrow_smw",...o&&{config:o}}),northWestArrowSouth:(e,t)=>({top:i(e,t),left:e.left-t.width/2,name:"arrow_s",...o&&{config:o}}),northWestArrowSouthMiddleEast:(t,s)=>({top:i(t,s),left:t.left-.75*s.width+e,name:"arrow_sme",...o&&{config:o}}),northWestArrowSouthEast:(t,s)=>({top:i(t,s),left:t.left-s.width+e,name:"arrow_se",...o&&{config:o}}),northArrowSouthWest:(t,s)=>({top:i(t,s),left:t.left+t.width/2-e,name:"arrow_sw",...o&&{config:o}}),northArrowSouthMiddleWest:(t,s)=>({top:i(t,s),left:t.left+t.width/2-.25*s.width-e,name:"arrow_smw",...o&&{config:o}}),northArrowSouth:(e,t)=>({top:i(e,t),left:e.left+e.width/2-t.width/2,name:"arrow_s",...o&&{config:o}}),northArrowSouthMiddleEast:(t,s)=>({top:i(t,s),left:t.left+t.width/2-.75*s.width+e,name:"arrow_sme",...o&&{config:o}}),northArrowSouthEast:(t,s)=>({top:i(t,s),left:t.left+t.width/2-s.width+e,name:"arrow_se",...o&&{config:o}}),northEastArrowSouthWest:(t,s)=>({top:i(t,s),left:t.right-e,name:"arrow_sw",...o&&{config:o}}),northEastArrowSouthMiddleWest:(t,s)=>({top:i(t,s),left:t.right-.25*s.width-e,name:"arrow_smw",...o&&{config:o}}),northEastArrowSouth:(e,t)=>({top:i(e,t),left:e.right-t.width/2,name:"arrow_s",...o&&{config:o}}),northEastArrowSouthMiddleEast:(t,s)=>({top:i(t,s),left:t.right-.75*s.width+e,name:"arrow_sme",...o&&{config:o}}),northEastArrowSouthEast:(t,s)=>({top:i(t,s),left:t.right-s.width+e,name:"arrow_se",...o&&{config:o}}),southWestArrowNorthWest:(t,s)=>({top:r(t),left:t.left-e,name:"arrow_nw",...o&&{config:o}}),southWestArrowNorthMiddleWest:(t,s)=>({top:r(t),left:t.left-.25*s.width-e,name:"arrow_nmw",...o&&{config:o}}),southWestArrowNorth:(e,t)=>({top:r(e),left:e.left-t.width/2,name:"arrow_n",...o&&{config:o}}),southWestArrowNorthMiddleEast:(t,s)=>({top:r(t),left:t.left-.75*s.width+e,name:"arrow_nme",...o&&{config:o}}),southWestArrowNorthEast:(t,s)=>({top:r(t),left:t.left-s.width+e,name:"arrow_ne",...o&&{config:o}}),southArrowNorthWest:(t,s)=>({top:r(t),left:t.left+t.width/2-e,name:"arrow_nw",...o&&{config:o}}),southArrowNorthMiddleWest:(t,s)=>({top:r(t),left:t.left+t.width/2-.25*s.width-e,name:"arrow_nmw",...o&&{config:o}}),southArrowNorth:(e,t)=>({top:r(e),left:e.left+e.width/2-t.width/2,name:"arrow_n",...o&&{config:o}}),southArrowNorthMiddleEast:(t,s)=>({top:r(t),left:t.left+t.width/2-.75*s.width+e,name:"arrow_nme",...o&&{config:o}}),southArrowNorthEast:(t,s)=>({top:r(t),left:t.left+t.width/2-s.width+e,name:"arrow_ne",...o&&{config:o}}),southEastArrowNorthWest:(t,s)=>({top:r(t),left:t.right-e,name:"arrow_nw",...o&&{config:o}}),southEastArrowNorthMiddleWest:(t,s)=>({top:r(t),left:t.right-.25*s.width-e,name:"arrow_nmw",...o&&{config:o}}),southEastArrowNorth:(e,t)=>({top:r(e),left:e.right-t.width/2,name:"arrow_n",...o&&{config:o}}),southEastArrowNorthMiddleEast:(t,s)=>({top:r(t),left:t.right-.75*s.width+e,name:"arrow_nme",...o&&{config:o}}),southEastArrowNorthEast:(t,s)=>({top:r(t),left:t.right-s.width+e,name:"arrow_ne",...o&&{config:o}}),viewportStickyNorth:(e,t,i)=>e.getIntersection(i)?{top:i.top+s,left:e.left+e.width/2-t.width/2,name:"arrowless",config:{withArrow:!1,...o}}:null};function i(e,s){return e.top-s.height-t}function r(e){return e.bottom+t}}m.arrowHorizontalOffset=25,m.arrowVerticalOffset=10,m.stickyVerticalOffset=20,m._getOptimalPosition=i.x,m.defaultPositions=k()},"./packages/ckeditor5-ui/src/panel/balloon/contextualballoon.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>_});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),r=s("./packages/ckeditor5-ui/src/view.js"),n=s("./packages/ckeditor5-ui/src/button/buttonview.js"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),c=s("./packages/ckeditor5-utils/src/focustracker.ts"),l=s("./packages/ckeditor5-utils/src/dom/tounit.ts"),d=s("./packages/ckeditor5-utils/src/dom/rect.ts");var h=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),u=s.n(h),p=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/balloonrotator.css"),g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};u()(p.Z,g);p.Z.locals;var m=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/fakepanel.css"),f={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};u()(m.Z,f);m.Z.locals;const k=(0,l.Z)("px");class _ extends o.Z{static get pluginName(){return"ContextualBalloon"}constructor(e){super(e),this.positionLimiter=()=>{const e=this.editor.editing.view,t=e.document.selection.editableElement;return t?e.domConverter.mapViewToDom(t.root):null},this.set("visibleView",null),this.view=new i.Z(e.locale),e.ui.view.body.add(this.view),e.ui.focusTracker.add(this.view.element),this._viewToStack=new Map,this._idToStack=new Map,this.set("_numberOfStacks",0),this.set("_singleViewMode",!1),this._rotatorView=this._createRotatorView(),this._fakePanelsView=this._createFakePanelsView()}destroy(){super.destroy(),this.view.destroy(),this._rotatorView.destroy(),this._fakePanelsView.destroy()}hasView(e){return Array.from(this._viewToStack.keys()).includes(e)}add(e){if(this.hasView(e.view))throw new a.ZP("contextualballoon-add-view-exist",[this,e]);const t=e.stackId||"main";if(!this._idToStack.has(t))return this._idToStack.set(t,new Map([[e.view,e]])),this._viewToStack.set(e.view,this._idToStack.get(t)),this._numberOfStacks=this._idToStack.size,void(this._visibleStack&&!e.singleViewMode||this.showStack(t));const s=this._idToStack.get(t);e.singleViewMode&&this.showStack(t),s.set(e.view,e),this._viewToStack.set(e.view,s),s===this._visibleStack&&this._showView(e)}remove(e){if(!this.hasView(e))throw new a.ZP("contextualballoon-remove-view-not-exist",[this,e]);const t=this._viewToStack.get(e);this._singleViewMode&&this.visibleView===e&&(this._singleViewMode=!1),this.visibleView===e&&(1===t.size?this._idToStack.size>1?this._showNextStack():(this.view.hide(),this.visibleView=null,this._rotatorView.hideView()):this._showView(Array.from(t.values())[t.size-2])),1===t.size?(this._idToStack.delete(this._getStackId(t)),this._numberOfStacks=this._idToStack.size):t.delete(e),this._viewToStack.delete(e)}updatePosition(e){e&&(this._visibleStack.get(this.visibleView).position=e),this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition()}showStack(e){this.visibleStack=e;const t=this._idToStack.get(e);if(!t)throw new a.ZP("contextualballoon-showstack-stack-not-exist",this);this._visibleStack!==t&&this._showView(Array.from(t.values()).pop())}get _visibleStack(){return this._viewToStack.get(this.visibleView)}_getStackId(e){return Array.from(this._idToStack.entries()).find((t=>t[1]===e))[0]}_showNextStack(){const e=Array.from(this._idToStack.values());let t=e.indexOf(this._visibleStack)+1;e[t]||(t=0),this.showStack(this._getStackId(e[t]))}_showPrevStack(){const e=Array.from(this._idToStack.values());let t=e.indexOf(this._visibleStack)-1;e[t]||(t=e.length-1),this.showStack(this._getStackId(e[t]))}_createRotatorView(){const e=new b(this.editor.locale),t=this.editor.locale.t;return this.view.content.add(e),e.bind("isNavigationVisible").to(this,"_numberOfStacks",this,"_singleViewMode",((e,t)=>!t&&e>1)),e.on("change:isNavigationVisible",(()=>this.updatePosition()),{priority:"low"}),e.bind("counter").to(this,"visibleView",this,"_numberOfStacks",((e,s)=>{if(s<2)return"";const o=Array.from(this._idToStack.values()).indexOf(this._visibleStack)+1;return t("%0 of %1",[o,s])})),e.buttonNextView.on("execute",(()=>{e.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showNextStack()})),e.buttonPrevView.on("execute",(()=>{e.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showPrevStack()})),e}_createFakePanelsView(){const e=new w(this.editor.locale,this.view);return e.bind("numberOfPanels").to(this,"_numberOfStacks",this,"_singleViewMode",((e,t)=>!t&&e>=2?Math.min(e-1,2):0)),e.listenTo(this.view,"change:top",(()=>e.updatePosition())),e.listenTo(this.view,"change:left",(()=>e.updatePosition())),this.editor.ui.view.body.add(e),e}_showView({view:e,balloonClassName:t="",withArrow:s=!0,singleViewMode:o=!1}){this.view.class=t,this.view.withArrow=s,this._rotatorView.showView(e),this.visibleView=e,this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition(),o&&(this._singleViewMode=!0)}_getBalloonPosition(){let e=Array.from(this._visibleStack.values()).pop().position;return e&&(e.limiter||(e=Object.assign({},e,{limiter:this.positionLimiter})),e=Object.assign({},e,{viewportOffsetConfig:this.editor.ui.viewportOffset})),e}}class b extends r.Z{constructor(e){super(e);const t=e.t,s=this.bindTemplate;this.set("isNavigationVisible",!0),this.focusTracker=new c.Z,this.buttonPrevView=this._createButtonView(t("Previous"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M11.463 5.187a.888.888 0 1 1 1.254 1.255L9.16 10l3.557 3.557a.888.888 0 1 1-1.254 1.255L7.26 10.61a.888.888 0 0 1 .16-1.382l4.043-4.042z"/></svg>'),this.buttonNextView=this._createButtonView(t("Next"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M8.537 14.813a.888.888 0 1 1-1.254-1.255L10.84 10 7.283 6.442a.888.888 0 1 1 1.254-1.255L12.74 9.39a.888.888 0 0 1-.16 1.382l-4.043 4.042z"/></svg>'),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-rotator"],"z-index":"-1"},children:[{tag:"div",attributes:{class:["ck-balloon-rotator__navigation",s.to("isNavigationVisible",(e=>e?"":"ck-hidden"))]},children:[this.buttonPrevView,{tag:"span",attributes:{class:["ck-balloon-rotator__counter"]},children:[{text:s.to("counter")}]},this.buttonNextView]},{tag:"div",attributes:{class:"ck-balloon-rotator__content"},children:this.content}]})}render(){super.render(),this.focusTracker.add(this.element)}destroy(){super.destroy(),this.focusTracker.destroy()}showView(e){this.hideView(),this.content.add(e)}hideView(){this.content.clear()}_createButtonView(e,t){const s=new n.Z(this.locale);return s.set({label:e,icon:t,tooltip:!0}),s}}class w extends r.Z{constructor(e,t){super(e);const s=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("height",0),this.set("width",0),this.set("numberOfPanels",0),this.content=this.createCollection(),this._balloonPanelView=t,this.setTemplate({tag:"div",attributes:{class:["ck-fake-panel",s.to("numberOfPanels",(e=>e?"":"ck-hidden"))],style:{top:s.to("top",k),left:s.to("left",k),width:s.to("width",k),height:s.to("height",k)}},children:this.content}),this.on("change:numberOfPanels",((e,t,s,o)=>{s>o?this._addPanels(s-o):this._removePanels(o-s),this.updatePosition()}))}_addPanels(e){for(;e--;){const e=new r.Z;e.setTemplate({tag:"div"}),this.content.add(e),this.registerChild(e)}}_removePanels(e){for(;e--;){const e=this.content.last;this.content.remove(e),this.deregisterChild(e),e.destroy()}}updatePosition(){if(this.numberOfPanels){const{top:e,left:t}=this._balloonPanelView,{width:s,height:o}=new d.Z(this._balloonPanelView.element);Object.assign(this,{top:e,left:t,width:s,height:o})}}}},"./packages/ckeditor5-ui/src/template.js":(e,t,s)=>{"use strict";s.d(t,{ZP:()=>u});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts"),r=s("./packages/ckeditor5-utils/src/emittermixin.ts"),n=s("./packages/ckeditor5-ui/src/view.js"),a=s("./packages/ckeditor5-ui/src/viewcollection.js"),c=s("./packages/ckeditor5-utils/src/dom/isnode.ts"),l=s("./node_modules/lodash-es/isObject.js"),d=s("./node_modules/lodash-es/cloneDeepWith.js"),h=s("./packages/ckeditor5-utils/src/toarray.ts");class u{constructor(e){Object.assign(this,y(v(e))),this._isRendered=!1,this._revertData=null}render(){const e=this._renderNode({intoFragment:!0});return this._isRendered=!0,e}apply(e){return this._revertData={children:[],bindings:[],attributes:{}},this._renderNode({node:e,isApplying:!0,revertData:this._revertData}),e}revert(e){if(!this._revertData)throw new o.ZP("ui-template-revert-not-applied",[this,e]);this._revertTemplateFromNode(e,this._revertData)}*getViews(){yield*function*e(t){if(t.children)for(const s of t.children)T(s)?yield s:C(s)&&(yield*e(s))}(this)}static bind(e,t){return{to:(s,o)=>new g({eventNameOrFunction:s,attribute:s,observable:e,emitter:t,callback:o}),if:(s,o,i)=>new m({observable:e,emitter:t,attribute:s,valueIfTrue:o,callback:i})}}static extend(e,t){if(e._isRendered)throw new o.ZP("template-extend-render",[this,e]);A(e,y(v(t)))}_renderNode(e){let t;if(t=e.node?this.tag&&this.text:this.tag?this.text:!this.text,t)throw new o.ZP("ui-template-wrong-syntax",this);return this.text?this._renderText(e):this._renderElement(e)}_renderElement(e){let t=e.node;return t||(t=e.node=document.createElementNS(this.ns||"http://www.w3.org/1999/xhtml",this.tag)),this._renderAttributes(e),this._renderElementChildren(e),this._setUpListeners(e),t}_renderText(e){let t=e.node;return t?e.revertData.text=t.textContent:t=e.node=document.createTextNode(""),f(this.text)?this._bindToObservable({schema:this.text,updater:_(t),data:e}):t.textContent=this.text.join(""),t}_renderAttributes(e){let t,s,o,i;if(!this.attributes)return;const r=e.node,n=e.revertData;for(t in this.attributes)if(o=r.getAttribute(t),s=this.attributes[t],n&&(n.attributes[t]=o),i=(0,l.Z)(s[0])&&s[0].ns?s[0].ns:null,f(s)){const a=i?s[0].value:s;n&&S(t)&&a.unshift(o),this._bindToObservable({schema:a,updater:b(r,t,i),data:e})}else"style"==t&&"string"!=typeof s[0]?this._renderStyleAttribute(s[0],e):(n&&o&&S(t)&&s.unshift(o),s=s.map((e=>e&&e.value||e)).reduce(((e,t)=>e.concat(t)),[]).reduce(P,""),j(s)||r.setAttributeNS(i,t,s))}_renderStyleAttribute(e,t){const s=t.node;for(const o in e){const i=e[o];f(i)?this._bindToObservable({schema:[i],updater:w(s,o),data:t}):s.style[o]=i}}_renderElementChildren(e){const t=e.node,s=e.intoFragment?document.createDocumentFragment():t,o=e.isApplying;let i=0;for(const r of this.children)if(E(r)){if(!o){r.setParent(t);for(const e of r)s.appendChild(e.element)}}else if(T(r))o||(r.isRendered||r.render(),s.appendChild(r.element));else if((0,c.Z)(r))s.appendChild(r);else if(o){const t={children:[],bindings:[],attributes:{}};e.revertData.children.push(t),r._renderNode({node:s.childNodes[i++],isApplying:!0,revertData:t})}else s.appendChild(r.render());e.intoFragment&&t.appendChild(s)}_setUpListeners(e){if(this.eventListeners)for(const t in this.eventListeners){const s=this.eventListeners[t].map((s=>{const[o,i]=t.split("@");return s.activateDomEventListener(o,i,e)}));e.revertData&&e.revertData.bindings.push(s)}}_bindToObservable({schema:e,updater:t,data:s}){const o=s.revertData;k(e,t,s);const i=e.filter((e=>!j(e))).filter((e=>e.observable)).map((o=>o.activateAttributeListener(e,t,s)));o&&o.bindings.push(i)}_revertTemplateFromNode(e,t){for(const e of t.bindings)for(const t of e)t();if(t.text)e.textContent=t.text;else{for(const s in t.attributes){const o=t.attributes[s];null===o?e.removeAttribute(s):e.setAttribute(s,o)}for(let s=0;s<t.children.length;++s)this._revertTemplateFromNode(e.childNodes[s],t.children[s])}}}(0,i.Z)(u,r.ZP);class p{constructor(e){Object.assign(this,e)}getValue(e){const t=this.observable[this.attribute];return this.callback?this.callback(t,e):t}activateAttributeListener(e,t,s){const o=()=>k(e,t,s);return this.emitter.listenTo(this.observable,"change:"+this.attribute,o),()=>{this.emitter.stopListening(this.observable,"change:"+this.attribute,o)}}}class g extends p{activateDomEventListener(e,t,s){const o=(e,s)=>{t&&!s.target.matches(t)||("function"==typeof this.eventNameOrFunction?this.eventNameOrFunction(s):this.observable.fire(this.eventNameOrFunction,s))};return this.emitter.listenTo(s.node,e,o),()=>{this.emitter.stopListening(s.node,e,o)}}}class m extends p{getValue(e){return!j(super.getValue(e))&&(this.valueIfTrue||!0)}}function f(e){return!!e&&(e.value&&(e=e.value),Array.isArray(e)?e.some(f):e instanceof p)}function k(e,t,{node:s}){let o=function(e,t){return e.map((e=>e instanceof p?e.getValue(t):e))}(e,s);o=1==e.length&&e[0]instanceof m?o[0]:o.reduce(P,""),j(o)?t.remove():t.set(o)}function _(e){return{set(t){e.textContent=t},remove(){e.textContent=""}}}function b(e,t,s){return{set(o){e.setAttributeNS(s,t,o)},remove(){e.removeAttributeNS(s,t)}}}function w(e,t){return{set(s){e.style[t]=s},remove(){e.style[t]=null}}}function v(e){return(0,d.Z)(e,(e=>{if(e&&(e instanceof p||C(e)||T(e)||E(e)))return e}))}function y(e){if("string"==typeof e?e=function(e){return{text:[e]}}(e):e.text&&function(e){e.text=(0,h.Z)(e.text)}(e),e.on&&(e.eventListeners=function(e){for(const t in e)Z(e,t);return e}(e.on),delete e.on),!e.text){e.attributes&&function(e){for(const t in e)e[t].value&&(e[t].value=(0,h.Z)(e[t].value)),Z(e,t)}(e.attributes);const t=[];if(e.children)if(E(e.children))t.push(e.children);else for(const s of e.children)C(s)||T(s)||(0,c.Z)(s)?t.push(s):t.push(new u(s));e.children=t}return e}function Z(e,t){e[t]=(0,h.Z)(e[t])}function P(e,t){return j(t)?e:j(e)?t:`${e} ${t}`}function x(e,t){for(const s in t)e[s]?e[s].push(...t[s]):e[s]=t[s]}function A(e,t){if(t.attributes&&(e.attributes||(e.attributes={}),x(e.attributes,t.attributes)),t.eventListeners&&(e.eventListeners||(e.eventListeners={}),x(e.eventListeners,t.eventListeners)),t.text&&e.text.push(...t.text),t.children&&t.children.length){if(e.children.length!=t.children.length)throw new o.ZP("ui-template-extend-children-mismatch",e);let s=0;for(const o of t.children)A(e.children[s++],o)}}function j(e){return!e&&0!==e}function T(e){return e instanceof n.Z}function C(e){return e instanceof u}function E(e){return e instanceof a.Z}function S(e){return"class"==e||"style"==e}},"./packages/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js":(e,t,s)=>{"use strict";function o(e){return Array.isArray(e)?{items:e,removeItems:[]}:e?Object.assign({items:[],removeItems:[]},e):{items:[],removeItems:[]}}s.d(t,{Z:()=>o})},"./packages/ckeditor5-ui/src/toolbar/toolbarseparatorview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-ui/src/view.js");class i extends o.Z{constructor(e){super(e),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__separator"]}})}}},"./packages/ckeditor5-ui/src/toolbar/toolbarview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>y});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-utils/src/focustracker.ts"),r=s("./packages/ckeditor5-ui/src/focuscycler.js"),n=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),a=s("./packages/ckeditor5-ui/src/toolbar/toolbarseparatorview.js");class c extends o.Z{constructor(e){super(e),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__line-break"]}})}}var l=s("./packages/ckeditor5-utils/src/dom/resizeobserver.ts");function d(e){return e.bindTemplate.to((t=>{t.target===e.element&&t.preventDefault()}))}var h=s("./packages/ckeditor5-utils/src/dom/rect.ts"),u=s("./packages/ckeditor5-utils/src/dom/isvisible.ts"),p=s("./packages/ckeditor5-utils/src/dom/global.ts"),g=s("./packages/ckeditor5-ui/src/dropdown/utils.js"),m=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),f=s("./packages/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js"),k=s("./packages/ckeditor5-core/theme/icons/three-vertical-dots.svg"),_=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),b=s.n(_),w=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/toolbar/toolbar.css"),v={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};b()(w.Z,v);w.Z.locals;class y extends o.Z{constructor(e,t){super(e);const s=this.bindTemplate,o=this.t;this.options=t||{},this.set("ariaLabel",o("Editor toolbar")),this.set("maxWidth","auto"),this.items=this.createCollection(),this.focusTracker=new i.Z,this.keystrokes=new n.Z,this.set("class"),this.set("isCompact",!1),this.itemsView=new Z(e),this.children=this.createCollection(),this.children.add(this.itemsView),this.focusables=this.createCollection();const a="rtl"===e.uiLanguageDirection;this._focusCycler=new r.Z({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:[a?"arrowright":"arrowleft","arrowup"],focusNext:[a?"arrowleft":"arrowright","arrowdown"]}});const c=["ck","ck-toolbar",s.to("class"),s.if("isCompact","ck-toolbar_compact")];this.options.shouldGroupWhenFull&&this.options.isFloating&&c.push("ck-toolbar_floating"),this.setTemplate({tag:"div",attributes:{class:c,role:"toolbar","aria-label":s.to("ariaLabel"),style:{maxWidth:s.to("maxWidth")}},children:this.children,on:{mousedown:d(this)}}),this._behavior=this.options.shouldGroupWhenFull?new x(this):new P(this)}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",((e,t)=>{this.focusTracker.add(t.element)})),this.items.on("remove",((e,t)=>{this.focusTracker.remove(t.element)})),this.keystrokes.listenTo(this.element),this._behavior.render(this)}destroy(){return this._behavior.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy(),super.destroy()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}fillFromConfig(e,t){const s=(0,f.Z)(e),o=s.items.filter(((e,o,i)=>"|"===e||-1===s.removeItems.indexOf(e)&&("-"===e?!this.options.shouldGroupWhenFull||((0,m.KE)("toolbarview-line-break-ignored-when-grouping-items",i),!1):!!t.has(e)||((0,m.KE)("toolbarview-item-unavailable",{name:e}),!1)))),i=this._cleanSeparators(o).map((e=>"|"===e?new a.Z:"-"===e?new c:t.create(e)));this.items.addMany(i)}_cleanSeparators(e){const t=e=>"-"!==e&&"|"!==e,s=e.length,o=e.findIndex(t),i=s-e.slice().reverse().findIndex(t);return e.slice(o,i).filter(((e,s,o)=>{if(t(e))return!0;return!(s>0&&o[s-1]===e)}))}}class Z extends o.Z{constructor(e){super(e),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-toolbar__items"]},children:this.children})}}class P{constructor(e){const t=e.bindTemplate;e.set("isVertical",!1),e.itemsView.children.bindTo(e.items).using((e=>e)),e.focusables.bindTo(e.items).using((e=>e)),e.extendTemplate({attributes:{class:[t.if("isVertical","ck-toolbar_vertical")]}})}render(){}destroy(){}}class x{constructor(e){this.view=e,this.viewChildren=e.children,this.viewFocusables=e.focusables,this.viewItemsView=e.itemsView,this.viewFocusTracker=e.focusTracker,this.viewLocale=e.locale,this.ungroupedItems=e.createCollection(),this.groupedItems=e.createCollection(),this.groupedItemsDropdown=this._createGroupedItemsDropdown(),this.resizeObserver=null,this.cachedPadding=null,this.shouldUpdateGroupingOnNextResize=!1,e.itemsView.children.bindTo(this.ungroupedItems).using((e=>e)),this.ungroupedItems.on("add",this._updateFocusCycleableItems.bind(this)),this.ungroupedItems.on("remove",this._updateFocusCycleableItems.bind(this)),e.children.on("add",this._updateFocusCycleableItems.bind(this)),e.children.on("remove",this._updateFocusCycleableItems.bind(this)),e.items.on("change",((e,t)=>{const s=t.index;for(const e of t.removed)s>=this.ungroupedItems.length?this.groupedItems.remove(e):this.ungroupedItems.remove(e);for(let e=s;e<s+t.added.length;e++){const o=t.added[e-s];e>this.ungroupedItems.length?this.groupedItems.add(o,e-this.ungroupedItems.length):this.ungroupedItems.add(o,e)}this._updateGrouping()})),e.extendTemplate({attributes:{class:["ck-toolbar_grouping"]}})}render(e){this.viewElement=e.element,this._enableGroupingOnResize(),this._enableGroupingOnMaxWidthChange(e)}destroy(){this.groupedItemsDropdown.destroy(),this.resizeObserver.destroy()}_updateGrouping(){if(!this.viewElement.ownerDocument.body.contains(this.viewElement))return;if(!(0,u.Z)(this.viewElement))return void(this.shouldUpdateGroupingOnNextResize=!0);const e=this.groupedItems.length;let t;for(;this._areItemsOverflowing;)this._groupLastItem(),t=!0;if(!t&&this.groupedItems.length){for(;this.groupedItems.length&&!this._areItemsOverflowing;)this._ungroupFirstItem();this._areItemsOverflowing&&this._groupLastItem()}this.groupedItems.length!==e&&this.view.fire("groupedItemsUpdate")}get _areItemsOverflowing(){if(!this.ungroupedItems.length)return!1;const e=this.viewElement,t=this.viewLocale.uiLanguageDirection,s=new h.Z(e.lastChild),o=new h.Z(e);if(!this.cachedPadding){const s=p.Z.window.getComputedStyle(e),o="ltr"===t?"paddingRight":"paddingLeft";this.cachedPadding=Number.parseInt(s[o])}return"ltr"===t?s.right>o.right-this.cachedPadding:s.left<o.left+this.cachedPadding}_enableGroupingOnResize(){let e;this.resizeObserver=new l.Z(this.viewElement,(t=>{e&&e===t.contentRect.width&&!this.shouldUpdateGroupingOnNextResize||(this.shouldUpdateGroupingOnNextResize=!1,this._updateGrouping(),e=t.contentRect.width)})),this._updateGrouping()}_enableGroupingOnMaxWidthChange(e){e.on("change:maxWidth",(()=>{this._updateGrouping()}))}_groupLastItem(){this.groupedItems.length||(this.viewChildren.add(new a.Z),this.viewChildren.add(this.groupedItemsDropdown),this.viewFocusTracker.add(this.groupedItemsDropdown.element)),this.groupedItems.add(this.ungroupedItems.remove(this.ungroupedItems.last),0)}_ungroupFirstItem(){this.ungroupedItems.add(this.groupedItems.remove(this.groupedItems.first)),this.groupedItems.length||(this.viewChildren.remove(this.groupedItemsDropdown),this.viewChildren.remove(this.viewChildren.last),this.viewFocusTracker.remove(this.groupedItemsDropdown.element))}_createGroupedItemsDropdown(){const e=this.viewLocale,t=e.t,s=(0,g.t9)(e);return s.class="ck-toolbar__grouped-dropdown",s.panelPosition="ltr"===e.uiLanguageDirection?"sw":"se",(0,g.up)(s,[]),s.buttonView.set({label:t("Show more items"),tooltip:!0,tooltipPosition:"rtl"===e.uiLanguageDirection?"se":"sw",icon:k.Z}),s.toolbarView.items.bindTo(this.groupedItems).using((e=>e)),s}_updateFocusCycleableItems(){this.viewFocusables.clear(),this.ungroupedItems.map((e=>{this.viewFocusables.add(e)})),this.groupedItems.length&&this.viewFocusables.add(this.groupedItemsDropdown)}}},"./packages/ckeditor5-ui/src/tooltip/tooltipview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),r=s.n(i),n=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/tooltip/tooltip.css"),a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};r()(n.Z,a);n.Z.locals;class c extends o.Z{constructor(e){super(e),this.set("text",""),this.set("position","s");const t=this.bindTemplate;this.setTemplate({tag:"span",attributes:{class:["ck","ck-tooltip",t.to("position",(e=>"ck-tooltip_"+e)),t.if("text","ck-hidden",(e=>!e.trim()))]},children:[{tag:"span",attributes:{class:["ck","ck-tooltip__text"]},children:[{text:t.to("text")}]}]})}}},"./packages/ckeditor5-ui/src/view.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>m});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-ui/src/viewcollection.js"),r=s("./packages/ckeditor5-ui/src/template.js"),n=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),a=s("./packages/ckeditor5-utils/src/observablemixin.ts"),c=s("./packages/ckeditor5-utils/src/collection.ts"),l=s("./packages/ckeditor5-utils/src/mix.ts"),d=s("./packages/ckeditor5-utils/src/isiterable.ts"),h=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),u=s.n(h),p=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/globals/globals.css"),g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};u()(p.Z,g);p.Z.locals;class m{constructor(e){this.element=null,this.isRendered=!1,this.locale=e,this.t=e&&e.t,this._viewCollections=new c.Z,this._unboundChildren=this.createCollection(),this._viewCollections.on("add",((t,s)=>{s.locale=e})),this.decorate("render")}get bindTemplate(){return this._bindTemplate?this._bindTemplate:this._bindTemplate=r.ZP.bind(this,this)}createCollection(e){const t=new i.Z(e);return this._viewCollections.add(t),t}registerChild(e){(0,d.Z)(e)||(e=[e]);for(const t of e)this._unboundChildren.add(t)}deregisterChild(e){(0,d.Z)(e)||(e=[e]);for(const t of e)this._unboundChildren.remove(t)}setTemplate(e){this.template=new r.ZP(e)}extendTemplate(e){r.ZP.extend(this.template,e)}render(){if(this.isRendered)throw new o.ZP("ui-view-render-already-rendered",this);this.template&&(this.element=this.template.render(),this.registerChild(this.template.getViews())),this.isRendered=!0}destroy(){this.stopListening(),this._viewCollections.map((e=>e.destroy())),this.template&&this.template._revertData&&this.template.revert(this.element)}}(0,l.Z)(m,n.Z),(0,l.Z)(m,a.Z)},"./packages/ckeditor5-ui/src/viewcollection.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/collection.ts");class r extends i.Z{constructor(e=[]){super(e,{idProperty:"viewUid"}),this.on("add",((e,t,s)=>{this._renderViewIntoCollectionParent(t,s)})),this.on("remove",((e,t)=>{t.element&&this._parentElement&&t.element.remove()})),this._parentElement=null}destroy(){this.map((e=>e.destroy()))}setParent(e){this._parentElement=e;for(const e of this)this._renderViewIntoCollectionParent(e)}delegate(...e){if(!e.length||!e.every((e=>"string"==typeof e)))throw new o.ZP("ui-viewcollection-delegate-wrong-events",this);return{to:t=>{for(const s of this)for(const o of e)s.delegate(o).to(t);this.on("add",((s,o)=>{for(const s of e)o.delegate(s).to(t)})),this.on("remove",((s,o)=>{for(const s of e)o.stopDelegating(s,t)}))}}}_renderViewIntoCollectionParent(e,t){e.isRendered||e.render(),e.element&&this._parentElement&&this._parentElement.insertBefore(e.element,this._parentElement.children[t])}}},"./packages/ckeditor5-widget/src/utils.js":(e,t,s)=>{"use strict";s.d(t,{s4:()=>m,Uo:()=>f,KT:()=>x,id:()=>Z,Qd:()=>k,em:()=>v,l6:()=>y,XC:()=>_,sC:()=>P,$n:()=>A});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/toarray.ts"),r=s("./packages/ckeditor5-engine/src/model/utils/findoptimalinsertionrange.js"),n=s("./packages/ckeditor5-utils/src/emittermixin.ts"),a=s("./packages/ckeditor5-utils/src/mix.ts");class c{constructor(){this._stack=[]}add(e,t){const s=this._stack,o=s[0];this._insertDescriptor(e);const i=s[0];o===i||l(o,i)||this.fire("change:top",{oldDescriptor:o,newDescriptor:i,writer:t})}remove(e,t){const s=this._stack,o=s[0];this._removeDescriptor(e);const i=s[0];o===i||l(o,i)||this.fire("change:top",{oldDescriptor:o,newDescriptor:i,writer:t})}_insertDescriptor(e){const t=this._stack,s=t.findIndex((t=>t.id===e.id));if(l(e,t[s]))return;s>-1&&t.splice(s,1);let o=0;for(;t[o]&&d(t[o],e);)o++;t.splice(o,0,e)}_removeDescriptor(e){const t=this._stack,s=t.findIndex((t=>t.id===e));s>-1&&t.splice(s,1)}}function l(e,t){return e&&t&&e.priority==t.priority&&h(e.classes)==h(t.classes)}function d(e,t){return e.priority>t.priority||!(e.priority<t.priority)&&h(e.classes)>h(t.classes)}function h(e){return Array.isArray(e)?e.sort().join(","):e}(0,a.Z)(c,n.ZP);var u=s("./packages/ckeditor5-widget/src/widgettypearound/utils.js"),p=s("./packages/ckeditor5-ui/src/icon/iconview.js");const g='<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M4 0v1H1v3H0V.5A.5.5 0 0 1 .5 0H4zm8 0h3.5a.5.5 0 0 1 .5.5V4h-1V1h-3V0zM4 16H.5a.5.5 0 0 1-.5-.5V12h1v3h3v1zm8 0v-1h3v-3h1v3.5a.5.5 0 0 1-.5.5H12z"/><path fill-opacity=".256" d="M1 1h14v14H1z"/><g class="ck-icon__selected-indicator"><path d="M7 0h2v1H7V0zM0 7h1v2H0V7zm15 0h1v2h-1V7zm-8 8h2v1H7v-1z"/><path fill-opacity=".254" d="M1 1h14v14H1z"/></g></svg>',m="ck-widget",f="ck-widget_selected";function k(e){return!!e.is("element")&&!!e.getCustomProperty("widget")}function _(e,t,s={}){if(!e.is("containerElement"))throw new o.ZP("widget-to-widget-wrong-element-type",null,{element:e});return t.setAttribute("contenteditable","false",e),t.addClass(m,e),t.setCustomProperty("widget",!0,e),e.getFillerOffset=j,s.label&&y(e,s.label,t),s.hasSelectionHandle&&function(e,t){const s=t.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(e){const t=this.toDomElement(e),s=new p.Z;return s.set("content",g),s.render(),t.appendChild(s.element),t}));t.insert(t.createPositionAt(e,0),s),t.addClass(["ck-widget_with-selection-handle"],e)}(e,t),v(e,t),e}function b(e,t,s){if(t.classes&&s.addClass((0,i.Z)(t.classes),e),t.attributes)for(const o in t.attributes)s.setAttribute(o,t.attributes[o],e)}function w(e,t,s){if(t.classes&&s.removeClass((0,i.Z)(t.classes),e),t.attributes)for(const o in t.attributes)s.removeAttribute(o,e)}function v(e,t,s=b,o=w){const i=new c;i.on("change:top",((t,i)=>{i.oldDescriptor&&o(e,i.oldDescriptor,i.writer),i.newDescriptor&&s(e,i.newDescriptor,i.writer)})),t.setCustomProperty("addHighlight",((e,t,s)=>i.add(t,s)),e),t.setCustomProperty("removeHighlight",((e,t,s)=>i.remove(t,s)),e)}function y(e,t,s){s.setCustomProperty("widgetLabel",t,e)}function Z(e){const t=e.getCustomProperty("widgetLabel");return t?"function"==typeof t?t():t:""}function P(e,t,s={}){return t.addClass(["ck-editor__editable","ck-editor__nested-editable"],e),t.setAttribute("role","textbox",e),s.label&&t.setAttribute("aria-label",s.label,e),t.setAttribute("contenteditable",e.isReadOnly?"false":"true",e),e.on("change:isReadOnly",((s,o,i)=>{t.setAttribute("contenteditable",i?"false":"true",e)})),e.on("change:isFocused",((s,o,i)=>{i?t.addClass("ck-editor__nested-editable_focused",e):t.removeClass("ck-editor__nested-editable_focused",e)})),v(e,t),e}function x(e,t){const s=e.getSelectedElement();if(s){const o=(0,u.tB)(e);if(o)return t.createRange(t.createPositionAt(s,o))}return(0,r.K)(e,t)}function A(e,t){return(s,o)=>{const{mapper:i,viewPosition:r}=o,n=i.findMappedViewAncestor(r);if(!t(n))return;const a=i.toModelElement(n);o.modelPosition=e.createPositionAt(a,r.isAtStart?"before":"after")}}function j(){return null}},"./packages/ckeditor5-widget/src/widget.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>_});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-engine/src/view/observer/mouseobserver.js"),r=s("./packages/ckeditor5-widget/src/widgettypearound/widgettypearound.js"),n=s("./packages/ckeditor5-typing/src/delete.js"),a=s("./packages/ckeditor5-utils/src/env.ts"),c=s("./packages/ckeditor5-utils/src/keyboard.ts"),l=s("./packages/ckeditor5-utils/src/dom/rect.ts");function d(e){const t=e.model;return(s,o)=>{const i=o.keyCode==c.Do.arrowup,r=o.keyCode==c.Do.arrowdown,n=o.shiftKey,a=t.document.selection;if(!i&&!r)return;const d=r;if(n&&function(e,t){return!e.isCollapsed&&e.isBackward==t}(a,d))return;const p=function(e,t,s){const o=e.model;if(s){const e=t.isCollapsed?t.focus:t.getLastPosition(),s=h(o,e,"forward");if(!s)return null;const i=o.createRange(e,s),r=u(o.schema,i,"backward");return r?o.createRange(e,r):null}{const e=t.isCollapsed?t.focus:t.getFirstPosition(),s=h(o,e,"backward");if(!s)return null;const i=o.createRange(s,e),r=u(o.schema,i,"forward");return r?o.createRange(r,e):null}}(e,a,d);if(p){if(p.isCollapsed){if(a.isCollapsed)return;if(n)return}(p.isCollapsed||function(e,t,s){const o=e.model,i=e.view.domConverter;if(s){const e=o.createSelection(t.start);o.modifySelection(e),e.focus.isAtEnd||t.start.isEqual(e.focus)||(t=o.createRange(e.focus,t.end))}const r=e.mapper.toViewRange(t),n=i.viewRangeToDom(r),a=l.Z.getDomRangeRects(n);let c;for(const e of a)if(void 0!==c){if(Math.round(e.top)>=c)return!1;c=Math.max(c,Math.round(e.bottom))}else c=Math.round(e.bottom);return!0}(e,p,d))&&(t.change((e=>{const s=d?p.end:p.start;if(n){const o=t.createSelection(a.anchor);o.setFocus(s),e.setSelection(o)}else e.setSelection(s)})),s.stop(),o.preventDefault(),o.stopPropagation())}}}function h(e,t,s){const o=e.schema,i=e.createRangeIn(t.root),r="forward"==s?"elementStart":"elementEnd";for(const{previousPosition:e,item:n,type:a}of i.getWalker({startPosition:t,direction:s})){if(o.isLimit(n)&&!o.isInline(n))return e;if(a==r&&o.isBlock(n))return null}return null}function u(e,t,s){const o="backward"==s?t.end:t.start;if(e.checkChild(o,"$text"))return o;for(const{nextPosition:o}of t.getWalker({direction:s}))if(e.checkChild(o,"$text"))return o;return null}var p=s("./packages/ckeditor5-widget/src/utils.js"),g=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),m=s.n(g),f=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widget.css"),k={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};m()(f.Z,k);f.Z.locals;class _ extends o.Z{static get pluginName(){return"Widget"}static get requires(){return[r.Z,n.Z]}init(){const e=this.editor,t=e.editing.view,s=t.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on("selection",((t,s,o)=>{const i=o.writer,r=s.selection;if(r.isCollapsed)return;const n=r.getSelectedElement();if(!n)return;const a=e.editing.mapper.toViewElement(n);(0,p.Qd)(a)&&o.consumable.consume(r,"selection")&&i.setSelection(i.createRangeOn(a),{fake:!0,label:(0,p.id)(a)})})),this.editor.editing.downcastDispatcher.on("selection",((e,t,s)=>{this._clearPreviouslySelectedWidgets(s.writer);const o=s.writer,i=o.document.selection;let r=null;for(const e of i.getRanges())for(const t of e){const e=t.item;(0,p.Qd)(e)&&!b(e,r)&&(o.addClass(p.Uo,e),this._previouslySelected.add(e),r=e)}}),{priority:"low"}),t.addObserver(i.Z),this.listenTo(s,"mousedown",((...e)=>this._onMousedown(...e))),this.listenTo(s,"arrowKey",((...e)=>{this._handleSelectionChangeOnArrowKeyPress(...e)}),{context:[p.Qd,"$text"]}),this.listenTo(s,"arrowKey",((...e)=>{this._preventDefaultOnArrowKeyPress(...e)}),{context:"$root"}),this.listenTo(s,"arrowKey",d(this.editor.editing),{context:"$text"}),this.listenTo(s,"delete",((e,t)=>{this._handleDelete("forward"==t.direction)&&(t.preventDefault(),e.stop())}),{context:"$root"})}_onMousedown(e,t){const s=this.editor,o=s.editing.view,i=o.document;let r=t.target;if(function(e){for(;e;){if(e.is("editableElement")&&!e.is("rootElement"))return!0;if((0,p.Qd)(e))return!1;e=e.parent}return!1}(r)){if((a.ZP.isSafari||a.ZP.isGecko)&&t.domEvent.detail>=3){const e=s.editing.mapper,o=r.is("attributeElement")?r.findAncestor((e=>!e.is("attributeElement"))):r,i=e.toModelElement(o);t.preventDefault(),this.editor.model.change((e=>{e.setSelection(i,"in")}))}return}if(!(0,p.Qd)(r)&&(r=r.findAncestor(p.Qd),!r))return;a.ZP.isAndroid&&t.preventDefault(),i.isFocused||o.focus();const n=s.editing.mapper.toModelElement(r);this._setSelectionOverElement(n)}_handleSelectionChangeOnArrowKeyPress(e,t){const s=t.keyCode,o=this.editor.model,i=o.schema,r=o.document.selection,n=r.getSelectedElement(),a=(0,c.mA)(s,this.editor.locale.contentLanguageDirection),l="down"==a||"right"==a,d="up"==a||"down"==a;if(n&&i.isObject(n)){const s=l?r.getLastPosition():r.getFirstPosition(),n=i.getNearestSelectionRange(s,l?"forward":"backward");return void(n&&(o.change((e=>{e.setSelection(n)})),t.preventDefault(),e.stop()))}if(!r.isCollapsed&&!t.shiftKey){const s=r.getFirstPosition(),n=r.getLastPosition(),a=s.nodeAfter,c=n.nodeBefore;return void((a&&i.isObject(a)||c&&i.isObject(c))&&(o.change((e=>{e.setSelection(l?n:s)})),t.preventDefault(),e.stop()))}if(!r.isCollapsed)return;const h=this._getObjectElementNextToSelection(l);if(h&&i.isObject(h)){if(i.isInline(h)&&d)return;this._setSelectionOverElement(h),t.preventDefault(),e.stop()}}_preventDefaultOnArrowKeyPress(e,t){const s=this.editor.model,o=s.schema,i=s.document.selection.getSelectedElement();i&&o.isObject(i)&&(t.preventDefault(),e.stop())}_handleDelete(e){if(this.editor.isReadOnly)return;const t=this.editor.model.document.selection;if(!t.isCollapsed)return;const s=this._getObjectElementNextToSelection(e);return s?(this.editor.model.change((e=>{let o=t.anchor.parent;for(;o.isEmpty;){const t=o;o=t.parent,e.remove(t)}this._setSelectionOverElement(s)})),!0):void 0}_setSelectionOverElement(e){this.editor.model.change((t=>{t.setSelection(t.createRangeOn(e))}))}_getObjectElementNextToSelection(e){const t=this.editor.model,s=t.schema,o=t.document.selection,i=t.createSelection(o);if(t.modifySelection(i,{direction:e?"forward":"backward"}),i.isEqual(o))return null;const r=e?i.focus.nodeBefore:i.focus.nodeAfter;return r&&s.isObject(r)?r:null}_clearPreviouslySelectedWidgets(e){for(const t of this._previouslySelected)e.removeClass(p.Uo,t);this._previouslySelected.clear()}}function b(e,t){return!!t&&Array.from(e.getAncestors()).includes(t)}},"./packages/ckeditor5-widget/src/widgettypearound/utils.js":(e,t,s)=>{"use strict";s.d(t,{Xr:()=>n,_m:()=>r,aU:()=>a,bi:()=>i,t:()=>c,tB:()=>l});var o=s("./packages/ckeditor5-widget/src/utils.js");const i="widget-type-around";function r(e,t,s){return e&&(0,o.Qd)(e)&&!s.isInline(t)}function n(e){return e.closest(".ck-widget__type-around__button")}function a(e){return e.classList.contains("ck-widget__type-around__button_before")?"before":"after"}function c(e,t){const s=e.closest(".ck-widget");return t.mapDomToView(s)}function l(e){return e.getAttribute(i)}},"./packages/ckeditor5-widget/src/widgettypearound/widgettypearound.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>_});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-ui/src/template.js"),r=s("./packages/ckeditor5-enter/src/enter.js"),n=s("./packages/ckeditor5-typing/src/delete.js"),a=s("./packages/ckeditor5-utils/src/keyboard.ts"),c=s("./packages/ckeditor5-widget/src/widgettypearound/utils.js"),l=s("./packages/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js"),d=s("./packages/ckeditor5-widget/src/utils.js");var h=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),u=s.n(h),p=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widgettypearound.css"),g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};u()(p.Z,g);p.Z.locals;const m=["before","after"],f=(new DOMParser).parseFromString('<svg viewBox="0 0 10 8" xmlns="http://www.w3.org/2000/svg"><path d="M9.055.263v3.972h-6.77M1 4.216l2-2.038m-2 2 2 2.038"/></svg>',"image/svg+xml").firstChild,k="ck-widget__type-around_disabled";class _ extends o.Z{static get pluginName(){return"WidgetTypeAround"}static get requires(){return[r.Z,n.Z]}constructor(e){super(e),this._currentFakeCaretModelElement=null}init(){const e=this.editor,t=e.editing.view;this.on("change:isEnabled",((s,o,i)=>{t.change((e=>{for(const s of t.document.roots)i?e.removeClass(k,s):e.addClass(k,s)})),i||e.model.change((e=>{e.removeSelectionAttribute(c.bi)}))})),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableInsertObjectIntegration(),this._enableDeleteContentIntegration()}destroy(){this._currentFakeCaretModelElement=null}_insertParagraph(e,t){const s=this.editor,o=s.editing.view,i=s.model.schema.getAttributesWithProperty(e,"copyOnReplace",!0);s.execute("insertParagraph",{position:s.model.createPositionAt(e,t),attributes:i}),o.focus(),o.scrollToTheSelection()}_listenToIfEnabled(e,t,s,o){this.listenTo(e,t,((...e)=>{this.isEnabled&&s(...e)}),o)}_insertParagraphAccordingToFakeCaretPosition(){const e=this.editor.model.document.selection,t=(0,c.tB)(e);if(!t)return!1;const s=e.getSelectedElement();return this._insertParagraph(s,t),!0}_enableTypeAroundUIInjection(){const e=this.editor,t=e.model.schema,s=e.locale.t,o={before:s("Insert paragraph before block"),after:s("Insert paragraph after block")};e.editing.downcastDispatcher.on("insert",((e,s,r)=>{const n=r.mapper.toViewElement(s.item);(0,c._m)(n,s.item,t)&&function(e,t,s){const o=e.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(e){const s=this.toDomElement(e);return function(e,t){for(const s of m){const o=new i.ZP({tag:"div",attributes:{class:["ck","ck-widget__type-around__button",`ck-widget__type-around__button_${s}`],title:t[s]},children:[e.ownerDocument.importNode(f,!0)]});e.appendChild(o.render())}}(s,t),function(e){const t=new i.ZP({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});e.appendChild(t.render())}(s),s}));e.insert(e.createPositionAt(s,"end"),o)}(r.writer,o,n)}),{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const e=this.editor,t=e.model,s=t.document.selection,o=t.schema,i=e.editing.view;function r(e){return`ck-widget_type-around_show-fake-caret_${e}`}this._listenToIfEnabled(i.document,"arrowKey",((e,t)=>{this._handleArrowKeyPress(e,t)}),{context:[d.Qd,"$text"],priority:"high"}),this._listenToIfEnabled(s,"change:range",((t,s)=>{s.directChange&&e.model.change((e=>{e.removeSelectionAttribute(c.bi)}))})),this._listenToIfEnabled(t.document,"change:data",(()=>{const t=s.getSelectedElement();if(t){const s=e.editing.mapper.toViewElement(t);if((0,c._m)(s,t,o))return}e.model.change((e=>{e.removeSelectionAttribute(c.bi)}))})),this._listenToIfEnabled(e.editing.downcastDispatcher,"selection",((e,t,s)=>{const i=s.writer;if(this._currentFakeCaretModelElement){const e=s.mapper.toViewElement(this._currentFakeCaretModelElement);e&&(i.removeClass(m.map(r),e),this._currentFakeCaretModelElement=null)}const n=t.selection.getSelectedElement();if(!n)return;const a=s.mapper.toViewElement(n);if(!(0,c._m)(a,n,o))return;const l=(0,c.tB)(t.selection);l&&(i.addClass(r(l),a),this._currentFakeCaretModelElement=n)})),this._listenToIfEnabled(e.ui.focusTracker,"change:isFocused",((t,s,o)=>{o||e.model.change((e=>{e.removeSelectionAttribute(c.bi)}))}))}_handleArrowKeyPress(e,t){const s=this.editor,o=s.model,i=o.document.selection,r=o.schema,n=s.editing.view,l=t.keyCode,d=(0,a.Zt)(l,s.locale.contentLanguageDirection),h=n.document.selection.getSelectedElement(),u=s.editing.mapper.toModelElement(h);let p;(0,c._m)(h,u,r)?p=this._handleArrowKeyPressOnSelectedWidget(d):i.isCollapsed?p=this._handleArrowKeyPressWhenSelectionNextToAWidget(d):t.shiftKey||(p=this._handleArrowKeyPressWhenNonCollapsedSelection(d)),p&&(t.preventDefault(),e.stop())}_handleArrowKeyPressOnSelectedWidget(e){const t=this.editor.model,s=t.document.selection,o=(0,c.tB)(s);return t.change((t=>{if(!o)return t.setSelectionAttribute(c.bi,e?"after":"before"),!0;if(!(o===(e?"after":"before")))return t.removeSelectionAttribute(c.bi),!0;return!1}))}_handleArrowKeyPressWhenSelectionNextToAWidget(e){const t=this.editor,s=t.model,o=s.schema,i=t.plugins.get("Widget"),r=i._getObjectElementNextToSelection(e),n=t.editing.mapper.toViewElement(r);return!!(0,c._m)(n,r,o)&&(s.change((t=>{i._setSelectionOverElement(r),t.setSelectionAttribute(c.bi,e?"before":"after")})),!0)}_handleArrowKeyPressWhenNonCollapsedSelection(e){const t=this.editor,s=t.model,o=s.schema,i=t.editing.mapper,r=s.document.selection,n=e?r.getLastPosition().nodeBefore:r.getFirstPosition().nodeAfter,a=i.toViewElement(n);return!!(0,c._m)(a,n,o)&&(s.change((t=>{t.setSelection(n,"on"),t.setSelectionAttribute(c.bi,e?"after":"before")})),!0)}_enableInsertingParagraphsOnButtonClick(){const e=this.editor,t=e.editing.view;this._listenToIfEnabled(t.document,"mousedown",((s,o)=>{const i=(0,c.Xr)(o.domTarget);if(!i)return;const r=(0,c.aU)(i),n=(0,c.t)(i,t.domConverter),a=e.editing.mapper.toModelElement(n);this._insertParagraph(a,r),o.preventDefault(),s.stop()}))}_enableInsertingParagraphsOnEnterKeypress(){const e=this.editor,t=e.model.document.selection,s=e.editing.view;this._listenToIfEnabled(s.document,"enter",((s,o)=>{if("atTarget"!=s.eventPhase)return;const i=t.getSelectedElement(),r=e.editing.mapper.toViewElement(i),n=e.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:(0,c._m)(r,i,n)&&(this._insertParagraph(i,o.isSoft?"before":"after"),a=!0),a&&(o.preventDefault(),s.stop())}),{context:d.Qd})}_enableInsertingParagraphsOnTypingKeystroke(){const e=this.editor.editing.view,t=[a.Do.enter,a.Do.delete,a.Do.backspace];this._listenToIfEnabled(e.document,"keydown",((e,s)=>{t.includes(s.keyCode)||(0,l.u)(s)||this._insertParagraphAccordingToFakeCaretPosition()}),{priority:"high"})}_enableDeleteIntegration(){const e=this.editor,t=e.editing.view,s=e.model,o=s.schema;this._listenToIfEnabled(t.document,"delete",((t,i)=>{if("atTarget"!=t.eventPhase)return;const r=(0,c.tB)(s.document.selection);if(!r)return;const n=i.direction,a=s.document.selection.getSelectedElement(),l="forward"==n;if("before"===r===l)e.execute("delete",{selection:s.createSelection(a,"on")});else{const t=o.getNearestSelectionRange(s.createPositionAt(a,r),n);if(t)if(t.isCollapsed){const i=s.createSelection(t.start);if(s.modifySelection(i,{direction:n}),i.focus.isEqual(t.start)){const e=function(e,t){let s=t;for(const o of t.getAncestors({parentFirst:!0})){if(o.childCount>1||e.isLimit(o))break;s=o}return s}(o,t.start.parent);s.deleteContent(s.createSelection(e,"on"),{doNotAutoparagraph:!0})}else s.change((s=>{s.setSelection(t),e.execute(l?"deleteForward":"delete")}))}else s.change((s=>{s.setSelection(t),e.execute(l?"deleteForward":"delete")}))}i.preventDefault(),t.stop()}),{context:d.Qd})}_enableInsertContentIntegration(){const e=this.editor,t=this.editor.model,s=t.document.selection;this._listenToIfEnabled(e.model,"insertContent",((e,[o,i])=>{if(i&&!i.is("documentSelection"))return;const r=(0,c.tB)(s);return r?(e.stop(),t.change((e=>{const i=s.getSelectedElement(),n=t.createPositionAt(i,r),a=e.createSelection(n),c=t.insertContent(o,a);return e.setSelection(a),c}))):void 0}),{priority:"high"})}_enableInsertObjectIntegration(){const e=this.editor,t=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"insertObject",((e,s)=>{const[,o,,i={}]=s;if(o&&!o.is("documentSelection"))return;const r=(0,c.tB)(t);r&&(i.findOptimalPosition=r,s[3]=i)}),{priority:"high"})}_enableDeleteContentIntegration(){const e=this.editor,t=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"deleteContent",((e,[s])=>{if(s&&!s.is("documentSelection"))return;(0,c.tB)(t)&&e.stop()}),{priority:"high"})}}},"./src/clipboard.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Clipboard:()=>T,ClipboardPipeline:()=>d,DragDrop:()=>y,PastePlainText:()=>j});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-utils/src/eventinfo.ts"),r=s("./packages/ckeditor5-engine/src/view/observer/domeventobserver.js");class n{constructor(e){this.files=function(e){const t=Array.from(e.files||[]),s=Array.from(e.items||[]);if(t.length)return t;return s.filter((e=>"file"===e.kind)).map((e=>e.getAsFile()))}(e),this._native=e}get types(){return this._native.types}getData(e){return this._native.getData(e)}setData(e,t){this._native.setData(e,t)}set effectAllowed(e){this._native.effectAllowed=e}get effectAllowed(){return this._native.effectAllowed}set dropEffect(e){this._native.dropEffect=e}get dropEffect(){return this._native.dropEffect}get isCanceled(){return"none"==this._native.dropEffect||!!this._native.mozUserCancelled}}class a extends r.Z{constructor(e){super(e);const t=this.document;function s(e){return(s,o)=>{o.preventDefault();const r=o.dropRange?[o.dropRange]:null,n=new i.Z(t,e);t.fire(n,{dataTransfer:o.dataTransfer,method:s.name,targetRanges:r,target:o.target}),n.stop.called&&o.stopPropagation()}}this.domEventType=["paste","copy","cut","drop","dragover","dragstart","dragend","dragenter","dragleave"],this.listenTo(t,"paste",s("clipboardInput"),{priority:"low"}),this.listenTo(t,"drop",s("clipboardInput"),{priority:"low"}),this.listenTo(t,"dragover",s("dragging"),{priority:"low"})}onDomEvent(e){const t={dataTransfer:new n(e.clipboardData?e.clipboardData:e.dataTransfer)};"drop"!=e.type&&"dragover"!=e.type||(t.dropRange=function(e,t){const s=t.target.ownerDocument,o=t.clientX,i=t.clientY;let r;s.caretRangeFromPoint&&s.caretRangeFromPoint(o,i)?r=s.caretRangeFromPoint(o,i):t.rangeParent&&(r=s.createRange(),r.setStart(t.rangeParent,t.rangeOffset),r.collapse(!0));if(r)return e.domConverter.domRangeToView(r);return null}(this.view,e)),this.fire(e.type,e,t)}}const c=["figcaption","li"];function l(e){let t="";if(e.is("$text")||e.is("$textProxy"))t=e.data;else if(e.is("element","img")&&e.hasAttribute("alt"))t=e.getAttribute("alt");else if(e.is("element","br"))t="\n";else{let s=null;for(const o of e.getChildren()){const e=l(o);s&&(s.is("containerElement")||o.is("containerElement"))&&(c.includes(s.name)||c.includes(o.name)?t+="\n":t+="\n\n"),t+=e,s=o}}return t}class d extends o.Z{static get pluginName(){return"ClipboardPipeline"}init(){this.editor.editing.view.addObserver(a),this._setupPasteDrop(),this._setupCopyCut()}_setupPasteDrop(){const e=this.editor,t=e.model,s=e.editing.view,o=s.document;this.listenTo(o,"clipboardInput",(t=>{e.isReadOnly&&t.stop()}),{priority:"highest"}),this.listenTo(o,"clipboardInput",((e,t)=>{const o=t.dataTransfer;let r=t.content||"";var n;r||(o.getData("text/html")?r=function(e){return e.replace(/<span(?: class="Apple-converted-space"|)>(\s+)<\/span>/g,((e,t)=>1==t.length?" ":t)).replace(/<!--[\s\S]*?-->/g,"")}(o.getData("text/html")):o.getData("text/plain")&&(((n=(n=o.getData("text/plain")).replace(/</g,"<").replace(/>/g,">").replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br>").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g," ")).includes("</p><p>")||n.includes("<br>"))&&(n=`<p>${n}</p>`),r=n),r=this.editor.data.htmlProcessor.toView(r));const a=new i.Z(this,"inputTransformation");this.fire(a,{content:r,dataTransfer:o,targetRanges:t.targetRanges,method:t.method}),a.stop.called&&e.stop(),s.scrollToTheSelection()}),{priority:"low"}),this.listenTo(this,"inputTransformation",((e,s)=>{if(s.content.isEmpty)return;const o=this.editor.data.toModel(s.content,"$clipboardHolder");0!=o.childCount&&(e.stop(),t.change((()=>{this.fire("contentInsertion",{content:o,method:s.method,dataTransfer:s.dataTransfer,targetRanges:s.targetRanges})})))}),{priority:"low"}),this.listenTo(this,"contentInsertion",((e,s)=>{s.resultRange=t.insertContent(s.content)}),{priority:"low"})}_setupCopyCut(){const e=this.editor,t=e.model.document,s=e.editing.view.document;function o(o,i){const r=i.dataTransfer;i.preventDefault();const n=e.data.toView(e.model.getSelectedContent(t.selection));s.fire("clipboardOutput",{dataTransfer:r,content:n,method:o.name})}this.listenTo(s,"copy",o,{priority:"low"}),this.listenTo(s,"cut",((t,s)=>{e.isReadOnly?s.preventDefault():o(t,s)}),{priority:"low"}),this.listenTo(s,"clipboardOutput",((s,o)=>{o.content.isEmpty||(o.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(o.content)),o.dataTransfer.setData("text/plain",l(o.content))),"cut"==o.method&&e.model.deleteContent(t.selection)}),{priority:"low"})}}var h=s("./packages/ckeditor5-engine/src/model/liverange.js"),u=s("./packages/ckeditor5-engine/src/view/observer/mouseobserver.js"),p=s("./packages/ckeditor5-widget/src/widget.js"),g=s("./packages/ckeditor5-utils/src/uid.ts"),m=s("./packages/ckeditor5-utils/src/env.ts"),f=s("./packages/ckeditor5-widget/src/utils.js"),k=s("./node_modules/lodash-es/throttle.js"),_=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),b=s.n(_),w=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-clipboard/theme/clipboard.css"),v={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};b()(w.Z,v);w.Z.locals;class y extends o.Z{static get pluginName(){return"DragDrop"}static get requires(){return[d,p.Z]}init(){const e=this.editor,t=e.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,this._updateDropMarkerThrottled=(0,k.Z)((e=>this._updateDropMarker(e)),40),this._removeDropMarkerDelayed=x((()=>this._removeDropMarker()),40),this._clearDraggableAttributesDelayed=x((()=>this._clearDraggableAttributes()),40),t.addObserver(a),t.addObserver(u.Z),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDropMarker(),this._setupDraggableAttributeHandling(),this.listenTo(e,"change:isReadOnly",((e,t,s)=>{s?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")})),this.on("change:isEnabled",((e,t,s)=>{s||this._finalizeDragging(!1)})),m.ZP.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._updateDropMarkerThrottled.cancel(),this._removeDropMarkerDelayed.cancel(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const e=this.editor,t=e.model,s=t.document,o=e.editing.view,i=o.document;this.listenTo(i,"dragstart",((o,r)=>{const n=s.selection;if(r.target&&r.target.is("editableElement"))return void r.preventDefault();const a=r.target?A(r.target):null;if(a){const s=e.editing.mapper.toModelElement(a);this._draggedRange=h.Z.fromRange(t.createRangeOn(s)),e.plugins.has("WidgetToolbarRepository")&&e.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}else if(!i.selection.isCollapsed){const e=i.selection.getSelectedElement();e&&(0,f.Qd)(e)||(this._draggedRange=h.Z.fromRange(n.getFirstRange()))}if(!this._draggedRange)return void r.preventDefault();this._draggingUid=(0,g.Z)(),r.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",r.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const c=t.createSelection(this._draggedRange.toRange()),l=e.data.toView(t.getSelectedContent(c));i.fire("clipboardOutput",{dataTransfer:r.dataTransfer,content:l,method:o.name}),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")}),{priority:"low"}),this.listenTo(i,"dragend",((e,t)=>{this._finalizeDragging(!t.dataTransfer.isCanceled&&"move"==t.dataTransfer.dropEffect)}),{priority:"low"}),this.listenTo(i,"dragenter",(()=>{this.isEnabled&&o.focus()})),this.listenTo(i,"dragleave",(()=>{this._removeDropMarkerDelayed()})),this.listenTo(i,"dragging",((t,s)=>{if(!this.isEnabled)return void(s.dataTransfer.dropEffect="none");this._removeDropMarkerDelayed.cancel();const o=Z(e,s.targetRanges,s.target);this._draggedRange||(s.dataTransfer.dropEffect="copy"),m.ZP.isGecko||("copy"==s.dataTransfer.effectAllowed?s.dataTransfer.dropEffect="copy":["all","copyMove"].includes(s.dataTransfer.effectAllowed)&&(s.dataTransfer.dropEffect="move")),o&&this._updateDropMarkerThrottled(o)}),{priority:"low"})}_setupClipboardInputIntegration(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"clipboardInput",((t,s)=>{if("drop"!=s.method)return;const o=Z(e,s.targetRanges,s.target);if(this._removeDropMarker(),!o)return this._finalizeDragging(!1),void t.stop();this._draggedRange&&this._draggingUid!=s.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==P(s.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(o,!0))return this._finalizeDragging(!1),void t.stop();s.targetRanges=[e.editing.mapper.toViewRange(o)]}),{priority:"high"})}_setupContentInsertionIntegration(){const e=this.editor.plugins.get(d);e.on("contentInsertion",((e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const s=t.targetRanges.map((e=>this.editor.editing.mapper.toModelRange(e)));this.editor.model.change((e=>e.setSelection(s)))}),{priority:"high"}),e.on("contentInsertion",((e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const s="move"==P(t.dataTransfer),o=!t.resultRange||!t.resultRange.isCollapsed;this._finalizeDragging(o&&s)}),{priority:"lowest"})}_setupDraggableAttributeHandling(){const e=this.editor,t=e.editing.view,s=t.document;this.listenTo(s,"mousedown",((o,i)=>{if(m.ZP.isAndroid||!i)return;this._clearDraggableAttributesDelayed.cancel();let r=A(i.target);if(m.ZP.isBlink&&!e.isReadOnly&&!r&&!s.selection.isCollapsed){const e=s.selection.getSelectedElement();e&&(0,f.Qd)(e)||(r=s.selection.editableElement)}r&&(t.change((e=>{e.setAttribute("draggable","true",r)})),this._draggableElement=e.editing.mapper.toModelElement(r))})),this.listenTo(s,"mouseup",(()=>{m.ZP.isAndroid||this._clearDraggableAttributesDelayed()}))}_clearDraggableAttributes(){const e=this.editor.editing;e.view.change((t=>{this._draggableElement&&"$graveyard"!=this._draggableElement.root.rootName&&t.removeAttribute("draggable",e.mapper.toViewElement(this._draggableElement)),this._draggableElement=null}))}_setupDropMarker(){const e=this.editor;e.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),e.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(t,{writer:s})=>{if(e.model.schema.checkChild(t.markerRange.start,"$text"))return s.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(e){const t=this.toDomElement(e);return t.innerHTML="⁠<span></span>⁠",t}))}})}_updateDropMarker(e){const t=this.editor,s=t.model.markers;t.model.change((t=>{s.has("drop-target")?s.get("drop-target").getRange().isEqual(e)||t.updateMarker("drop-target",{range:e}):t.addMarker("drop-target",{range:e,usingOperation:!1,affectsData:!1})}))}_removeDropMarker(){const e=this.editor.model;this._removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),e.markers.has("drop-target")&&e.change((e=>{e.removeMarker("drop-target")}))}_finalizeDragging(e){const t=this.editor,s=t.model;this._removeDropMarker(),this._clearDraggableAttributes(),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop"),this._draggingUid="",this._draggedRange&&(e&&this.isEnabled&&s.deleteContent(s.createSelection(this._draggedRange),{doNotAutoparagraph:!0}),this._draggedRange.detach(),this._draggedRange=null)}}function Z(e,t,s){const o=e.model,i=e.editing.mapper;let r=null;const n=t?t[0].start:null;if(s.is("uiElement")&&(s=s.parent),r=function(e,t){const s=e.model,o=e.editing.mapper;if((0,f.Qd)(t))return s.createRangeOn(o.toModelElement(t));if(!t.is("editableElement")){const e=t.findAncestor((e=>(0,f.Qd)(e)||e.is("editableElement")));if((0,f.Qd)(e))return s.createRangeOn(o.toModelElement(e))}return null}(e,s),r)return r;const a=function(e,t){const s=e.editing.mapper,o=e.editing.view,i=s.toModelElement(t);if(i)return i;const r=o.createPositionBefore(t),n=s.findMappedViewAncestor(r);return s.toModelElement(n)}(e,s),c=n?i.toModelPosition(n):null;return c?(r=function(e,t,s){const o=e.model;if(!o.schema.checkChild(s,"$block"))return null;const i=o.createPositionAt(s,0),r=t.path.slice(0,i.path.length),n=o.createPositionFromPath(t.root,r).nodeAfter;if(n&&o.schema.isObject(n))return o.createRangeOn(n);return null}(e,c,a),r||(r=o.schema.getNearestSelectionRange(c,m.ZP.isGecko?"forward":"backward"),r||function(e,t){const s=e.model;for(;t;){if(s.schema.isObject(t))return s.createRangeOn(t);t=t.parent}}(e,c.parent))):function(e,t){const s=e.model,o=s.schema,i=s.createPositionAt(t,0);return o.getNearestSelectionRange(i,"forward")}(e,a)}function P(e){return m.ZP.isGecko?e.dropEffect:["all","copyMove"].includes(e.effectAllowed)?"move":"copy"}function x(e,t){let s;function o(...i){o.cancel(),s=setTimeout((()=>e(...i)),t)}return o.cancel=()=>{clearTimeout(s)},o}function A(e){if(e.is("editableElement"))return null;if(e.hasClass("ck-widget__selection-handle"))return e.findAncestor(f.Qd);if((0,f.Qd)(e))return e;const t=e.findAncestor((e=>(0,f.Qd)(e)||e.is("editableElement")));return(0,f.Qd)(t)?t:null}class j extends o.Z{static get pluginName(){return"PastePlainText"}static get requires(){return[d]}init(){const e=this.editor,t=e.model,s=e.editing.view,o=s.document,i=t.document.selection;let r=!1;s.addObserver(a),this.listenTo(o,"keydown",((e,t)=>{r=t.shiftKey})),e.plugins.get(d).on("contentInsertion",((e,s)=>{(r||function(e,t){if(e.childCount>1)return!1;const s=e.getChild(0);if(t.isObject(s))return!1;return 0==[...s.getAttributeKeys()].length}(s.content,t.schema))&&t.change((e=>{const o=Array.from(i.getAttributes()).filter((([e])=>t.schema.getAttributeProperties(e).isFormatting));i.isCollapsed||t.deleteContent(i,{doNotAutoparagraph:!0}),o.push(...i.getAttributes());const r=e.createRangeIn(s.content);for(const t of r.getItems())t.is("$textProxy")&&e.setAttributes(o,t)}))}))}}class T extends o.Z{static get pluginName(){return"Clipboard"}static get requires(){return[d,y,j]}}},"./src/core.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Command:()=>i.Z,Context:()=>b,ContextPlugin:()=>w.Z,DataApiMixin:()=>V,Editor:()=>E,EditorUI:()=>M,ElementApiMixin:()=>D,MultiCommand:()=>n,PendingActions:()=>F.Z,Plugin:()=>o.Z,attachToForm:()=>I,icons:()=>q,secureSourceElement:()=>B});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-utils/src/inserttopriorityarray.ts");class n extends i.Z{constructor(e){super(e),this._childCommandsDefinitions=[]}refresh(){}execute(...e){const t=this._getFirstEnabledCommand();return!!t&&t.execute(e)}registerChildCommand(e,t={priority:"normal"}){(0,r.Z)(this._childCommandsDefinitions,{command:e,priority:t.priority}),e.on("change:isEnabled",(()=>this._checkEnabled())),this._checkEnabled()}_checkEnabled(){this.isEnabled=!!this._getFirstEnabledCommand()}_getFirstEnabledCommand(){const e=this._childCommandsDefinitions.find((({command:e})=>e.isEnabled));return e&&e.command}}var a=s("./node_modules/lodash-es/isPlainObject.js"),c=s("./node_modules/lodash-es/cloneDeepWith.js"),l=s("./node_modules/lodash-es/isElement.js");class d{constructor(e,t){this._config={},t&&this.define(h(t)),e&&this._setObjectToTarget(this._config,e)}set(e,t){this._setToTarget(this._config,e,t)}define(e,t){this._setToTarget(this._config,e,t,!0)}get(e){return this._getFromSource(this._config,e)}*names(){for(const e of Object.keys(this._config))yield e}_setToTarget(e,t,s,o=!1){if((0,a.Z)(t))return void this._setObjectToTarget(e,t,o);const i=t.split(".");t=i.pop();for(const t of i)(0,a.Z)(e[t])||(e[t]={}),e=e[t];if((0,a.Z)(s))return(0,a.Z)(e[t])||(e[t]={}),e=e[t],void this._setObjectToTarget(e,s,o);o&&void 0!==e[t]||(e[t]=s)}_getFromSource(e,t){const s=t.split(".");t=s.pop();for(const t of s){if(!(0,a.Z)(e[t])){e=null;break}e=e[t]}return e?h(e[t]):void 0}_setObjectToTarget(e,t,s){Object.keys(t).forEach((o=>{this._setToTarget(e,o,t[o],s)}))}}function h(e){return(0,c.Z)(e,u)}function u(e){return(0,l.Z)(e)?e:void 0}var p=s("./packages/ckeditor5-utils/src/collection.ts"),g=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),m=s("./packages/ckeditor5-utils/src/emittermixin.ts"),f=s("./packages/ckeditor5-utils/src/mix.ts");class k{constructor(e,t=[],s=[]){this._context=e,this._plugins=new Map,this._availablePlugins=new Map;for(const e of t)e.pluginName&&this._availablePlugins.set(e.pluginName,e);this._contextPlugins=new Map;for(const[e,t]of s)this._contextPlugins.set(e,t),this._contextPlugins.set(t,e),e.pluginName&&this._availablePlugins.set(e.pluginName,e)}*[Symbol.iterator](){for(const e of this._plugins)"function"==typeof e[0]&&(yield e)}get(e){const t=this._plugins.get(e);if(!t){let t=e;throw"function"==typeof e&&(t=e.pluginName||e.name),new g.ZP("plugincollection-plugin-not-loaded",this._context,{plugin:t})}return t}has(e){return this._plugins.has(e)}init(e,t=[],s=[]){const o=this,i=this._context;!function e(t,s=new Set){t.forEach((t=>{a(t)&&(s.has(t)||(s.add(t),t.pluginName&&!o._availablePlugins.has(t.pluginName)&&o._availablePlugins.set(t.pluginName,t),t.requires&&e(t.requires,s)))}))}(e),h(e);const r=[...function e(t,s=new Set){return t.map((e=>a(e)?e:o._availablePlugins.get(e))).reduce(((t,o)=>s.has(o)?t:(s.add(o),o.requires&&(h(o.requires,o),e(o.requires,s).forEach((e=>t.add(e)))),t.add(o))),new Set)}(e.filter((e=>!l(e,t))))];!function(e,t){for(const s of t){if("function"!=typeof s)throw new g.ZP("plugincollection-replace-plugin-invalid-type",null,{pluginItem:s});const t=s.pluginName;if(!t)throw new g.ZP("plugincollection-replace-plugin-missing-name",null,{pluginItem:s});if(s.requires&&s.requires.length)throw new g.ZP("plugincollection-plugin-for-replacing-cannot-have-dependencies",null,{pluginName:t});const i=o._availablePlugins.get(t);if(!i)throw new g.ZP("plugincollection-plugin-for-replacing-not-exist",null,{pluginName:t});const r=e.indexOf(i);if(-1===r){if(o._contextPlugins.has(i))return;throw new g.ZP("plugincollection-plugin-for-replacing-not-loaded",null,{pluginName:t})}if(i.requires&&i.requires.length)throw new g.ZP("plugincollection-replaced-plugin-cannot-have-dependencies",null,{pluginName:t});e.splice(r,1,s),o._availablePlugins.set(t,s)}}(r,s);const n=function(e){return e.map((e=>{const t=o._contextPlugins.get(e)||new e(i);return o._add(e,t),t}))}(r);return u(n,"init").then((()=>u(n,"afterInit"))).then((()=>n));function a(e){return"function"==typeof e}function c(e){return a(e)&&e.isContextPlugin}function l(e,t){return t.some((t=>t===e||(d(e)===t||d(t)===e)))}function d(e){return a(e)?e.pluginName||e.name:e}function h(e,s=null){e.map((e=>a(e)?e:o._availablePlugins.get(e)||e)).forEach((e=>{!function(e,t){if(a(e))return;if(t)throw new g.ZP("plugincollection-soft-required",i,{missingPlugin:e,requiredBy:d(t)});throw new g.ZP("plugincollection-plugin-not-found",i,{plugin:e})}(e,s),function(e,t){if(!c(t))return;if(c(e))return;throw new g.ZP("plugincollection-context-required",i,{plugin:d(e),requiredBy:d(t)})}(e,s),function(e,s){if(!s)return;if(!l(e,t))return;throw new g.ZP("plugincollection-required",i,{plugin:d(e),requiredBy:d(s)})}(e,s)}))}function u(e,t){return e.reduce(((e,s)=>s[t]?o._contextPlugins.has(s)?e:e.then(s[t].bind(s)):e),Promise.resolve())}}destroy(){const e=[];for(const[,t]of this)"function"!=typeof t.destroy||this._contextPlugins.has(t)||e.push(t.destroy());return Promise.all(e)}_add(e,t){this._plugins.set(e,t);const s=e.pluginName;if(s){if(this._plugins.has(s))throw new g.ZP("plugincollection-plugin-name-conflict",null,{pluginName:s,plugin1:this._plugins.get(s).constructor,plugin2:e});this._plugins.set(s,t)}}}(0,f.Z)(k,m.ZP);var _=s("./packages/ckeditor5-utils/src/locale.ts");class b{constructor(e){this.config=new d(e,this.constructor.defaultConfig);const t=this.constructor.builtinPlugins;this.config.define("plugins",t),this.plugins=new k(this,t);const s=this.config.get("language")||{};this.locale=new _.Z({uiLanguage:"string"==typeof s?s:s.ui,contentLanguage:this.config.get("language.content")}),this.t=this.locale.t,this.editors=new p.Z,this._contextOwner=null}initPlugins(){const e=this.config.get("plugins")||[],t=this.config.get("substitutePlugins")||[];for(const s of e.concat(t)){if("function"!=typeof s)throw new g.ZP("context-initplugins-constructor-only",null,{Plugin:s});if(!0!==s.isContextPlugin)throw new g.ZP("context-initplugins-invalid-plugin",null,{Plugin:s})}return this.plugins.init(e,[],t)}destroy(){return Promise.all(Array.from(this.editors,(e=>e.destroy()))).then((()=>this.plugins.destroy()))}_addEditor(e,t){if(this._contextOwner)throw new g.ZP("context-addeditor-private-context");this.editors.add(e),t&&(this._contextOwner=e)}_removeEditor(e){return this.editors.has(e)&&this.editors.remove(e),this._contextOwner===e?this.destroy():Promise.resolve()}_getEditorConfig(){const e={};for(const t of this.config.names())["plugins","removePlugins","extraPlugins"].includes(t)||(e[t]=this.config.get(t));return e}static create(e){return new Promise((t=>{const s=new this(e);t(s.initPlugins().then((()=>s)))}))}}var w=s("./packages/ckeditor5-core/src/contextplugin.js"),v=s("./packages/ckeditor5-engine/src/controller/editingcontroller.js");class y{constructor(){this._commands=new Map}add(e,t){this._commands.set(e,t)}get(e){return this._commands.get(e)}execute(e,...t){const s=this.get(e);if(!s)throw new g.ZP("commandcollection-command-not-found",this,{commandName:e});return s.execute(...t)}*names(){yield*this._commands.keys()}*commands(){yield*this._commands.values()}[Symbol.iterator](){return this._commands[Symbol.iterator]()}destroy(){for(const e of this.commands())e.destroy()}}var Z=s("./packages/ckeditor5-engine/src/controller/datacontroller.js"),P=s("./packages/ckeditor5-engine/src/conversion/conversion.js"),x=s("./packages/ckeditor5-engine/src/model/model.js"),A=s("./packages/ckeditor5-utils/src/keystrokehandler.ts");class j extends A.Z{constructor(e){super(),this.editor=e}set(e,t,s={}){if("string"==typeof t){const e=t;t=(t,s)=>{this.editor.execute(e),s()}}super.set(e,t,s)}}var T=s("./packages/ckeditor5-utils/src/observablemixin.ts"),C=s("./packages/ckeditor5-engine/src/view/stylesmap.js");class E{constructor(e={}){const t=e.language||this.constructor.defaultConfig&&this.constructor.defaultConfig.language;this._context=e.context||new b({language:t}),this._context._addEditor(this,!e.context);const s=Array.from(this.constructor.builtinPlugins||[]);this.config=new d(e,this.constructor.defaultConfig),this.config.define("plugins",s),this.config.define(this._context._getEditorConfig()),this.plugins=new k(this,s,this._context.plugins),this.locale=this._context.locale,this.t=this.locale.t,this._readOnlyLocks=new Set,this.commands=new y,this.set("state","initializing"),this.once("ready",(()=>this.state="ready"),{priority:"high"}),this.once("destroy",(()=>this.state="destroyed"),{priority:"high"}),this.model=new x.Z;const o=new C.A;this.data=new Z.Z(this.model,o),this.editing=new v.Z(this.model,o),this.editing.view.document.bind("isReadOnly").to(this),this.conversion=new P.Z([this.editing.downcastDispatcher,this.data.downcastDispatcher],this.data.upcastDispatcher),this.conversion.addAlias("dataDowncast",this.data.downcastDispatcher),this.conversion.addAlias("editingDowncast",this.editing.downcastDispatcher),this.keystrokes=new j(this),this.keystrokes.listenTo(this.editing.view.document)}get isReadOnly(){return this._readOnlyLocks.size>0}set isReadOnly(e){throw new g.ZP("editor-isreadonly-has-no-setter")}enableReadOnlyMode(e){if("string"!=typeof e&&"symbol"!=typeof e)throw new g.ZP("editor-read-only-lock-id-invalid",null,{lockId:e});this._readOnlyLocks.has(e)||(this._readOnlyLocks.add(e),1===this._readOnlyLocks.size&&this.fire("change:isReadOnly","isReadOnly",!0,!1))}disableReadOnlyMode(e){if("string"!=typeof e&&"symbol"!=typeof e)throw new g.ZP("editor-read-only-lock-id-invalid",null,{lockId:e});this._readOnlyLocks.has(e)&&(this._readOnlyLocks.delete(e),0===this._readOnlyLocks.size&&this.fire("change:isReadOnly","isReadOnly",!1,!0))}initPlugins(){const e=this.config,t=e.get("plugins"),s=e.get("removePlugins")||[],o=e.get("extraPlugins")||[],i=e.get("substitutePlugins")||[];return this.plugins.init(t.concat(o),s,i)}destroy(){let e=Promise.resolve();return"initializing"==this.state&&(e=new Promise((e=>this.once("ready",e)))),e.then((()=>{this.fire("destroy"),this.stopListening(),this.commands.destroy()})).then((()=>this.plugins.destroy())).then((()=>{this.model.destroy(),this.data.destroy(),this.editing.destroy(),this.keystrokes.destroy()})).then((()=>this._context._removeEditor(this)))}execute(...e){try{return this.commands.execute(...e)}catch(e){g.ZP.rethrowUnexpectedError(e,this)}}focus(){this.editing.view.focus()}}(0,f.Z)(E,T.Z);class S{constructor(e){this.editor=e,this._components=new Map}*names(){for(const e of this._components.values())yield e.originalName}add(e,t){this._components.set(O(e),{callback:t,originalName:e})}create(e){if(!this.has(e))throw new g.ZP("componentfactory-item-missing",this,{name:e});return this._components.get(O(e)).callback(this.editor.locale)}has(e){return this._components.has(O(e))}}function O(e){return String(e).toLowerCase()}var R=s("./packages/ckeditor5-utils/src/focustracker.ts");class M{constructor(e){this.editor=e,this.componentFactory=new S(e),this.focusTracker=new R.Z,this.set("viewportOffset",this._readViewportOffsetFromConfig()),this._editableElementsMap=new Map,this.listenTo(e.editing.view.document,"layoutChanged",(()=>this.update()))}get element(){return null}update(){this.fire("update")}destroy(){this.stopListening(),this.focusTracker.destroy();for(const e of this._editableElementsMap.values())e.ckeditorInstance=null;this._editableElementsMap=new Map}setEditableElement(e,t){this._editableElementsMap.set(e,t),t.ckeditorInstance||(t.ckeditorInstance=this.editor)}getEditableElement(e="main"){return this._editableElementsMap.get(e)}getEditableElementsNames(){return this._editableElementsMap.keys()}get _editableElements(){return console.warn("editor-ui-deprecated-editable-elements: The EditorUI#_editableElements property has been deprecated and will be removed in the near future.",{editorUI:this}),this._editableElementsMap}_readViewportOffsetFromConfig(){const e=this.editor,t=e.config.get("ui.viewportOffset");if(t)return t;const s=e.config.get("toolbar.viewportTopOffset");return s?(console.warn("editor-ui-deprecated-viewport-offset-config: The `toolbar.vieportTopOffset` configuration option is deprecated. It will be removed from future CKEditor versions. Use `ui.viewportOffset.top` instead."),{top:s}):{top:0}}}(0,f.Z)(M,T.Z);var N=s("./node_modules/lodash-es/isFunction.js");function I(e){if(!(0,N.Z)(e.updateSourceElement))throw new g.ZP("attachtoform-missing-elementapi-interface",e);const t=e.sourceElement;if(t&&"textarea"===t.tagName.toLowerCase()&&t.form){let s;const o=t.form,i=()=>e.updateSourceElement();(0,N.Z)(o.submit)&&(s=o.submit,o.submit=()=>{i(),s.apply(o)}),o.addEventListener("submit",i),e.on("destroy",(()=>{o.removeEventListener("submit",i),s&&(o.submit=s)}))}}const V={setData(e){this.data.set(e)},getData(e){return this.data.get(e)}};var z=s("./packages/ckeditor5-utils/src/dom/setdatainelement.ts");const D={updateSourceElement(e=this.data.get()){if(!this.sourceElement)throw new g.ZP("editor-missing-sourceelement",this);const t=this.config.get("updateSourceElementOnDestroy"),s=this.sourceElement instanceof HTMLTextAreaElement;t||s?(0,z.Z)(this.sourceElement,e):(0,z.Z)(this.sourceElement,"")}};function B(e){const t=e.sourceElement;if(t){if(t.ckeditorInstance)throw new g.ZP("editor-source-element-already-used",e);t.ckeditorInstance=e,e.once("destroy",(()=>{delete t.ckeditorInstance}))}}var F=s("./packages/ckeditor5-core/src/pendingactions.js");var L=s("./packages/ckeditor5-core/theme/icons/pilcrow.svg");var W=s("./packages/ckeditor5-core/theme/icons/three-vertical-dots.svg");const q={cancel:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.591 10.177 4.243 4.242a1 1 0 0 1-1.415 1.415l-4.242-4.243-4.243 4.243a1 1 0 0 1-1.414-1.415l4.243-4.242L4.52 5.934A1 1 0 0 1 5.934 4.52l4.243 4.243 4.242-4.243a1 1 0 1 1 1.415 1.414l-4.243 4.243z"/></svg>',caption:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 16h9a1 1 0 0 1 0 2H2a1 1 0 0 1 0-2z"/><path d="M17 1a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h14zm0 1.5H3a.5.5 0 0 0-.492.41L2.5 3v9a.5.5 0 0 0 .41.492L3 12.5h14a.5.5 0 0 0 .492-.41L17.5 12V3a.5.5 0 0 0-.41-.492L17 2.5z" fill-opacity=".6"/></svg>',check:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.972 16.615a.997.997 0 0 1-.744-.292l-4.596-4.596a1 1 0 1 1 1.414-1.414l3.926 3.926 9.937-9.937a1 1 0 0 1 1.414 1.415L7.717 16.323a.997.997 0 0 1-.745.292z"/></svg>',cog:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.333 2 .19 2.263a5.899 5.899 0 0 1 1.458.604L14.714 3.4 16.6 5.286l-1.467 1.733c.263.452.468.942.605 1.46L18 8.666v2.666l-2.263.19a5.899 5.899 0 0 1-.604 1.458l1.467 1.733-1.886 1.886-1.733-1.467a5.899 5.899 0 0 1-1.46.605L11.334 18H8.667l-.19-2.263a5.899 5.899 0 0 1-1.458-.604L5.286 16.6 3.4 14.714l1.467-1.733a5.899 5.899 0 0 1-.604-1.458L2 11.333V8.667l2.262-.189a5.899 5.899 0 0 1 .605-1.459L3.4 5.286 5.286 3.4l1.733 1.467a5.899 5.899 0 0 1 1.46-.605L8.666 2h2.666zM10 6.267a3.733 3.733 0 1 0 0 7.466 3.733 3.733 0 0 0 0-7.466z"/></svg>',eraser:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m8.636 9.531-2.758 3.94a.5.5 0 0 0 .122.696l3.224 2.284h1.314l2.636-3.736L8.636 9.53zm.288 8.451L5.14 15.396a2 2 0 0 1-.491-2.786l6.673-9.53a2 2 0 0 1 2.785-.49l3.742 2.62a2 2 0 0 1 .491 2.785l-7.269 10.053-2.147-.066z"/><path d="M4 18h5.523v-1H4zm-2 0h1v-1H2z"/></svg>',lowVision:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M5.085 6.22 2.943 4.078a.75.75 0 1 1 1.06-1.06l2.592 2.59A11.094 11.094 0 0 1 10 5.068c4.738 0 8.578 3.101 8.578 5.083 0 1.197-1.401 2.803-3.555 3.887l1.714 1.713a.75.75 0 0 1-.09 1.138.488.488 0 0 1-.15.084.75.75 0 0 1-.821-.16L6.17 7.304c-.258.11-.51.233-.757.365l6.239 6.24-.006.005.78.78c-.388.094-.78.166-1.174.215l-1.11-1.11h.011L4.55 8.197a7.2 7.2 0 0 0-.665.514l-.112.098 4.897 4.897-.005.006 1.276 1.276a10.164 10.164 0 0 1-1.477-.117l-.479-.479-.009.009-4.863-4.863-.022.031a2.563 2.563 0 0 0-.124.2c-.043.077-.08.158-.108.241a.534.534 0 0 0-.028.133.29.29 0 0 0 .008.072.927.927 0 0 0 .082.226c.067.133.145.26.234.379l3.242 3.365.025.01.59.623c-3.265-.918-5.59-3.155-5.59-4.668 0-1.194 1.448-2.838 3.663-3.93zm7.07.531a4.632 4.632 0 0 1 1.108 5.992l.345.344.046-.018a9.313 9.313 0 0 0 2-1.112c.256-.187.5-.392.727-.613.137-.134.27-.277.392-.431.072-.091.141-.185.203-.286.057-.093.107-.19.148-.292a.72.72 0 0 0 .036-.12.29.29 0 0 0 .008-.072.492.492 0 0 0-.028-.133.999.999 0 0 0-.036-.096 2.165 2.165 0 0 0-.071-.145 2.917 2.917 0 0 0-.125-.2 3.592 3.592 0 0 0-.263-.335 5.444 5.444 0 0 0-.53-.523 7.955 7.955 0 0 0-1.054-.768 9.766 9.766 0 0 0-1.879-.891c-.337-.118-.68-.219-1.027-.301zm-2.85.21-.069.002a.508.508 0 0 0-.254.097.496.496 0 0 0-.104.679.498.498 0 0 0 .326.199l.045.005c.091.003.181.003.272.012a2.45 2.45 0 0 1 2.017 1.513c.024.061.043.125.069.185a.494.494 0 0 0 .45.287h.008a.496.496 0 0 0 .35-.158.482.482 0 0 0 .13-.335.638.638 0 0 0-.048-.219 3.379 3.379 0 0 0-.36-.723 3.438 3.438 0 0 0-2.791-1.543l-.028-.001h-.013z"/></svg>',image:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.91 10.54c.26-.23.64-.21.88.03l3.36 3.14 2.23-2.06a.64.64 0 0 1 .87 0l2.52 2.97V4.5H3.2v10.12l3.71-4.08zm10.27-7.51c.6 0 1.09.47 1.09 1.05v11.84c0 .59-.49 1.06-1.09 1.06H2.79c-.6 0-1.09-.47-1.09-1.06V4.08c0-.58.49-1.05 1.1-1.05h14.38zm-5.22 5.56a1.96 1.96 0 1 1 3.4-1.96 1.96 1.96 0 0 1-3.4 1.96z"/></svg>',alignBottom:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m9.239 13.938-2.88-1.663a.75.75 0 0 1 .75-1.3L9 12.067V4.75a.75.75 0 1 1 1.5 0v7.318l1.89-1.093a.75.75 0 0 1 .75 1.3l-2.879 1.663a.752.752 0 0 1-.511.187.752.752 0 0 1-.511-.187zM4.25 17a.75.75 0 1 1 0-1.5h10.5a.75.75 0 0 1 0 1.5H4.25z"/></svg>',alignMiddle:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M9.75 11.875a.752.752 0 0 1 .508.184l2.883 1.666a.75.75 0 0 1-.659 1.344l-.091-.044-1.892-1.093.001 4.318a.75.75 0 1 1-1.5 0v-4.317l-1.89 1.092a.75.75 0 0 1-.75-1.3l2.879-1.663a.752.752 0 0 1 .51-.187zM15.25 9a.75.75 0 1 1 0 1.5H4.75a.75.75 0 1 1 0-1.5h10.5zM9.75.375a.75.75 0 0 1 .75.75v4.318l1.89-1.093.092-.045a.75.75 0 0 1 .659 1.344l-2.883 1.667a.752.752 0 0 1-.508.184.752.752 0 0 1-.511-.187L6.359 5.65a.75.75 0 0 1 .75-1.299L9 5.442V1.125a.75.75 0 0 1 .75-.75z"/></svg>',alignTop:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m10.261 7.062 2.88 1.663a.75.75 0 0 1-.75 1.3L10.5 8.933v7.317a.75.75 0 1 1-1.5 0V8.932l-1.89 1.093a.75.75 0 0 1-.75-1.3l2.879-1.663a.752.752 0 0 1 .511-.187.752.752 0 0 1 .511.187zM15.25 4a.75.75 0 1 1 0 1.5H4.75a.75.75 0 0 1 0-1.5h10.5z"/></svg>',alignLeft:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z"/></svg>',alignCenter:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm2.286 4c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75z"/></svg>',alignRight:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M18 3.75a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 8a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 4a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75zm0-8a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75z"/></svg>',alignJustify:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z"/></svg>',objectLeft:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm11.5 9H18v1.5h-4.5zm0-3H18v1.5h-4.5zm0-3H18v1.5h-4.5zM2 15h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',objectCenter:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M15.003 7v5.5a1 1 0 0 1-1 1H5.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H6.5V12h6.997V7.5z"/></svg>',objectRight:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2zm0-9h5v1.5H2zm0 3h5v1.5H2zm0 3h5v1.5H2z"/><path d="M18.003 7v5.5a1 1 0 0 1-1 1H8.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H9.5V12h6.997V7.5z"/></svg>',objectFullWidth:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M18 7v5.5a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1zm-1.505.5H3.504V12h12.991V7.5z"/></svg>',objectInline:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm11.5 9H18v1.5h-4.5zM2 15h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',objectBlockLeft:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',objectBlockRight:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M18.003 7v5.5a1 1 0 0 1-1 1H8.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H9.5V12h6.997V7.5z"/></svg>',objectSizeFull:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M18.095 2H1.905C.853 2 0 2.895 0 4v12c0 1.105.853 2 1.905 2h16.19C19.147 18 20 17.105 20 16V4c0-1.105-.853-2-1.905-2zm0 1.5c.263 0 .476.224.476.5v12c0 .276-.213.5-.476.5H1.905a.489.489 0 0 1-.476-.5V4c0-.276.213-.5.476-.5h16.19z"/></svg>',objectSizeLarge:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M13 6H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5V8a.5.5 0 0 1 .5-.5h11z"/></svg>',objectSizeSmall:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M7 10H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h5a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h5z"/></svg>',objectSizeMedium:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M10 8H2a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-6a.5.5 0 0 1 .5-.5h8z"/></svg>',pencil:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m7.3 17.37-.061.088a1.518 1.518 0 0 1-.934.535l-4.178.663-.806-4.153a1.495 1.495 0 0 1 .187-1.058l.056-.086L8.77 2.639c.958-1.351 2.803-1.076 4.296-.03 1.497 1.047 2.387 2.693 1.433 4.055L7.3 17.37zM9.14 4.728l-5.545 8.346 3.277 2.294 5.544-8.346L9.14 4.728zM6.07 16.512l-3.276-2.295.53 2.73 2.746-.435zM9.994 3.506 13.271 5.8c.316-.452-.16-1.333-1.065-1.966-.905-.634-1.895-.78-2.212-.328zM8 18.5 9.375 17H19v1.5H8z"/></svg>',pilcrow:L.Z,quote:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 10.423a6.5 6.5 0 0 1 6.056-6.408l.038.67C6.448 5.423 5.354 7.663 5.22 10H9c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574zm8 0a6.5 6.5 0 0 1 6.056-6.408l.038.67c-2.646.739-3.74 2.979-3.873 5.315H17c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574z"/></svg>',threeVerticalDots:W.Z}},"./src/engine.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{ClickObserver:()=>K,Conversion:()=>_.Z,DataController:()=>k.Z,DocumentFragment:()=>O.Z,DocumentSelection:()=>P.Z,DomConverter:()=>N.Z,DomEventData:()=>oe.Z,DomEventObserver:()=>U.Z,DowncastWriter:()=>J.Z,EditingController:()=>f.Z,Element:()=>E.Z,History:()=>R.Z,HtmlDataProcessor:()=>b.Z,InsertOperation:()=>w.Z,LivePosition:()=>j.Z,LiveRange:()=>A.Z,MarkerOperation:()=>v.Z,Matcher:()=>se.Z,Model:()=>T.Z,MouseObserver:()=>G.Z,Observer:()=>H.Z,OperationFactory:()=>y.Z,Position:()=>S.ZP,Range:()=>x.Z,Renderer:()=>I.Z,StylesProcessor:()=>ie.A,Text:()=>M.Z,TreeWalker:()=>C.Z,UpcastWriter:()=>te,ViewAttributeElement:()=>F.Z,ViewContainerElement:()=>B.Z,ViewDocument:()=>V.Z,ViewDocumentFragment:()=>$.Z,ViewElement:()=>D.Z,ViewEmptyElement:()=>L.Z,ViewRawElement:()=>W.Z,ViewText:()=>z.Z,ViewUIElement:()=>q.Z,addBackgroundRules:()=>Se,addBorderRules:()=>Re,addMarginRules:()=>qe,addPaddingRules:()=>$e,disablePlaceholder:()=>l,enablePlaceholder:()=>c,getBoxSidesShorthandValue:()=>Te,getBoxSidesValueReducer:()=>je,getBoxSidesValues:()=>Ae,getFillerOffset:()=>B.Y,getPositionShorthandNormalizer:()=>Ce,getShorthandValues:()=>Ee,hidePlaceholder:()=>h,isAttachment:()=>Ze,isColor:()=>he,isLength:()=>me,isLineStyle:()=>pe,isPercentage:()=>ke,isPosition:()=>ve,isRepeat:()=>be,isURL:()=>xe,needsPlaceholder:()=>u,showPlaceholder:()=>d,transformSets:()=>Z.R});var o=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),i=s.n(o),r=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-engine/theme/placeholder.css"),n={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i()(r.Z,n);r.Z.locals;const a=new WeakMap;function c(e){const{view:t,element:s,text:o,isDirectHost:i=!0,keepOnFocus:r=!1}=e,n=t.document;a.has(n)||(a.set(n,new Map),n.registerPostFixer((e=>p(n,e)))),a.get(n).set(s,{text:o,isDirectHost:i,keepOnFocus:r,hostElement:i?s:null}),t.change((e=>p(n,e)))}function l(e,t){const s=t.document;e.change((e=>{if(!a.has(s))return;const o=a.get(s),i=o.get(t);e.removeAttribute("data-placeholder",i.hostElement),h(e,i.hostElement),o.delete(t)}))}function d(e,t){return!t.hasClass("ck-placeholder")&&(e.addClass("ck-placeholder",t),!0)}function h(e,t){return!!t.hasClass("ck-placeholder")&&(e.removeClass("ck-placeholder",t),!0)}function u(e,t){if(!e.isAttached())return!1;const s=Array.from(e.getChildren()).some((e=>!e.is("uiElement")));if(s)return!1;if(t)return!0;const o=e.document;if(!o.isFocused)return!0;const i=o.selection.anchor;return i&&i.parent!==e}function p(e,t){const s=a.get(e),o=[];let i=!1;for(const[e,r]of s)r.isDirectHost&&(o.push(e),g(t,e,r)&&(i=!0));for(const[e,r]of s){if(r.isDirectHost)continue;const s=m(e);s&&(o.includes(s)||(r.hostElement=s,g(t,e,r)&&(i=!0)))}return i}function g(e,t,s){const{text:o,isDirectHost:i,hostElement:r}=s;let n=!1;r.getAttribute("data-placeholder")!==o&&(e.setAttribute("data-placeholder",o,r),n=!0);return(i||1==t.childCount)&&u(r,s.keepOnFocus)?d(e,r)&&(n=!0):h(e,r)&&(n=!0),n}function m(e){if(e.childCount){const t=e.getChild(0);if(t.is("element")&&!t.is("uiElement")&&!t.is("attributeElement"))return t}return null}var f=s("./packages/ckeditor5-engine/src/controller/editingcontroller.js"),k=s("./packages/ckeditor5-engine/src/controller/datacontroller.js"),_=s("./packages/ckeditor5-engine/src/conversion/conversion.js"),b=s("./packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.js"),w=s("./packages/ckeditor5-engine/src/model/operation/insertoperation.js"),v=s("./packages/ckeditor5-engine/src/model/operation/markeroperation.js"),y=s("./packages/ckeditor5-engine/src/model/operation/operationfactory.js"),Z=s("./packages/ckeditor5-engine/src/model/operation/transform.js"),P=s("./packages/ckeditor5-engine/src/model/documentselection.js"),x=s("./packages/ckeditor5-engine/src/model/range.js"),A=s("./packages/ckeditor5-engine/src/model/liverange.js"),j=s("./packages/ckeditor5-engine/src/model/liveposition.js"),T=s("./packages/ckeditor5-engine/src/model/model.js"),C=s("./packages/ckeditor5-engine/src/model/treewalker.js"),E=s("./packages/ckeditor5-engine/src/model/element.js"),S=s("./packages/ckeditor5-engine/src/model/position.js"),O=s("./packages/ckeditor5-engine/src/model/documentfragment.js"),R=s("./packages/ckeditor5-engine/src/model/history.js"),M=s("./packages/ckeditor5-engine/src/model/text.js"),N=s("./packages/ckeditor5-engine/src/view/domconverter.js"),I=s("./packages/ckeditor5-engine/src/view/renderer.js"),V=s("./packages/ckeditor5-engine/src/view/document.js"),z=s("./packages/ckeditor5-engine/src/view/text.js"),D=s("./packages/ckeditor5-engine/src/view/element.js"),B=s("./packages/ckeditor5-engine/src/view/containerelement.js"),F=s("./packages/ckeditor5-engine/src/view/attributeelement.js"),L=s("./packages/ckeditor5-engine/src/view/emptyelement.js"),W=s("./packages/ckeditor5-engine/src/view/rawelement.js"),q=s("./packages/ckeditor5-engine/src/view/uielement.js"),$=s("./packages/ckeditor5-engine/src/view/documentfragment.js"),H=s("./packages/ckeditor5-engine/src/view/observer/observer.js"),U=s("./packages/ckeditor5-engine/src/view/observer/domeventobserver.js");class K extends U.Z{constructor(e){super(e),this.domEventType="click"}onDomEvent(e){this.fire(e.type,e)}}var G=s("./packages/ckeditor5-engine/src/view/observer/mouseobserver.js"),J=s("./packages/ckeditor5-engine/src/view/downcastwriter.js"),X=s("./node_modules/lodash-es/isPlainObject.js"),Q=s("./packages/ckeditor5-engine/src/view/position.js"),Y=s("./packages/ckeditor5-engine/src/view/range.js"),ee=s("./packages/ckeditor5-engine/src/view/selection.js");class te{constructor(e){this.document=e}createDocumentFragment(e){return new $.Z(this.document,e)}createElement(e,t,s){return new D.Z(this.document,e,t,s)}createText(e){return new z.Z(this.document,e)}clone(e,t=!1){return e._clone(t)}appendChild(e,t){return t._appendChild(e)}insertChild(e,t,s){return s._insertChild(e,t)}removeChildren(e,t,s){return s._removeChildren(e,t)}remove(e){const t=e.parent;return t?this.removeChildren(t.getChildIndex(e),1,t):[]}replace(e,t){const s=e.parent;if(s){const o=s.getChildIndex(e);return this.removeChildren(o,1,s),this.insertChild(o,t,s),!0}return!1}unwrapElement(e){const t=e.parent;if(t){const s=t.getChildIndex(e);this.remove(e),this.insertChild(s,e.getChildren(),t)}}rename(e,t){const s=new D.Z(this.document,e,t.getAttributes(),t.getChildren());return this.replace(t,s)?s:null}setAttribute(e,t,s){s._setAttribute(e,t)}removeAttribute(e,t){t._removeAttribute(e)}addClass(e,t){t._addClass(e)}removeClass(e,t){t._removeClass(e)}setStyle(e,t,s){(0,X.Z)(e)&&void 0===s&&(s=t),s._setStyle(e,t)}removeStyle(e,t){t._removeStyle(e)}setCustomProperty(e,t,s){s._setCustomProperty(e,t)}removeCustomProperty(e,t){return t._removeCustomProperty(e)}createPositionAt(e,t){return Q.Z._createAt(e,t)}createPositionAfter(e){return Q.Z._createAfter(e)}createPositionBefore(e){return Q.Z._createBefore(e)}createRange(e,t){return new Y.Z(e,t)}createRangeOn(e){return Y.Z._createOn(e)}createRangeIn(e){return Y.Z._createIn(e)}createSelection(e,t,s){return new ee.Z(e,t,s)}}var se=s("./packages/ckeditor5-engine/src/view/matcher.js"),oe=s("./packages/ckeditor5-engine/src/view/observer/domeventdata.js"),ie=s("./packages/ckeditor5-engine/src/view/stylesmap.js");const re=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,ne=/^rgb\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}[0-9]{1,3}[ %]?\)$/i,ae=/^rgba\([ ]?([0-9]{1,3}[ %]?,[ ]?){3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,ce=/^hsl\([ ]?([0-9]{1,3}[ %]?[,]?[ ]*){3}(1|[0-9]+%|[0]?\.?[0-9]+)?\)$/i,le=/^hsla\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,de=new Set(["black","silver","gray","white","maroon","red","purple","fuchsia","green","lime","olive","yellow","navy","blue","teal","aqua","orange","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","magenta","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","activeborder","activecaption","appworkspace","background","buttonface","buttonhighlight","buttonshadow","buttontext","captiontext","graytext","highlight","highlighttext","inactiveborder","inactivecaption","inactivecaptiontext","infobackground","infotext","menu","menutext","scrollbar","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","window","windowframe","windowtext","rebeccapurple","currentcolor","transparent"]);function he(e){return e.startsWith("#")?re.test(e):e.startsWith("rgb")?ne.test(e)||ae.test(e):e.startsWith("hsl")?ce.test(e)||le.test(e):de.has(e.toLowerCase())}const ue=["none","hidden","dotted","dashed","solid","double","groove","ridge","inset","outset"];function pe(e){return ue.includes(e)}const ge=/^([+-]?[0-9]*([.][0-9]+)?(px|cm|mm|in|pc|pt|ch|em|ex|rem|vh|vw|vmin|vmax)|0)$/;function me(e){return ge.test(e)}const fe=/^[+-]?[0-9]*([.][0-9]+)?%$/;function ke(e){return fe.test(e)}const _e=["repeat-x","repeat-y","repeat","space","round","no-repeat"];function be(e){return _e.includes(e)}const we=["center","top","bottom","left","right"];function ve(e){return we.includes(e)}const ye=["fixed","scroll","local"];function Ze(e){return ye.includes(e)}const Pe=/^url\(/;function xe(e){return Pe.test(e)}function Ae(e=""){if(""===e)return{top:void 0,right:void 0,bottom:void 0,left:void 0};const t=Ee(e),s=t[0],o=t[2]||s,i=t[1]||s;return{top:s,bottom:o,right:i,left:t[3]||i}}function je(e){return t=>{const{top:s,right:o,bottom:i,left:r}=t,n=[];return[s,o,r,i].every((e=>!!e))?n.push([e,Te(t)]):(s&&n.push([e+"-top",s]),o&&n.push([e+"-right",o]),i&&n.push([e+"-bottom",i]),r&&n.push([e+"-left",r])),n}}function Te({top:e,right:t,bottom:s,left:o}){const i=[];return o!==t?i.push(e,t,s,o):s!==e?i.push(e,t,s):t!==e?i.push(e,t):i.push(e),i.join(" ")}function Ce(e){return t=>({path:e,value:Ae(t)})}function Ee(e){return e.replace(/, /g,",").split(" ").map((e=>e.replace(/,/g,", ")))}function Se(e){e.setNormalizer("background",Oe),e.setNormalizer("background-color",(e=>({path:"background.color",value:e}))),e.setReducer("background",(e=>{const t=[];return t.push(["background-color",e.color]),t})),e.setStyleRelation("background",["background-color"])}function Oe(e){const t={},s=Ee(e);for(const e of s)be(e)?(t.repeat=t.repeat||[],t.repeat.push(e)):ve(e)?(t.position=t.position||[],t.position.push(e)):Ze(e)?t.attachment=e:he(e)?t.color=e:xe(e)&&(t.image=e);return{path:"background",value:t}}function Re(e){e.setNormalizer("border",Me),e.setNormalizer("border-top",Ne("top")),e.setNormalizer("border-right",Ne("right")),e.setNormalizer("border-bottom",Ne("bottom")),e.setNormalizer("border-left",Ne("left")),e.setNormalizer("border-color",Ie("color")),e.setNormalizer("border-width",Ie("width")),e.setNormalizer("border-style",Ie("style")),e.setNormalizer("border-top-color",ze("color","top")),e.setNormalizer("border-top-style",ze("style","top")),e.setNormalizer("border-top-width",ze("width","top")),e.setNormalizer("border-right-color",ze("color","right")),e.setNormalizer("border-right-style",ze("style","right")),e.setNormalizer("border-right-width",ze("width","right")),e.setNormalizer("border-bottom-color",ze("color","bottom")),e.setNormalizer("border-bottom-style",ze("style","bottom")),e.setNormalizer("border-bottom-width",ze("width","bottom")),e.setNormalizer("border-left-color",ze("color","left")),e.setNormalizer("border-left-style",ze("style","left")),e.setNormalizer("border-left-width",ze("width","left")),e.setExtractor("border-top",De("top")),e.setExtractor("border-right",De("right")),e.setExtractor("border-bottom",De("bottom")),e.setExtractor("border-left",De("left")),e.setExtractor("border-top-color","border.color.top"),e.setExtractor("border-right-color","border.color.right"),e.setExtractor("border-bottom-color","border.color.bottom"),e.setExtractor("border-left-color","border.color.left"),e.setExtractor("border-top-width","border.width.top"),e.setExtractor("border-right-width","border.width.right"),e.setExtractor("border-bottom-width","border.width.bottom"),e.setExtractor("border-left-width","border.width.left"),e.setExtractor("border-top-style","border.style.top"),e.setExtractor("border-right-style","border.style.right"),e.setExtractor("border-bottom-style","border.style.bottom"),e.setExtractor("border-left-style","border.style.left"),e.setReducer("border-color",je("border-color")),e.setReducer("border-style",je("border-style")),e.setReducer("border-width",je("border-width")),e.setReducer("border-top",Le("top")),e.setReducer("border-right",Le("right")),e.setReducer("border-bottom",Le("bottom")),e.setReducer("border-left",Le("left")),e.setReducer("border",function(){return t=>{const s=Be(t,"top"),o=Be(t,"right"),i=Be(t,"bottom"),r=Be(t,"left"),n=[s,o,i,r],a={width:e(n,"width"),style:e(n,"style"),color:e(n,"color")},c=We(a,"all");if(c.length)return c;const l=Object.entries(a).reduce(((e,[t,s])=>(s&&(e.push([`border-${t}`,s]),n.forEach((e=>e[t]=null))),e)),[]);return[...l,...We(s,"top"),...We(o,"right"),...We(i,"bottom"),...We(r,"left")]};function e(e,t){return e.map((e=>e[t])).reduce(((e,t)=>e==t?e:null))}}()),e.setStyleRelation("border",["border-color","border-style","border-width","border-top","border-right","border-bottom","border-left","border-top-color","border-right-color","border-bottom-color","border-left-color","border-top-style","border-right-style","border-bottom-style","border-left-style","border-top-width","border-right-width","border-bottom-width","border-left-width"]),e.setStyleRelation("border-color",["border-top-color","border-right-color","border-bottom-color","border-left-color"]),e.setStyleRelation("border-style",["border-top-style","border-right-style","border-bottom-style","border-left-style"]),e.setStyleRelation("border-width",["border-top-width","border-right-width","border-bottom-width","border-left-width"]),e.setStyleRelation("border-top",["border-top-color","border-top-style","border-top-width"]),e.setStyleRelation("border-right",["border-right-color","border-right-style","border-right-width"]),e.setStyleRelation("border-bottom",["border-bottom-color","border-bottom-style","border-bottom-width"]),e.setStyleRelation("border-left",["border-left-color","border-left-style","border-left-width"])}function Me(e){const{color:t,style:s,width:o}=Fe(e);return{path:"border",value:{color:Ae(t),style:Ae(s),width:Ae(o)}}}function Ne(e){return t=>{const{color:s,style:o,width:i}=Fe(t),r={};return void 0!==s&&(r.color={[e]:s}),void 0!==o&&(r.style={[e]:o}),void 0!==i&&(r.width={[e]:i}),{path:"border",value:r}}}function Ie(e){return t=>({path:"border",value:Ve(t,e)})}function Ve(e,t){return{[t]:Ae(e)}}function ze(e,t){return s=>({path:"border",value:{[e]:{[t]:s}}})}function De(e){return(t,s)=>{if(s.border)return Be(s.border,e)}}function Be(e,t){const s={};return e.width&&e.width[t]&&(s.width=e.width[t]),e.style&&e.style[t]&&(s.style=e.style[t]),e.color&&e.color[t]&&(s.color=e.color[t]),s}function Fe(e){const t={},s=Ee(e);for(const e of s)me(e)||/thin|medium|thick/.test(e)?t.width=e:pe(e)?t.style=e:t.color=e;return t}function Le(e){return t=>We(t,e)}function We(e,t){const s=[];if(e&&e.width&&s.push("width"),e&&e.style&&s.push("style"),e&&e.color&&s.push("color"),3==s.length){const o=s.map((t=>e[t])).join(" ");return["all"==t?["border",o]:[`border-${t}`,o]]}return"all"==t?[]:s.map((s=>[`border-${t}-${s}`,e[s]]))}function qe(e){e.setNormalizer("margin",Ce("margin")),e.setNormalizer("margin-top",(e=>({path:"margin.top",value:e}))),e.setNormalizer("margin-right",(e=>({path:"margin.right",value:e}))),e.setNormalizer("margin-bottom",(e=>({path:"margin.bottom",value:e}))),e.setNormalizer("margin-left",(e=>({path:"margin.left",value:e}))),e.setReducer("margin",je("margin")),e.setStyleRelation("margin",["margin-top","margin-right","margin-bottom","margin-left"])}function $e(e){e.setNormalizer("padding",Ce("padding")),e.setNormalizer("padding-top",(e=>({path:"padding.top",value:e}))),e.setNormalizer("padding-right",(e=>({path:"padding.right",value:e}))),e.setNormalizer("padding-bottom",(e=>({path:"padding.bottom",value:e}))),e.setNormalizer("padding-left",(e=>({path:"padding.left",value:e}))),e.setReducer("padding",je("padding")),e.setStyleRelation("padding",["padding-top","padding-right","padding-bottom","padding-left"])}},"./src/enter.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Enter:()=>o.Z,ShiftEnter:()=>h});var o=s("./packages/ckeditor5-enter/src/enter.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-enter/src/utils.js");class n extends i.Z{execute(){const e=this.editor.model,t=e.document;e.change((s=>{!function(e,t,s){const o=s.isCollapsed,i=s.getFirstRange(),n=i.start.parent,c=i.end.parent,l=n==c;if(o){const o=(0,r.G)(e.schema,s.getAttributes());a(e,t,i.end),t.removeSelectionAttribute(s.getAttributeKeys()),t.setSelectionAttribute(o)}else{const o=!(i.start.isAtStart&&i.end.isAtEnd);e.deleteContent(s,{leaveUnmerged:o}),l?a(e,t,s.focus):o&&t.setSelection(c,0)}}(e,s,t.selection),this.fire("afterExecute",{writer:s})}))}refresh(){const e=this.editor.model,t=e.document;this.isEnabled=function(e,t){if(t.rangeCount>1)return!1;const s=t.anchor;if(!s||!e.checkChild(s,"softBreak"))return!1;const o=t.getFirstRange(),i=o.start.parent,r=o.end.parent;if((c(i,e)||c(r,e))&&i!==r)return!1;return!0}(e.schema,t.selection)}}function a(e,t,s){const o=t.createElement("softBreak");e.insertContent(o,s),t.setSelection(o,"after")}function c(e,t){return!e.is("rootElement")&&(t.isLimit(e)||c(e.parent,t))}var l=s("./packages/ckeditor5-enter/src/enterobserver.js"),d=s("./packages/ckeditor5-core/src/plugin.js");class h extends d.Z{static get pluginName(){return"ShiftEnter"}init(){const e=this.editor,t=e.model.schema,s=e.conversion,o=e.editing.view,i=o.document;t.register("softBreak",{allowWhere:"$text",isInline:!0}),s.for("upcast").elementToElement({model:"softBreak",view:"br"}),s.for("downcast").elementToElement({model:"softBreak",view:(e,{writer:t})=>t.createEmptyElement("br")}),o.addObserver(l.Z),e.commands.add("shiftEnter",new n(e)),this.listenTo(i,"enter",((t,s)=>{s.preventDefault(),s.isSoft&&(e.execute("shiftEnter"),o.scrollToTheSelection())}),{priority:"low"})}}},"./src/paragraph.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Paragraph:()=>l,ParagraphButtonUI:()=>h});var o=s("./packages/ckeditor5-core/src/command.js"),i=s("./packages/ckeditor5-utils/src/first.ts");class r extends o.Z{refresh(){const e=this.editor.model,t=e.document,s=(0,i.Z)(t.selection.getSelectedBlocks());this.value=!!s&&s.is("element","paragraph"),this.isEnabled=!!s&&n(s,e.schema)}execute(e={}){const t=this.editor.model,s=t.document;t.change((o=>{const i=(e.selection||s.selection).getSelectedBlocks();for(const e of i)!e.is("element","paragraph")&&n(e,t.schema)&&o.rename(e,"paragraph")}))}}function n(e,t){return t.checkChild(e.parent,"paragraph")&&!t.isObject(e)}class a extends o.Z{execute(e){const t=this.editor.model,s=e.attributes;let o=e.position;t.change((e=>{const i=e.createElement("paragraph");if(s&&t.schema.setAllowedAttributes(i,s,e),!t.schema.checkChild(o.parent,i)){const s=t.schema.findAllowedParent(o,i);if(!s)return;o=e.split(o,s).position}t.insertContent(i,o),e.setSelection(i,"in")}))}}var c=s("./packages/ckeditor5-core/src/plugin.js");class l extends c.Z{static get pluginName(){return"Paragraph"}init(){const e=this.editor,t=e.model;e.commands.add("paragraph",new r(e)),e.commands.add("insertParagraph",new a(e)),t.schema.register("paragraph",{inheritAllFrom:"$block"}),e.conversion.elementToElement({model:"paragraph",view:"p"}),e.conversion.for("upcast").elementToElement({model:(e,{writer:t})=>l.paragraphLikeElements.has(e.name)?e.isEmpty?null:t.createElement("paragraph"):null,view:/.+/,converterPriority:"low"})}}l.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]);var d=s("./packages/ckeditor5-ui/src/button/buttonview.js");class h extends c.Z{init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("paragraph",(s=>{const o=new d.Z(s),i=e.commands.get("paragraph");return o.label=t("Paragraph"),o.icon='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10.5 5.5H7v5h3.5a2.5 2.5 0 1 0 0-5zM5 3h6.5v.025a5 5 0 0 1 0 9.95V13H7v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"/></svg>',o.tooltip=!0,o.isToggleable=!0,o.bind("isEnabled").to(i),o.bind("isOn").to(i,"value"),o.on("execute",(()=>{e.execute("paragraph")})),o}))}}},"./src/select-all.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{SelectAll:()=>u,SelectAllEditing:()=>l,SelectAllUI:()=>h});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-utils/src/keyboard.ts"),r=s("./packages/ckeditor5-core/src/command.js");class n extends r.Z{constructor(e){super(e),this.affectsData=!1}execute(){const e=this.editor.model,t=e.document.selection;let s=e.schema.getLimitElement(t);if(t.containsEntireContent(s)||!a(e.schema,s))do{if(s=s.parent,!s)return}while(!a(e.schema,s));e.change((e=>{e.setSelection(s,"in")}))}}function a(e,t){return e.isLimit(t)&&(e.checkChild(t,"$text")||e.checkChild(t,"paragraph"))}const c=(0,i.Zz)("Ctrl+A");class l extends o.Z{static get pluginName(){return"SelectAllEditing"}init(){const e=this.editor,t=e.editing.view.document;e.commands.add("selectAll",new n(e)),this.listenTo(t,"keydown",((t,s)=>{(0,i.Cq)(s)===c&&(e.execute("selectAll"),s.preventDefault())}))}}var d=s("./packages/ckeditor5-ui/src/button/buttonview.js");class h extends o.Z{static get pluginName(){return"SelectAllUI"}init(){const e=this.editor;e.ui.componentFactory.add("selectAll",(t=>{const s=e.commands.get("selectAll"),o=new d.Z(t),i=t.t;return o.set({label:i("Select all"),icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M.75 15.5a.75.75 0 0 1 .75.75V18l.008.09A.5.5 0 0 0 2 18.5h1.75a.75.75 0 1 1 0 1.5H1.5l-.144-.007a1.5 1.5 0 0 1-1.35-1.349L0 18.5v-2.25a.75.75 0 0 1 .75-.75zm18.5 0a.75.75 0 0 1 .75.75v2.25l-.007.144a1.5 1.5 0 0 1-1.349 1.35L18.5 20h-2.25a.75.75 0 1 1 0-1.5H18a.5.5 0 0 0 .492-.41L18.5 18v-1.75a.75.75 0 0 1 .75-.75zm-10.45 3c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2H7.2a.2.2 0 0 1-.2-.2v-1.1c0-.11.09-.2.2-.2h1.6zm4 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2h-1.6a.2.2 0 0 1-.2-.2v-1.1c0-.11.09-.2.2-.2h1.6zm.45-5.5a.75.75 0 1 1 0 1.5h-8.5a.75.75 0 1 1 0-1.5h8.5zM1.3 11c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2H.2a.2.2 0 0 1-.2-.2v-1.6c0-.11.09-.2.2-.2h1.1zm18.5 0c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2h-1.1a.2.2 0 0 1-.2-.2v-1.6c0-.11.09-.2.2-.2h1.1zm-4.55-2a.75.75 0 1 1 0 1.5H4.75a.75.75 0 1 1 0-1.5h10.5zM1.3 7c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2H.2a.2.2 0 0 1-.2-.2V7.2c0-.11.09-.2.2-.2h1.1zm18.5 0c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2h-1.1a.2.2 0 0 1-.2-.2V7.2c0-.11.09-.2.2-.2h1.1zm-4.55-2a.75.75 0 1 1 0 1.5h-2.5a.75.75 0 1 1 0-1.5h2.5zm-5 0a.75.75 0 1 1 0 1.5h-5.5a.75.75 0 0 1 0-1.5h5.5zm-6.5-5a.75.75 0 0 1 0 1.5H2a.5.5 0 0 0-.492.41L1.5 2v1.75a.75.75 0 0 1-1.5 0V1.5l.007-.144A1.5 1.5 0 0 1 1.356.006L1.5 0h2.25zM18.5 0l.144.007a1.5 1.5 0 0 1 1.35 1.349L20 1.5v2.25a.75.75 0 1 1-1.5 0V2l-.008-.09A.5.5 0 0 0 18 1.5h-1.75a.75.75 0 1 1 0-1.5h2.25zM8.8 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2H7.2a.2.2 0 0 1-.2-.2V.2c0-.11.09-.2.2-.2h1.6zm4 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2h-1.6a.2.2 0 0 1-.2-.2V.2c0-.11.09-.2.2-.2h1.6z"/></svg>',keystroke:"Ctrl+A",tooltip:!0}),o.bind("isOn","isEnabled").to(s,"value","isEnabled"),this.listenTo(o,"execute",(()=>{e.execute("selectAll"),e.editing.view.focus()})),o}))}}class u extends o.Z{static get requires(){return[l,h]}static get pluginName(){return"SelectAll"}}},"./src/typing.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Delete:()=>m.Z,Input:()=>g,TextTransformation:()=>M,TextWatcher:()=>w,TwoStepCaretMovement:()=>y,Typing:()=>f,findAttributeRange:()=>D,getLastTextLine:()=>b,inlineHighlight:()=>F,isNonTypingKeystroke:()=>a.u});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-typing/src/utils/changebuffer.js");class n extends i.Z{constructor(e,t){super(e),this._buffer=new r.Z(e.model,t)}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(e={}){const t=this.editor.model,s=t.document,o=e.text||"",i=o.length,r=e.range?t.createSelection(e.range):s.selection,n=e.resultRange;t.enqueueChange(this._buffer.batch,(e=>{this._buffer.lock(),t.deleteContent(r),o&&t.insertContent(e.createText(o,s.selection.getAttributes()),r),n?e.setSelection(n):r.is("documentSelection")||e.setSelection(r),this._buffer.unlock(),this._buffer.input(i)}))}}var a=s("./packages/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js"),c=s("./packages/ckeditor5-utils/src/diff.ts"),l=s("./packages/ckeditor5-engine/src/view/domconverter.js"),d=s("./packages/ckeditor5-typing/src/utils/utils.js");class h{constructor(e){this.editor=e,this.editing=this.editor.editing}handle(e,t){if((0,d.E9)(e))this._handleContainerChildrenMutations(e,t);else for(const s of e)this._handleTextMutation(s,t),this._handleTextNodeInsertion(s)}_handleContainerChildrenMutations(e,t){const s=function(e){const t=e.map((e=>e.node)).reduce(((e,t)=>e.getCommonAncestor(t,{includeSelf:!0})));if(!t)return;return t.getAncestors({includeSelf:!0,parentFirst:!0}).find((e=>e.is("containerElement")||e.is("rootElement")))}(e);if(!s)return;const o=this.editor.editing.view.domConverter.mapViewToDom(s),i=new l.Z(this.editor.editing.view.document),r=this.editor.data.toModel(i.domToView(o)).getChild(0),n=this.editor.editing.mapper.toModelElement(s);if(!n)return;const a=Array.from(r.getChildren()),d=Array.from(n.getChildren()),h=a[a.length-1],g=d[d.length-1],m=h&&h.is("element","softBreak"),f=g&&!g.is("element","softBreak");m&&f&&a.pop();const k=this.editor.model.schema;if(!u(a,k)||!u(d,k))return;const _=a.map((e=>e.is("$text")?e.data:"@")).join("").replace(/\u00A0/g," "),b=d.map((e=>e.is("$text")?e.data:"@")).join("").replace(/\u00A0/g," ");if(b===_)return;const w=(0,c.Z)(b,_),{firstChangeAt:v,insertions:y,deletions:Z}=p(w);let P=null;t&&(P=this.editing.mapper.toModelRange(t.getFirstRange()));const x=_.substr(v,y),A=this.editor.model.createRange(this.editor.model.createPositionAt(n,v),this.editor.model.createPositionAt(n,v+Z));this.editor.execute("input",{text:x,range:A,resultRange:P})}_handleTextMutation(e,t){if("text"!=e.type)return;const s=e.newText.replace(/\u00A0/g," "),o=e.oldText.replace(/\u00A0/g," ");if(o===s)return;const i=(0,c.Z)(o,s),{firstChangeAt:r,insertions:n,deletions:a}=p(i);let l=null;t&&(l=this.editing.mapper.toModelRange(t.getFirstRange()));const d=this.editing.view.createPositionAt(e.node,r),h=this.editing.mapper.toModelPosition(d),u=this.editor.model.createRange(h,h.getShiftedBy(a)),g=s.substr(r,n);this.editor.execute("input",{text:g,range:u,resultRange:l})}_handleTextNodeInsertion(e){if("children"!=e.type)return;const t=(0,d.xG)(e),s=this.editing.view.createPositionAt(e.node,t.index),o=this.editing.mapper.toModelPosition(s),i=t.values[0].data;this.editor.execute("input",{text:i.replace(/\u00A0/g," "),range:this.editor.model.createRange(o)})}}function u(e,t){return e.every((e=>t.isInline(e)))}function p(e){let t=null,s=null;for(let o=0;o<e.length;o++){"equal"!=e[o]&&(t=null===t?o:t,s=o)}let o=0,i=0;for(let r=t;r<=s;r++)"insert"!=e[r]&&o++,"delete"!=e[r]&&i++;return{insertions:i,deletions:o,firstChangeAt:t}}class g extends o.Z{static get pluginName(){return"Input"}init(){const e=this.editor,t=new n(e,e.config.get("typing.undoStep")||20);e.commands.add("input",t),(0,a.Z)(e),function(e){e.editing.view.document.on("mutations",((t,s,o)=>{new h(e).handle(s,o)}))}(e)}}var m=s("./packages/ckeditor5-typing/src/delete.js");class f extends o.Z{static get requires(){return[g,m.Z]}static get pluginName(){return"Typing"}}var k=s("./packages/ckeditor5-utils/src/mix.ts"),_=s("./packages/ckeditor5-utils/src/observablemixin.ts");function b(e,t){let s=e.start;return{text:Array.from(e.getItems()).reduce(((e,o)=>o.is("$text")||o.is("$textProxy")?e+o.data:(s=t.createPositionAfter(o),"")),""),range:t.createRange(s,e.end)}}class w{constructor(e,t){this.model=e,this.testCallback=t,this.hasMatch=!1,this.set("isEnabled",!0),this.on("change:isEnabled",(()=>{this.isEnabled?this._startListening():(this.stopListening(e.document.selection),this.stopListening(e.document))})),this._startListening()}_startListening(){const e=this.model.document;this.listenTo(e.selection,"change:range",((t,{directChange:s})=>{s&&(e.selection.isCollapsed?this._evaluateTextBeforeSelection("selection"):this.hasMatch&&(this.fire("unmatched"),this.hasMatch=!1))})),this.listenTo(e,"change:data",((e,t)=>{!t.isUndo&&t.isLocal&&this._evaluateTextBeforeSelection("data",{batch:t})}))}_evaluateTextBeforeSelection(e,t={}){const s=this.model,o=s.document.selection,i=s.createRange(s.createPositionAt(o.focus.parent,0),o.focus),{text:r,range:n}=b(i,s),a=this.testCallback(r);if(!a&&this.hasMatch&&this.fire("unmatched"),this.hasMatch=!!a,a){const s=Object.assign(t,{text:r,range:n});"object"==typeof a&&Object.assign(s,a),this.fire(`matched:${e}`,s)}}}(0,k.Z)(w,_.Z);var v=s("./packages/ckeditor5-utils/src/keyboard.ts");class y extends o.Z{static get pluginName(){return"TwoStepCaretMovement"}constructor(e){super(e),this.attributes=new Set,this._overrideUid=null}init(){const e=this.editor,t=e.model,s=e.editing.view,o=e.locale,i=t.document.selection;this.listenTo(s.document,"arrowKey",((e,t)=>{if(!i.isCollapsed)return;if(t.shiftKey||t.altKey||t.ctrlKey)return;const s=t.keyCode==v.Do.arrowright,r=t.keyCode==v.Do.arrowleft;if(!s&&!r)return;const n=o.contentLanguageDirection;let a=!1;a="ltr"===n&&s||"rtl"===n&&r?this._handleForwardMovement(t):this._handleBackwardMovement(t),!0===a&&e.stop()}),{context:"$text",priority:"highest"}),this._isNextGravityRestorationSkipped=!1,this.listenTo(i,"change:range",((e,t)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!t.directChange&&A(i.getFirstPosition(),this.attributes)||this._restoreGravity())}))}registerAttribute(e){this.attributes.add(e)}_handleForwardMovement(e){const t=this.attributes,s=this.editor.model.document.selection,o=s.getFirstPosition();return!this._isGravityOverridden&&((!o.isAtStart||!Z(s,t))&&(A(o,t)?(x(e),this._overrideGravity(),!0):void 0))}_handleBackwardMovement(e){const t=this.attributes,s=this.editor.model,o=s.document.selection,i=o.getFirstPosition();return this._isGravityOverridden?(x(e),this._restoreGravity(),P(s,t,i),!0):i.isAtStart?!!Z(o,t)&&(x(e),P(s,t,i),!0):function(e,t){return A(e.getShiftedBy(-1),t)}(i,t)?i.isAtEnd&&!Z(o,t)&&A(i,t)?(x(e),P(s,t,i),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1):void 0}get _isGravityOverridden(){return!!this._overrideUid}_overrideGravity(){this._overrideUid=this.editor.model.change((e=>e.overrideSelectionGravity()))}_restoreGravity(){this.editor.model.change((e=>{e.restoreSelectionGravity(this._overrideUid),this._overrideUid=null}))}}function Z(e,t){for(const s of t)if(e.hasAttribute(s))return!0;return!1}function P(e,t,s){const o=s.nodeBefore;e.change((e=>{o?e.setSelectionAttribute(o.getAttributes()):e.removeSelectionAttribute(t)}))}function x(e){e.preventDefault()}function A(e,t){const{nodeBefore:s,nodeAfter:o}=e;for(const e of t){const t=s?s.getAttribute(e):void 0;if((o?o.getAttribute(e):void 0)!==t)return!0}return!1}var j=s("./node_modules/lodash-es/toString.js"),T=/[\\^$.*+?()[\]{}|]/g,C=RegExp(T.source);const E=function(e){return(e=(0,j.Z)(e))&&C.test(e)?e.replace(T,"\\$&"):e},S={copyright:{from:"(c)",to:"©"},registeredTrademark:{from:"(r)",to:"®"},trademark:{from:"(tm)",to:"™"},oneHalf:{from:/(^|[^/a-z0-9])(1\/2)([^/a-z0-9])$/i,to:[null,"½",null]},oneThird:{from:/(^|[^/a-z0-9])(1\/3)([^/a-z0-9])$/i,to:[null,"⅓",null]},twoThirds:{from:/(^|[^/a-z0-9])(2\/3)([^/a-z0-9])$/i,to:[null,"⅔",null]},oneForth:{from:/(^|[^/a-z0-9])(1\/4)([^/a-z0-9])$/i,to:[null,"¼",null]},threeQuarters:{from:/(^|[^/a-z0-9])(3\/4)([^/a-z0-9])$/i,to:[null,"¾",null]},lessThanOrEqual:{from:"<=",to:"≤"},greaterThanOrEqual:{from:">=",to:"≥"},notEqual:{from:"!=",to:"≠"},arrowLeft:{from:"<-",to:"←"},arrowRight:{from:"->",to:"→"},horizontalEllipsis:{from:"...",to:"…"},enDash:{from:/(^| )(--)( )$/,to:[null,"–",null]},emDash:{from:/(^| )(---)( )$/,to:[null,"—",null]},quotesPrimary:{from:z('"'),to:[null,"“",null,"”"]},quotesSecondary:{from:z("'"),to:[null,"‘",null,"’"]},quotesPrimaryEnGb:{from:z("'"),to:[null,"‘",null,"’"]},quotesSecondaryEnGb:{from:z('"'),to:[null,"“",null,"”"]},quotesPrimaryPl:{from:z('"'),to:[null,"„",null,"”"]},quotesSecondaryPl:{from:z("'"),to:[null,"‚",null,"’"]}},O={symbols:["copyright","registeredTrademark","trademark"],mathematical:["oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight"],typography:["horizontalEllipsis","enDash","emDash"],quotes:["quotesPrimary","quotesSecondary"]},R=["symbols","mathematical","typography","quotes"];class M extends o.Z{static get requires(){return["Delete","Input"]}static get pluginName(){return"TextTransformation"}constructor(e){super(e),e.config.define("typing",{transformations:{include:R}})}init(){const e=this.editor.model.document.selection;e.on("change:range",(()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")})),this._enableTransformationWatchers()}_enableTransformationWatchers(){const e=this.editor,t=e.model,s=e.plugins.get("Delete"),o=function(e){const t=e.extra||[],s=e.remove||[],o=e=>!s.includes(e);return function(e){const t=new Set;for(const s of e)if(O[s])for(const e of O[s])t.add(e);else t.add(s);return Array.from(t)}(e.include.concat(t).filter(o)).filter(o).map((e=>S[e]||e)).filter((e=>"object"==typeof e)).map((e=>({from:N(e.from),to:I(e.to)})))}(e.config.get("typing.transformations")),i=new w(e.model,(e=>{for(const t of o){if(t.from.test(e))return{normalizedTransformation:t}}}));i.on("matched:data",((e,o)=>{if(!o.batch.isTyping)return;const{from:i,to:r}=o.normalizedTransformation,n=i.exec(o.text),a=r(n.slice(1)),c=o.range;let l=n.index;t.enqueueChange((e=>{for(let s=1;s<n.length;s++){const o=n[s],i=a[s-1];if(null==i){l+=o.length;continue}const r=c.start.getShiftedBy(l),d=t.createRange(r,r.getShiftedBy(o.length)),h=V(r);t.insertContent(e.createText(i,h),d),l+=i.length}t.enqueueChange((()=>{s.requestUndoOnBackspace()}))}))})),i.bind("isEnabled").to(this)}}function N(e){return"string"==typeof e?new RegExp(`(${E(e)})$`):e}function I(e){return"string"==typeof e?()=>[e]:e instanceof Array?()=>e:e}function V(e){return(e.textNode?e.textNode:e.nodeAfter).getAttributes()}function z(e){return new RegExp(`(^|\\s)(${e})([^${e}]*)(${e})$`)}function D(e,t,s,o){return o.createRange(B(e,t,s,!0,o),B(e,t,s,!1,o))}function B(e,t,s,o,i){let r=e.textNode||(o?e.nodeBefore:e.nodeAfter),n=null;for(;r&&r.getAttribute(t)==s;)n=r,r=o?r.previousSibling:r.nextSibling;return n?i.createPositionAt(n,o?"before":"after"):e}function F(e,t,s,o){const i=e.editing.view,r=new Set;i.document.registerPostFixer((i=>{const n=e.model.document.selection;let a=!1;if(n.hasAttribute(t)){const c=D(n.getFirstPosition(),t,n.getAttribute(t),e.model),l=e.editing.mapper.toViewRange(c);for(const e of l.getItems())e.is("element",s)&&!e.hasClass(o)&&(i.addClass(o,e),r.add(e),a=!0)}return a})),e.conversion.for("editingDowncast").add((e=>{function t(){i.change((e=>{for(const t of r.values())e.removeClass(o,t),r.delete(t)}))}e.on("insert",t,{priority:"highest"}),e.on("remove",t,{priority:"highest"}),e.on("attribute",t,{priority:"highest"}),e.on("selection",t,{priority:"highest"})}))}},"./src/ui.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{BalloonPanelView:()=>he.Z,BalloonToolbar:()=>Ee,BlockToolbar:()=>ze,BodyCollection:()=>l,BoxedEditorUIView:()=>z,ButtonView:()=>d.Z,ColorGridView:()=>P,ColorTileView:()=>f,ContextualBalloon:()=>ue.Z,DropdownButtonView:()=>x.Z,EditorUIView:()=>R,FocusCycler:()=>_.Z,FormHeaderView:()=>W,IconView:()=>q.Z,IframeView:()=>J,InlineEditableUIView:()=>B,InputNumberView:()=>G,InputTextView:()=>K,InputView:()=>U,LabelView:()=>V,LabeledFieldView:()=>Y,ListItemView:()=>oe.Z,ListView:()=>ie.Z,Model:()=>de,Notification:()=>ne,SplitButtonView:()=>C,StickyPanelView:()=>_e,SwitchButtonView:()=>h.Z,Template:()=>n.ZP,ToolbarSeparatorView:()=>ve.Z,ToolbarView:()=>we.Z,TooltipView:()=>be.Z,View:()=>m.Z,ViewCollection:()=>a.Z,addListToDropdown:()=>E.Pm,addToolbarToDropdown:()=>E.up,clickOutsideHandler:()=>o.Z,createDropdown:()=>E.t9,createLabeledDropdown:()=>se,createLabeledInputNumber:()=>te,createLabeledInputText:()=>ee,enableToolbarKeyboardFocus:()=>ye,focusChildOnDropdownOpen:()=>E.Mh,getLocalizedColorOptions:()=>u,injectCssTransitionDisabler:()=>i,normalizeColorOptions:()=>p,normalizeSingleColorDefinition:()=>g,normalizeToolbarConfig:()=>Ze.Z,submitHandler:()=>r});var o=s("./packages/ckeditor5-ui/src/bindings/clickoutsidehandler.js");function i(e){e.set("_isCssTransitionsDisabled",!1),e.disableCssTransitions=()=>{e._isCssTransitionsDisabled=!0},e.enableCssTransitions=()=>{e._isCssTransitionsDisabled=!1},e.extendTemplate({attributes:{class:[e.bindTemplate.if("_isCssTransitionsDisabled","ck-transitions-disabled")]}})}function r({view:e}){e.listenTo(e.element,"submit",((t,s)=>{s.preventDefault(),e.fire("submit")}),{useCapture:!0})}var n=s("./packages/ckeditor5-ui/src/template.js"),a=s("./packages/ckeditor5-ui/src/viewcollection.js"),c=s("./packages/ckeditor5-utils/src/dom/createelement.ts");class l extends a.Z{constructor(e,t=[]){super(t),this.locale=e}attachToDom(){this._bodyCollectionContainer=new n.ZP({tag:"div",attributes:{class:["ck","ck-reset_all","ck-body","ck-rounded-corners"],dir:this.locale.uiLanguageDirection},children:this}).render();let e=document.querySelector(".ck-body-wrapper");e||(e=(0,c.Z)(document,"div",{class:"ck-body-wrapper"}),document.body.appendChild(e)),e.appendChild(this._bodyCollectionContainer)}detachFromDom(){super.destroy(),this._bodyCollectionContainer&&this._bodyCollectionContainer.remove();const e=document.querySelector(".ck-body-wrapper");e&&0==e.childElementCount&&e.remove()}}var d=s("./packages/ckeditor5-ui/src/button/buttonview.js"),h=s("./packages/ckeditor5-ui/src/button/switchbuttonview.js");function u(e,t){const s=e.t,o={Black:s("Black"),"Dim grey":s("Dim grey"),Grey:s("Grey"),"Light grey":s("Light grey"),White:s("White"),Red:s("Red"),Orange:s("Orange"),Yellow:s("Yellow"),"Light green":s("Light green"),Green:s("Green"),Aquamarine:s("Aquamarine"),Turquoise:s("Turquoise"),"Light blue":s("Light blue"),Blue:s("Blue"),Purple:s("Purple")};return t.map((e=>{const t=o[e.label];return t&&t!=e.label&&(e.label=t),e}))}function p(e){return e.map(g).filter((e=>!!e))}function g(e){return"string"==typeof e?{model:e,label:e,hasBorder:!1,view:{name:"span",styles:{color:e}}}:{model:e.color,label:e.label||e.color,hasBorder:void 0!==e.hasBorder&&e.hasBorder,view:{name:"span",styles:{color:`${e.color}`}}}}var m=s("./packages/ckeditor5-ui/src/view.js");class f extends d.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("color"),this.set("hasBorder"),this.icon='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path class="ck-icon__fill" d="M16.935 5.328a2 2 0 0 1 0 2.829l-7.778 7.778a2 2 0 0 1-2.829 0L3.5 13.107a1.999 1.999 0 1 1 2.828-2.829l.707.707a1 1 0 0 0 1.414 0l5.658-5.657a2 2 0 0 1 2.828 0z"/><path d="M14.814 6.035 8.448 12.4a1 1 0 0 1-1.414 0l-1.413-1.415A1 1 0 1 0 4.207 12.4l2.829 2.829a1 1 0 0 0 1.414 0l7.778-7.778a1 1 0 1 0-1.414-1.415z"/></svg>',this.extendTemplate({attributes:{style:{backgroundColor:t.to("color")},class:["ck","ck-color-grid__tile",t.if("hasBorder","ck-color-table__color-tile_bordered")]}})}render(){super.render(),this.iconView.fillColor="hsl(0, 0%, 100%)"}}var k=s("./packages/ckeditor5-utils/src/focustracker.ts"),_=s("./packages/ckeditor5-ui/src/focuscycler.js"),b=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),w=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),v=s.n(w),y=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/colorgrid/colorgrid.css"),Z={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(y.Z,Z);y.Z.locals;class P extends m.Z{constructor(e,t){super(e);const s=t&&t.colorDefinitions||[],o={};t&&t.columns&&(o.gridTemplateColumns=`repeat( ${t.columns}, 1fr)`),this.set("selectedColor"),this.items=this.createCollection(),this.focusTracker=new k.Z,this.keystrokes=new b.Z,this._focusCycler=new _.Z({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"arrowleft",focusNext:"arrowright"}}),this.items.on("add",((e,t)=>{t.isOn=t.color===this.selectedColor})),s.forEach((e=>{const t=new f;t.set({color:e.color,label:e.label,tooltip:!0,hasBorder:e.options.hasBorder}),t.on("execute",(()=>{this.fire("execute",{value:e.color,hasBorder:e.options.hasBorder,label:e.label})})),this.items.add(t)})),this.setTemplate({tag:"div",children:this.items,attributes:{class:["ck","ck-color-grid"],style:o}}),this.on("change:selectedColor",((e,t,s)=>{for(const e of this.items)e.isOn=e.color===s}))}focus(){this.items.length&&this.items.first.focus()}focusLast(){this.items.length&&this.items.last.focus()}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",((e,t)=>{this.focusTracker.add(t.element)})),this.items.on("remove",((e,t)=>{this.focusTracker.remove(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}}var x=s("./packages/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js"),A=s("./packages/ckeditor5-ui/theme/icons/dropdown-arrow.svg"),j=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/splitbutton.css"),T={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(j.Z,T);j.Z.locals;class C extends m.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("class"),this.set("icon"),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isToggleable",!1),this.set("isVisible",!0),this.set("keystroke"),this.set("label"),this.set("tabindex",-1),this.set("tooltip"),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.children=this.createCollection(),this.actionView=this._createActionView(),this.arrowView=this._createArrowView(),this.keystrokes=new b.Z,this.focusTracker=new k.Z,this.setTemplate({tag:"div",attributes:{class:["ck","ck-splitbutton",t.to("class"),t.if("isVisible","ck-hidden",(e=>!e)),this.arrowView.bindTemplate.if("isOn","ck-splitbutton_open")]},children:this.children})}render(){super.render(),this.children.add(this.actionView),this.children.add(this.arrowView),this.focusTracker.add(this.actionView.element),this.focusTracker.add(this.arrowView.element),this.keystrokes.listenTo(this.element),this.keystrokes.set("arrowright",((e,t)=>{this.focusTracker.focusedElement===this.actionView.element&&(this.arrowView.focus(),t())})),this.keystrokes.set("arrowleft",((e,t)=>{this.focusTracker.focusedElement===this.arrowView.element&&(this.actionView.focus(),t())}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this.actionView.focus()}_createActionView(){const e=new d.Z;return e.bind("icon","isEnabled","isOn","isToggleable","keystroke","label","tabindex","tooltip","tooltipPosition","type","withText").to(this),e.extendTemplate({attributes:{class:"ck-splitbutton__action"}}),e.delegate("execute").to(this),e}_createArrowView(){const e=new d.Z,t=e.bindTemplate;return e.icon=A.Z,e.extendTemplate({attributes:{class:"ck-splitbutton__arrow","aria-haspopup":!0,"aria-expanded":t.to("isOn",(e=>String(e)))}}),e.bind("isEnabled").to(this),e.bind("label").to(this),e.bind("tooltip").to(this),e.delegate("execute").to(this,"open"),e}}var E=s("./packages/ckeditor5-ui/src/dropdown/utils.js"),S=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/editorui/editorui.css"),O={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(S.Z,O);S.Z.locals;class R extends m.Z{constructor(e){super(e),this.body=new l(e)}render(){super.render(),this.body.attachToDom()}destroy(){return this.body.detachFromDom(),super.destroy()}}var M=s("./packages/ckeditor5-utils/src/uid.ts"),N=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/label/label.css"),I={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(N.Z,I);N.Z.locals;class V extends m.Z{constructor(e){super(e),this.set("text"),this.set("for"),this.id=`ck-editor__label_${(0,M.Z)()}`;const t=this.bindTemplate;this.setTemplate({tag:"label",attributes:{class:["ck","ck-label"],id:this.id,for:t.to("for")},children:[{text:t.to("text")}]})}}class z extends R{constructor(e){super(e),this.top=this.createCollection(),this.main=this.createCollection(),this._voiceLabelView=this._createVoiceLabel(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-editor","ck-rounded-corners"],role:"application",dir:e.uiLanguageDirection,lang:e.uiLanguage,"aria-labelledby":this._voiceLabelView.id},children:[this._voiceLabelView,{tag:"div",attributes:{class:["ck","ck-editor__top","ck-reset_all"],role:"presentation"},children:this.top},{tag:"div",attributes:{class:["ck","ck-editor__main"],role:"presentation"},children:this.main}]})}_createVoiceLabel(){const e=this.t,t=new V;return t.text=e("Rich Text Editor"),t.extendTemplate({attributes:{class:"ck-voice-label"}}),t}}class D extends m.Z{constructor(e,t,s){super(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-content","ck-editor__editable","ck-rounded-corners"],lang:e.contentLanguage,dir:e.contentLanguageDirection}}),this.name=null,this.set("isFocused",!1),this._editableElement=s,this._hasExternalElement=!!this._editableElement,this._editingView=t}render(){super.render(),this._hasExternalElement?this.template.apply(this.element=this._editableElement):this._editableElement=this.element,this.on("change:isFocused",(()=>this._updateIsFocusedClasses())),this._updateIsFocusedClasses()}destroy(){this._hasExternalElement&&this.template.revert(this._editableElement),super.destroy()}_updateIsFocusedClasses(){const e=this._editingView;function t(t){e.change((s=>{const o=e.document.getRoot(t.name);s.addClass(t.isFocused?"ck-focused":"ck-blurred",o),s.removeClass(t.isFocused?"ck-blurred":"ck-focused",o)}))}e.isRenderingInProgress?function s(o){e.once("change:isRenderingInProgress",((e,i,r)=>{r?s(o):t(o)}))}(this):t(this)}}class B extends D{constructor(e,t,s,o={}){super(e,t,s);const i=e.t;this.extendTemplate({attributes:{role:"textbox",class:"ck-editor__editable_inline"}}),this._generateLabel=o.label||(()=>i("Editor editing area: %0",this.name))}render(){super.render();const e=this._editingView;e.change((t=>{const s=e.document.getRoot(this.name);t.setAttribute("aria-label",this._generateLabel(this),s)}))}}var F=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/formheader/formheader.css"),L={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(F.Z,L);F.Z.locals;class W extends m.Z{constructor(e,t={}){super(e);const s=this.bindTemplate;this.set("label",t.label||""),this.set("class",t.class||null),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__header",s.to("class")]},children:this.children});const o=new m.Z(e);o.setTemplate({tag:"span",attributes:{class:["ck","ck-form__header__label"]},children:[{text:s.to("label")}]}),this.children.add(o)}}var q=s("./packages/ckeditor5-ui/src/icon/iconview.js"),$=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/input/input.css"),H={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()($.Z,H);$.Z.locals;class U extends m.Z{constructor(e){super(e),this.set("value"),this.set("id"),this.set("placeholder"),this.set("isReadOnly",!1),this.set("hasError",!1),this.set("ariaDescribedById"),this.focusTracker=new k.Z,this.bind("isFocused").to(this.focusTracker),this.set("isEmpty",!0),this.set("inputMode","text");const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck","ck-input",t.if("isFocused","ck-input_focused"),t.if("isEmpty","ck-input-text_empty"),t.if("hasError","ck-error")],id:t.to("id"),placeholder:t.to("placeholder"),readonly:t.to("isReadOnly"),inputmode:t.to("inputMode"),"aria-invalid":t.if("hasError",!0),"aria-describedby":t.to("ariaDescribedById")},on:{input:t.to(((...e)=>{this.fire("input",...e),this._updateIsEmpty()})),change:t.to(this._updateIsEmpty.bind(this))}})}render(){super.render(),this.focusTracker.add(this.element),this._setDomElementValue(this.value),this._updateIsEmpty(),this.on("change:value",((e,t,s)=>{this._setDomElementValue(s),this._updateIsEmpty()}))}destroy(){super.destroy(),this.focusTracker.destroy()}select(){this.element.select()}focus(){this.element.focus()}_updateIsEmpty(){this.isEmpty=!this.element.value}_setDomElementValue(e){this.element.value=e||0===e?e:""}}class K extends U{constructor(e){super(e),this.extendTemplate({attributes:{type:"text",class:["ck-input-text"]}})}}class G extends U{constructor(e,{min:t,max:s,step:o}={}){super(e);const i=this.bindTemplate;this.set("min",t),this.set("max",s),this.set("step",o),this.extendTemplate({attributes:{type:"number",class:["ck-input-number"],min:i.to("min"),max:i.to("max"),step:i.to("step")}})}}class J extends m.Z{constructor(e){super(e);const t=this.bindTemplate;this.setTemplate({tag:"iframe",attributes:{class:["ck","ck-reset_all"],sandbox:"allow-same-origin allow-scripts"},on:{load:t.to("loaded")}})}render(){return new Promise((e=>{this.on("loaded",e),super.render()}))}}var X=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css"),Q={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(X.Z,Q);X.Z.locals;class Y extends m.Z{constructor(e,t){super(e);const s=`ck-labeled-field-view-${(0,M.Z)()}`,o=`ck-labeled-field-view-status-${(0,M.Z)()}`;this.fieldView=t(this,s,o),this.set("label"),this.set("isEnabled",!0),this.set("isEmpty",!0),this.set("isFocused",!1),this.set("errorText",null),this.set("infoText",null),this.set("class"),this.set("placeholder"),this.labelView=this._createLabelView(s),this.statusView=this._createStatusView(o),this.bind("_statusText").to(this,"errorText",this,"infoText",((e,t)=>e||t));const i=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view",i.to("class"),i.if("isEnabled","ck-disabled",(e=>!e)),i.if("isEmpty","ck-labeled-field-view_empty"),i.if("isFocused","ck-labeled-field-view_focused"),i.if("placeholder","ck-labeled-field-view_placeholder"),i.if("errorText","ck-error")]},children:[{tag:"div",attributes:{class:["ck","ck-labeled-field-view__input-wrapper"]},children:[this.fieldView,this.labelView]},this.statusView]})}_createLabelView(e){const t=new V(this.locale);return t.for=e,t.bind("text").to(this,"label"),t}_createStatusView(e){const t=new m.Z(this.locale),s=this.bindTemplate;return t.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view__status",s.if("errorText","ck-labeled-field-view__status_error"),s.if("_statusText","ck-hidden",(e=>!e))],id:e,role:s.if("errorText","alert")},children:[{text:s.to("_statusText")}]}),t}focus(){this.fieldView.focus()}}function ee(e,t,s){const o=new K(e.locale);return o.set({id:t,ariaDescribedById:s}),o.bind("isReadOnly").to(e,"isEnabled",(e=>!e)),o.bind("hasError").to(e,"errorText",(e=>!!e)),o.on("input",(()=>{e.errorText=null})),e.bind("isEmpty","isFocused","placeholder").to(o),o}function te(e,t,s){const o=new G(e.locale);return o.set({id:t,ariaDescribedById:s,inputMode:"numeric"}),o.bind("isReadOnly").to(e,"isEnabled",(e=>!e)),o.bind("hasError").to(e,"errorText",(e=>!!e)),o.on("input",(()=>{e.errorText=null})),e.bind("isEmpty","isFocused","placeholder").to(o),o}function se(e,t,s){const o=(0,E.t9)(e.locale);return o.set({id:t,ariaDescribedById:s}),o.bind("isEnabled").to(e),o}var oe=s("./packages/ckeditor5-ui/src/list/listitemview.js"),ie=s("./packages/ckeditor5-ui/src/list/listview.js"),re=s("./packages/ckeditor5-core/src/contextplugin.js");class ne extends re.Z{static get pluginName(){return"Notification"}init(){this.on("show:warning",((e,t)=>{window.alert(t.message)}),{priority:"lowest"})}showSuccess(e,t={}){this._showNotification({message:e,type:"success",namespace:t.namespace,title:t.title})}showInfo(e,t={}){this._showNotification({message:e,type:"info",namespace:t.namespace,title:t.title})}showWarning(e,t={}){this._showNotification({message:e,type:"warning",namespace:t.namespace,title:t.title})}_showNotification(e){const t=`show:${e.type}`+(e.namespace?`:${e.namespace}`:"");this.fire(t,{message:e.message,type:e.type,title:e.title||""})}}var ae=s("./packages/ckeditor5-utils/src/mix.ts"),ce=s("./packages/ckeditor5-utils/src/observablemixin.ts"),le=s("./node_modules/lodash-es/assignIn.js");class de{constructor(e,t){t&&(0,le.Z)(this,t),e&&this.set(e)}}(0,ae.Z)(de,ce.Z);var he=s("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),ue=s("./packages/ckeditor5-ui/src/panel/balloon/contextualballoon.js"),pe=s("./packages/ckeditor5-utils/src/dom/global.ts"),ge=s("./packages/ckeditor5-utils/src/dom/tounit.ts"),me=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/stickypanel.css"),fe={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(me.Z,fe);me.Z.locals;const ke=(0,ge.Z)("px");class _e extends m.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("isActive",!1),this.set("isSticky",!1),this.set("limiterElement",null),this.set("limiterBottomOffset",50),this.set("viewportTopOffset",0),this.set("_marginLeft",null),this.set("_isStickyToTheLimiter",!1),this.set("_hasViewportTopOffset",!1),this.content=this.createCollection(),this._contentPanelPlaceholder=new n.ZP({tag:"div",attributes:{class:["ck","ck-sticky-panel__placeholder"],style:{display:t.to("isSticky",(e=>e?"block":"none")),height:t.to("isSticky",(e=>e?ke(this._panelRect.height):null))}}}).render(),this._contentPanel=new n.ZP({tag:"div",attributes:{class:["ck","ck-sticky-panel__content",t.if("isSticky","ck-sticky-panel__content_sticky"),t.if("_isStickyToTheLimiter","ck-sticky-panel__content_sticky_bottom-limit")],style:{width:t.to("isSticky",(e=>e?ke(this._contentPanelPlaceholder.getBoundingClientRect().width):null)),top:t.to("_hasViewportTopOffset",(e=>e?ke(this.viewportTopOffset):null)),bottom:t.to("_isStickyToTheLimiter",(e=>e?ke(this.limiterBottomOffset):null)),marginLeft:t.to("_marginLeft")}},children:this.content}).render(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-sticky-panel"]},children:[this._contentPanelPlaceholder,this._contentPanel]})}render(){super.render(),this._checkIfShouldBeSticky(),this.listenTo(pe.Z.window,"scroll",(()=>{this._checkIfShouldBeSticky()})),this.listenTo(this,"change:isActive",(()=>{this._checkIfShouldBeSticky()}))}_checkIfShouldBeSticky(){const e=this._panelRect=this._contentPanel.getBoundingClientRect();let t;this.limiterElement?(t=this._limiterRect=this.limiterElement.getBoundingClientRect(),this.isSticky=this.isActive&&t.top<this.viewportTopOffset&&this._panelRect.height+this.limiterBottomOffset<t.height):this.isSticky=!1,this.isSticky?(this._isStickyToTheLimiter=t.bottom<e.height+this.limiterBottomOffset+this.viewportTopOffset,this._hasViewportTopOffset=!this._isStickyToTheLimiter&&!!this.viewportTopOffset,this._marginLeft=this._isStickyToTheLimiter?null:ke(-pe.Z.window.scrollX)):(this._isStickyToTheLimiter=!1,this._hasViewportTopOffset=!1,this._marginLeft=null)}}var be=s("./packages/ckeditor5-ui/src/tooltip/tooltipview.js"),we=s("./packages/ckeditor5-ui/src/toolbar/toolbarview.js"),ve=s("./packages/ckeditor5-ui/src/toolbar/toolbarseparatorview.js");function ye({origin:e,originKeystrokeHandler:t,originFocusTracker:s,toolbar:o,beforeFocus:i,afterBlur:r}){s.add(o.element),t.set("Alt+F10",((e,t)=>{s.isFocused&&!o.focusTracker.isFocused&&(i&&i(),o.focus(),t())})),o.keystrokes.set("Esc",((t,s)=>{o.focusTracker.isFocused&&(e.focus(),r&&r(),s())}))}var Ze=s("./packages/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js"),Pe=s("./packages/ckeditor5-core/src/plugin.js"),xe=s("./packages/ckeditor5-utils/src/dom/rect.ts"),Ae=s("./node_modules/lodash-es/debounce.js"),je=s("./packages/ckeditor5-utils/src/dom/resizeobserver.ts"),Te=s("./packages/ckeditor5-utils/src/index.ts");const Ce=(0,ge.Z)("px");class Ee extends Pe.Z{static get pluginName(){return"BalloonToolbar"}static get requires(){return[ue.Z]}constructor(e){super(e),this._balloonConfig=(0,Ze.Z)(e.config.get("balloonToolbar")),this.toolbarView=this._createToolbarView(),this.focusTracker=new k.Z,e.ui.once("ready",(()=>{this.focusTracker.add(e.ui.getEditableElement()),this.focusTracker.add(this.toolbarView.element)})),this._resizeObserver=null,this._balloon=e.plugins.get(ue.Z),this._fireSelectionChangeDebounced=(0,Ae.Z)((()=>this.fire("_selectionChangeDebounced")),200),this.decorate("show")}init(){const e=this.editor,t=e.model.document.selection;this.listenTo(this.focusTracker,"change:isFocused",((e,t,s)=>{const o=this._balloon.visibleView===this.toolbarView;!s&&o?this.hide():s&&this.show()})),this.listenTo(t,"change:range",((e,s)=>{(s.directChange||t.isCollapsed)&&this.hide(),this._fireSelectionChangeDebounced()})),this.listenTo(this,"_selectionChangeDebounced",(()=>{this.editor.editing.view.document.isFocused&&this.show()})),this._balloonConfig.shouldNotGroupWhenFull||this.listenTo(e,"ready",(()=>{const t=e.ui.view.editable.element;this._resizeObserver=new je.Z(t,(()=>{this.toolbarView.maxWidth=Ce(.9*new xe.Z(t).width)}))})),this.listenTo(this.toolbarView,"groupedItemsUpdate",(()=>{this._updatePosition()}))}afterInit(){const e=this.editor.ui.componentFactory;this.toolbarView.fillFromConfig(this._balloonConfig,e)}_createToolbarView(){const e=!this._balloonConfig.shouldNotGroupWhenFull,t=new we.Z(this.editor.locale,{shouldGroupWhenFull:e,isFloating:!0});return t.render(),t}show(){const e=this.editor,t=e.model.document.selection,s=e.model.schema;this._balloon.hasView(this.toolbarView)||t.isCollapsed||function(e,t){if(1===e.rangeCount)return!1;return[...e.getRanges()].every((e=>{const s=e.getContainedElement();return s&&t.isSelectable(s)}))}(t,s)||Array.from(this.toolbarView.items).every((e=>void 0!==e.isEnabled&&!e.isEnabled))||(this.listenTo(this.editor.ui,"update",(()=>{this._updatePosition()})),this._balloon.add({view:this.toolbarView,position:this._getBalloonPositionData(),balloonClassName:"ck-toolbar-container"}))}hide(){this._balloon.hasView(this.toolbarView)&&(this.stopListening(this.editor.ui,"update"),this._balloon.remove(this.toolbarView))}_getBalloonPositionData(){const e=this.editor.editing.view,t=e.document,s=t.selection,o=t.selection.isBackward;return{target:()=>{const t=o?s.getFirstRange():s.getLastRange(),i=xe.Z.getDomRangeRects(e.domConverter.viewRangeToDom(t));return o?i[0]:(i.length>1&&0===i[i.length-1].width&&i.pop(),i[i.length-1])},positions:this._getBalloonPositions(o)}}_updatePosition(){this._balloon.updatePosition(this._getBalloonPositionData())}destroy(){super.destroy(),this.stopListening(),this._fireSelectionChangeDebounced.cancel(),this.toolbarView.destroy(),this.focusTracker.destroy(),this._resizeObserver&&this._resizeObserver.destroy()}_getBalloonPositions(e){const t=Te.OB.isSafari&&Te.OB.isiOS?(0,he.M)({verticalOffset:Math.max(he.Z.arrowVerticalOffset,Math.round(20/Te.CO.window.visualViewport.scale))}):he.Z.defaultPositions;return e?[t.northWestArrowSouth,t.northWestArrowSouthWest,t.northWestArrowSouthEast,t.northWestArrowSouthMiddleEast,t.northWestArrowSouthMiddleWest,t.southWestArrowNorth,t.southWestArrowNorthWest,t.southWestArrowNorthEast,t.southWestArrowNorthMiddleWest,t.southWestArrowNorthMiddleEast]:[t.southEastArrowNorth,t.southEastArrowNorthEast,t.southEastArrowNorthWest,t.southEastArrowNorthMiddleEast,t.southEastArrowNorthMiddleWest,t.northEastArrowSouth,t.northEastArrowSouthEast,t.northEastArrowSouthWest,t.northEastArrowSouthMiddleEast,t.northEastArrowSouthMiddleWest]}}var Se=s("./packages/ckeditor5-core/theme/icons/pilcrow.svg"),Oe=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css"),Re={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(Oe.Z,Re);Oe.Z.locals;const Me=(0,ge.Z)("px");class Ne extends d.Z{constructor(e){super(e);const t=this.bindTemplate;this.isVisible=!1,this.isToggleable=!0,this.set("top",0),this.set("left",0),this.extendTemplate({attributes:{class:"ck-block-toolbar-button",style:{top:t.to("top",(e=>Me(e))),left:t.to("left",(e=>Me(e)))}}})}}var Ie=s("./packages/ckeditor5-utils/src/dom/position.ts");const Ve=(0,ge.Z)("px");class ze extends Pe.Z{static get pluginName(){return"BlockToolbar"}constructor(e){super(e),this._blockToolbarConfig=(0,Ze.Z)(this.editor.config.get("blockToolbar")),this.toolbarView=this._createToolbarView(),this.panelView=this._createPanelView(),this.buttonView=this._createButtonView(),this._resizeObserver=null,(0,o.Z)({emitter:this.panelView,contextElements:[this.panelView.element,this.buttonView.element],activator:()=>this.panelView.isVisible,callback:()=>this._hidePanel()})}init(){const e=this.editor;this.listenTo(e.model.document.selection,"change:range",((e,t)=>{t.directChange&&this._hidePanel()})),this.listenTo(e.ui,"update",(()=>this._updateButton())),this.listenTo(e,"change:isReadOnly",(()=>this._updateButton()),{priority:"low"}),this.listenTo(e.ui.focusTracker,"change:isFocused",(()=>this._updateButton())),this.listenTo(this.buttonView,"change:isVisible",((e,t,s)=>{s?this.buttonView.listenTo(window,"resize",(()=>this._updateButton())):(this.buttonView.stopListening(window,"resize"),this._hidePanel())}))}afterInit(){const e=this.editor.ui.componentFactory,t=this._blockToolbarConfig;this.toolbarView.fillFromConfig(t,e);for(const e of this.toolbarView.items)e.on("execute",(()=>this._hidePanel(!0)),{priority:"high"});t.shouldNotGroupWhenFull||this.listenTo(this.editor,"ready",(()=>{const e=this.editor.ui.view.editable.element;this._resizeObserver=new je.Z(e,(()=>{this.toolbarView.maxWidth=this._getToolbarMaxWidth()}))}))}destroy(){super.destroy(),this.panelView.destroy(),this.buttonView.destroy(),this.toolbarView.destroy(),this._resizeObserver&&this._resizeObserver.destroy()}_createToolbarView(){const e=!this._blockToolbarConfig.shouldNotGroupWhenFull,t=new we.Z(this.editor.locale,{shouldGroupWhenFull:e,isFloating:!0});return t.focusTracker.on("change:isFocused",((e,t,s)=>{s||this._hidePanel()})),t}_createPanelView(){const e=this.editor,t=new he.Z(e.locale);return t.content.add(this.toolbarView),t.class="ck-toolbar-container",e.ui.view.body.add(t),e.ui.focusTracker.add(t.element),this.toolbarView.keystrokes.set("Esc",((e,t)=>{this._hidePanel(!0),t()})),t}_createButtonView(){const e=this.editor,t=e.t,s=new Ne(e.locale);return s.set({label:t("Edit block"),icon:Se.Z,withText:!1}),s.bind("isOn").to(this.panelView,"isVisible"),s.bind("tooltip").to(this.panelView,"isVisible",(e=>!e)),this.listenTo(s,"execute",(()=>{this.panelView.isVisible?this._hidePanel(!0):this._showPanel()})),e.ui.view.body.add(s),e.ui.focusTracker.add(s.element),s}_updateButton(){const e=this.editor,t=e.model,s=e.editing.view;if(!e.ui.focusTracker.isFocused)return void this._hideButton();if(e.isReadOnly)return void this._hideButton();const o=Array.from(t.document.selection.getSelectedBlocks())[0];if(!o||Array.from(this.toolbarView.items).every((e=>!e.isEnabled)))return void this._hideButton();const i=s.domConverter.mapViewToDom(e.editing.mapper.toViewElement(o));this.buttonView.isVisible=!0,this._attachButtonToElement(i),this.panelView.isVisible&&this._showPanel()}_hideButton(){this.buttonView.isVisible=!1}_showPanel(){const e=this.panelView.isVisible;this.panelView.show(),this.toolbarView.maxWidth=this._getToolbarMaxWidth(),this.panelView.pin({target:this.buttonView.element,limiter:this.editor.ui.getEditableElement()}),e||this.toolbarView.items.get(0).focus()}_hidePanel(e){this.panelView.isVisible=!1,e&&this.editor.editing.view.focus()}_attachButtonToElement(e){const t=window.getComputedStyle(e),s=new xe.Z(this.editor.ui.getEditableElement()),o=parseInt(t.paddingTop,10),i=parseInt(t.lineHeight,10)||1.2*parseInt(t.fontSize,10),r=(0,Ie.x)({element:this.buttonView.element,target:e,positions:[(e,t)=>{let r;return r="ltr"===this.editor.locale.uiLanguageDirection?s.left-t.width:s.right,{top:e.top+o+(i-t.height)/2,left:r}}]});this.buttonView.top=r.top,this.buttonView.left=r.left}_getToolbarMaxWidth(){const e=this.editor.ui.view.editable.element,t=new xe.Z(e),s=new xe.Z(this.buttonView.element),o="rtl"===this.editor.locale.uiLanguageDirection?s.left-t.right+s.width:t.left-s.left;return Ve(t.width+o)}}},"./src/undo.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Undo:()=>f,UndoEditing:()=>h,UndoUi:()=>m});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-engine/src/model/operation/transform.js");class n extends i.Z{constructor(e){super(e),this._stack=[],this._createdBatches=new WeakSet,this.refresh(),this.listenTo(e.data,"set",((e,t)=>{t[1]={...t[1]};const s=t[1];s.batchType||(s.batchType={isUndoable:!1})}),{priority:"high"}),this.listenTo(e.data,"set",((e,t)=>{t[1].batchType.isUndoable||this.clearStack()}))}refresh(){this.isEnabled=this._stack.length>0}addBatch(e){const t=this.editor.model.document.selection,s={ranges:t.hasOwnRange?Array.from(t.getRanges()):[],isBackward:t.isBackward};this._stack.push({batch:e,selection:s}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(e,t,s){const o=this.editor.model,i=o.document,r=[],n=e.map((e=>e.getTransformedByOperations(s))),l=n.flat();for(const e of n){const t=e.filter((e=>e.root!=i.graveyard)).filter((e=>!c(e,l)));t.length&&(a(t),r.push(t[0]))}r.length&&o.change((e=>{e.setSelection(r,{backward:t})}))}_undo(e,t){const s=this.editor.model,o=s.document;this._createdBatches.add(t);const i=e.operations.slice().filter((e=>e.isDocumentOperation));i.reverse();for(const e of i){const i=e.baseVersion+1,n=Array.from(o.history.getOperations(i)),a=(0,r.R)([e.getReversed()],n,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(const i of a)t.addOperation(i),s.applyOperation(i),o.history.setOperationAsUndone(e,i)}}}function a(e){e.sort(((e,t)=>e.start.isBefore(t.start)?-1:1));for(let t=1;t<e.length;t++){const s=e[t-1].getJoined(e[t],!0);s&&(t--,e.splice(t,2,s))}}function c(e,t){return t.some((t=>t!==e&&t.containsRange(e,!0)))}class l extends n{execute(e=null){const t=e?this._stack.findIndex((t=>t.batch==e)):this._stack.length-1,s=this._stack.splice(t,1)[0],o=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(o,(()=>{this._undo(s.batch,o);const e=this.editor.model.document.history.getOperations(s.batch.baseVersion);this._restoreSelection(s.selection.ranges,s.selection.isBackward,e),this.fire("revert",s.batch,o)})),this.refresh()}}class d extends n{execute(){const e=this._stack.pop(),t=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(t,(()=>{const s=e.batch.operations[e.batch.operations.length-1].baseVersion+1,o=this.editor.model.document.history.getOperations(s);this._restoreSelection(e.selection.ranges,e.selection.isBackward,o),this._undo(e.batch,t)})),this.refresh()}}class h extends o.Z{static get pluginName(){return"UndoEditing"}constructor(e){super(e),this._batchRegistry=new WeakSet}init(){const e=this.editor;this._undoCommand=new l(e),this._redoCommand=new d(e),e.commands.add("undo",this._undoCommand),e.commands.add("redo",this._redoCommand),this.listenTo(e.model,"applyOperation",((e,t)=>{const s=t[0];if(!s.isDocumentOperation)return;const o=s.batch,i=this._redoCommand._createdBatches.has(o),r=this._undoCommand._createdBatches.has(o);this._batchRegistry.has(o)||(this._batchRegistry.add(o),o.isUndoable&&(i?this._undoCommand.addBatch(o):r||(this._undoCommand.addBatch(o),this._redoCommand.clearStack())))}),{priority:"highest"}),this.listenTo(this._undoCommand,"revert",((e,t,s)=>{this._redoCommand.addBatch(s)})),e.keystrokes.set("CTRL+Z","undo"),e.keystrokes.set("CTRL+Y","redo"),e.keystrokes.set("CTRL+SHIFT+Z","redo")}}var u=s("./packages/ckeditor5-ui/src/button/buttonview.js");const p='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m5.042 9.367 2.189 1.837a.75.75 0 0 1-.965 1.149l-3.788-3.18a.747.747 0 0 1-.21-.284.75.75 0 0 1 .17-.945L6.23 4.762a.75.75 0 1 1 .964 1.15L4.863 7.866h8.917A.75.75 0 0 1 14 7.9a4 4 0 1 1-1.477 7.718l.344-1.489a2.5 2.5 0 1 0 1.094-4.73l.008-.032H5.042z"/></svg>',g='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m14.958 9.367-2.189 1.837a.75.75 0 0 0 .965 1.149l3.788-3.18a.747.747 0 0 0 .21-.284.75.75 0 0 0-.17-.945L13.77 4.762a.75.75 0 1 0-.964 1.15l2.331 1.955H6.22A.75.75 0 0 0 6 7.9a4 4 0 1 0 1.477 7.718l-.344-1.489A2.5 2.5 0 1 1 6.039 9.4l-.008-.032h8.927z"/></svg>';class m extends o.Z{static get pluginName(){return"UndoUI"}init(){const e=this.editor,t=e.locale,s=e.t,o="ltr"==t.uiLanguageDirection?p:g,i="ltr"==t.uiLanguageDirection?g:p;this._addButton("undo",s("Undo"),"CTRL+Z",o),this._addButton("redo",s("Redo"),"CTRL+Y",i)}_addButton(e,t,s,o){const i=this.editor;i.ui.componentFactory.add(e,(r=>{const n=i.commands.get(e),a=new u.Z(r);return a.set({label:t,icon:o,keystroke:s,tooltip:!0}),a.bind("isEnabled").to(n,"isEnabled"),this.listenTo(a,"execute",(()=>{i.execute(e),i.editing.view.focus()})),a}))}}class f extends o.Z{static get requires(){return[h,m]}static get pluginName(){return"Undo"}}},"./src/upload.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Base64UploadAdapter:()=>k,FileDialogButtonView:()=>m,FileRepository:()=>h,SimpleUploadAdapter:()=>b});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/pendingactions.js"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-utils/src/observablemixin.ts"),a=s("./packages/ckeditor5-utils/src/collection.ts"),c=s("./packages/ckeditor5-utils/src/mix.ts");class l{constructor(){const e=new window.FileReader;this._reader=e,this._data=void 0,this.set("loaded",0),e.onprogress=e=>{this.loaded=e.loaded}}get error(){return this._reader.error}get data(){return this._data}read(e){const t=this._reader;return this.total=e.size,new Promise(((s,o)=>{t.onload=()=>{const e=t.result;this._data=e,s(e)},t.onerror=()=>{o("error")},t.onabort=()=>{o("aborted")},this._reader.readAsDataURL(e)}))}abort(){this._reader.abort()}}(0,c.Z)(l,n.Z);var d=s("./packages/ckeditor5-utils/src/uid.ts");class h extends o.Z{static get pluginName(){return"FileRepository"}static get requires(){return[i.Z]}init(){this.loaders=new a.Z,this.loaders.on("add",(()=>this._updatePendingAction())),this.loaders.on("remove",(()=>this._updatePendingAction())),this._loadersMap=new Map,this._pendingAction=null,this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((e,t)=>t?e/t*100:0))}getLoader(e){return this._loadersMap.get(e)||null}createLoader(e){if(!this.createUploadAdapter)return(0,r.KE)("filerepository-no-upload-adapter"),null;const t=new u(Promise.resolve(e),this.createUploadAdapter);return this.loaders.add(t),this._loadersMap.set(e,t),e instanceof Promise&&t.file.then((e=>{this._loadersMap.set(e,t)})).catch((()=>{})),t.on("change:uploaded",(()=>{let e=0;for(const t of this.loaders)e+=t.uploaded;this.uploaded=e})),t.on("change:uploadTotal",(()=>{let e=0;for(const t of this.loaders)t.uploadTotal&&(e+=t.uploadTotal);this.uploadTotal=e})),t}destroyLoader(e){const t=e instanceof u?e:this.getLoader(e);t._destroy(),this.loaders.remove(t),this._loadersMap.forEach(((e,s)=>{e===t&&this._loadersMap.delete(s)}))}_updatePendingAction(){const e=this.editor.plugins.get(i.Z);if(this.loaders.length){if(!this._pendingAction){const t=this.editor.t,s=e=>`${t("Upload in progress")} ${parseInt(e)}%.`;this._pendingAction=e.add(s(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",s)}}else e.remove(this._pendingAction),this._pendingAction=null}}(0,c.Z)(h,n.Z);class u{constructor(e,t){this.id=(0,d.Z)(),this._filePromiseWrapper=this._createFilePromiseWrapper(e),this._adapter=t(this),this._reader=new l,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((e,t)=>t?e/t*100:0)),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then((e=>this._filePromiseWrapper?e:null)):Promise.resolve(null)}get data(){return this._reader.data}read(){if("idle"!=this.status)throw new r.ZP("filerepository-read-wrong-status",this);return this.status="reading",this.file.then((e=>this._reader.read(e))).then((e=>{if("reading"!==this.status)throw this.status;return this.status="idle",e})).catch((e=>{if("aborted"===e)throw this.status="aborted","aborted";throw this.status="error",this._reader.error?this._reader.error:e}))}upload(){if("idle"!=this.status)throw new r.ZP("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then((()=>this._adapter.upload())).then((e=>(this.uploadResponse=e,this.status="idle",e))).catch((e=>{if("aborted"===this.status)throw"aborted";throw this.status="error",e}))}abort(){const e=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==e?this._reader.abort():"uploading"==e&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch((()=>{})),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(e){const t={};return t.promise=new Promise(((s,o)=>{t.rejecter=o,t.isFulfilled=!1,e.then((e=>{t.isFulfilled=!0,s(e)})).catch((e=>{t.isFulfilled=!0,o(e)}))})),t}}(0,c.Z)(u,n.Z);var p=s("./packages/ckeditor5-ui/src/button/buttonview.js"),g=s("./packages/ckeditor5-ui/src/view.js");class m extends g.Z{constructor(e){super(e),this.buttonView=new p.Z(e),this._fileInputView=new f(e),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.setTemplate({tag:"span",attributes:{class:"ck-file-dialog-button"},children:[this.buttonView,this._fileInputView]}),this.buttonView.on("execute",(()=>{this._fileInputView.open()}))}focus(){this.buttonView.focus()}}class f extends g.Z{constructor(e){super(e),this.set("acceptedType"),this.set("allowMultipleFiles",!1);const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:t.to("acceptedType"),multiple:t.to("allowMultipleFiles")},on:{change:t.to((()=>{this.element&&this.element.files&&this.element.files.length&&this.fire("done",this.element.files),this.element.value=""}))}})}open(){this.element.click()}}class k extends o.Z{static get requires(){return[h]}static get pluginName(){return"Base64UploadAdapter"}init(){this.editor.plugins.get(h).createUploadAdapter=e=>new _(e)}}class _{constructor(e){this.loader=e}upload(){return new Promise(((e,t)=>{const s=this.reader=new window.FileReader;s.addEventListener("load",(()=>{e({default:s.result})})),s.addEventListener("error",(e=>{t(e)})),s.addEventListener("abort",(()=>{t()})),this.loader.file.then((e=>{s.readAsDataURL(e)}))}))}abort(){this.reader.abort()}}class b extends o.Z{static get requires(){return[h]}static get pluginName(){return"SimpleUploadAdapter"}init(){const e=this.editor.config.get("simpleUpload");e&&(e.uploadUrl?this.editor.plugins.get(h).createUploadAdapter=t=>new w(t,e):(0,r.KE)("simple-upload-adapter-missing-uploadurl"))}}class w{constructor(e,t){this.loader=e,this.options=t}upload(){return this.loader.file.then((e=>new Promise(((t,s)=>{this._initRequest(),this._initListeners(t,s,e),this._sendRequest(e)}))))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const e=this.xhr=new XMLHttpRequest;e.open("POST",this.options.uploadUrl,!0),e.responseType="json"}_initListeners(e,t,s){const o=this.xhr,i=this.loader,r=`Couldn't upload file: ${s.name}.`;o.addEventListener("error",(()=>t(r))),o.addEventListener("abort",(()=>t())),o.addEventListener("load",(()=>{const s=o.response;if(!s||s.error)return t(s&&s.error&&s.error.message?s.error.message:r);const i=s.url?{default:s.url}:s.urls;e({...s,urls:i})})),o.upload&&o.upload.addEventListener("progress",(e=>{e.lengthComputable&&(i.uploadTotal=e.total,i.uploaded=e.loaded)}))}_sendRequest(e){const t=this.options.headers||{},s=this.options.withCredentials||!1;for(const e of Object.keys(t))this.xhr.setRequestHeader(e,t[e]);this.xhr.withCredentials=s;const o=new FormData;o.append("upload",e),this.xhr.send(o)}}},"./src/utils.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{CKEditorError:()=>o.Bb,Collection:()=>o.FE,DomEmitterMixin:()=>o.Xu,ElementReplacer:()=>o.a6,EmitterMixin:()=>o.ln,FocusTracker:()=>o.Rh,KeystrokeHandler:()=>o.VD,Locale:()=>o.go,ObservableMixin:()=>o.Re,Rect:()=>o.UL,ResizeObserver:()=>o.do,createElement:()=>o.az,diff:()=>o.Hg,env:()=>o.OB,first:()=>o.Ps,getCode:()=>o.Cq,getDataFromElement:()=>o.yy,getEnvKeystrokeText:()=>o.XU,getLanguageDirection:()=>o.j9,getLocalizedArrowKeyCodeDirection:()=>o.mA,global:()=>o.CO,isArrowKeyCode:()=>o.dj,isForwardArrowKeyCode:()=>o.Zt,isVisible:()=>o.pn,keyCodes:()=>o.Do,logError:()=>o.H,logWarning:()=>o.KE,mix:()=>o.CD,parseKeystroke:()=>o.Zz,priorities:()=>o.tA,scrollAncestorsToShowTarget:()=>o.F0,scrollViewportToShowTarget:()=>o.mR,setDataInElement:()=>o.jS,toArray:()=>o.qo,toMap:()=>o.qL,toUnit:()=>o.nn,uid:()=>o.hQ,version:()=>o.i8});var o=s("./packages/ckeditor5-utils/src/index.ts")},"./src/widget.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{WIDGET_CLASS_NAME:()=>c.s4,WIDGET_SELECTED_CLASS_NAME:()=>c.Uo,Widget:()=>o.Z,WidgetResize:()=>S,WidgetToolbarRepository:()=>d,WidgetTypeAround:()=>O.Z,findOptimalInsertionRange:()=>c.KT,getLabel:()=>c.id,isWidget:()=>c.Qd,setHighlightHandling:()=>c.em,setLabel:()=>c.l6,toWidget:()=>c.XC,toWidgetEditable:()=>c.sC,viewToModelPositionOutsideModelElement:()=>c.$n});var o=s("./packages/ckeditor5-widget/src/widget.js"),i=s("./packages/ckeditor5-core/src/plugin.js"),r=s("./packages/ckeditor5-ui/src/panel/balloon/contextualballoon.js"),n=s("./packages/ckeditor5-ui/src/toolbar/toolbarview.js"),a=s("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),c=s("./packages/ckeditor5-widget/src/utils.js"),l=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class d extends i.Z{static get requires(){return[r.Z]}static get pluginName(){return"WidgetToolbarRepository"}init(){const e=this.editor;if(e.plugins.has("BalloonToolbar")){const t=e.plugins.get("BalloonToolbar");this.listenTo(t,"show",(t=>{(function(e){const t=e.getSelectedElement();return!(!t||!(0,c.Qd)(t))})(e.editing.view.document.selection)&&t.stop()}),{priority:"high"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",(()=>{this._updateToolbarsVisibility()})),this.listenTo(e.ui,"update",(()=>{this._updateToolbarsVisibility()})),this.listenTo(e.ui.focusTracker,"change:isFocused",(()=>{this._updateToolbarsVisibility()}),{priority:"low"})}destroy(){super.destroy();for(const e of this._toolbarDefinitions.values())e.view.destroy()}register(e,{ariaLabel:t,items:s,getRelatedElement:o,balloonClassName:i="ck-toolbar-container"}){if(!s.length)return void(0,l.KE)("widget-toolbar-no-items",{toolbarId:e});const r=this.editor,a=r.t,c=new n.Z(r.locale);if(c.ariaLabel=t||a("Widget toolbar"),this._toolbarDefinitions.has(e))throw new l.ZP("widget-toolbar-duplicated",this,{toolbarId:e});c.fillFromConfig(s,r.ui.componentFactory),this._toolbarDefinitions.set(e,{view:c,getRelatedElement:o,balloonClassName:i})}_updateToolbarsVisibility(){let e=0,t=null,s=null;for(const o of this._toolbarDefinitions.values()){const i=o.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&i)if(this.editor.ui.focusTracker.isFocused){const r=i.getAncestors().length;r>e&&(e=r,t=i,s=o)}else this._isToolbarVisible(o)&&this._hideToolbar(o);else this._isToolbarInBalloon(o)&&this._hideToolbar(o)}s&&this._showToolbar(s,t)}_hideToolbar(e){this._balloon.remove(e.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(e,t){this._isToolbarVisible(e)?h(this.editor,t):this._isToolbarInBalloon(e)||(this._balloon.add({view:e.view,position:u(this.editor,t),balloonClassName:e.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",(()=>{for(const e of this._toolbarDefinitions.values())if(this._isToolbarVisible(e)){const t=e.getRelatedElement(this.editor.editing.view.document.selection);h(this.editor,t)}})))}_isToolbarVisible(e){return this._balloon.visibleView===e.view}_isToolbarInBalloon(e){return this._balloon.hasView(e.view)}}function h(e,t){const s=e.plugins.get("ContextualBalloon"),o=u(e,t);s.updatePosition(o)}function u(e,t){const s=e.editing.view,o=a.Z.defaultPositions;return{target:s.domConverter.mapViewToDom(t),positions:[o.northArrowSouth,o.northArrowSouthWest,o.northArrowSouthEast,o.southArrowNorth,o.southArrowNorthWest,o.southArrowNorthEast,o.viewportStickyNorth]}}var p=s("./packages/ckeditor5-ui/src/template.js"),g=s("./packages/ckeditor5-utils/src/dom/rect.ts"),m=s("./packages/ckeditor5-utils/src/comparearrays.ts"),f=s("./packages/ckeditor5-utils/src/observablemixin.ts"),k=s("./packages/ckeditor5-utils/src/mix.ts");class _{constructor(e){this.set("activeHandlePosition",null),this.set("proposedWidthPercents",null),this.set("proposedWidth",null),this.set("proposedHeight",null),this.set("proposedHandleHostWidth",null),this.set("proposedHandleHostHeight",null),this._options=e,this._referenceCoordinates=null}begin(e,t,s){const o=new g.Z(t);this.activeHandlePosition=function(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const s of t)if(e.classList.contains(b(s)))return s}(e),this._referenceCoordinates=function(e,t){const s=new g.Z(e),o=t.split("-"),i={x:"right"==o[1]?s.right:s.left,y:"bottom"==o[0]?s.bottom:s.top};return i.x+=e.ownerDocument.defaultView.scrollX,i.y+=e.ownerDocument.defaultView.scrollY,i}(t,function(e){const t=e.split("-"),s={top:"bottom",bottom:"top",left:"right",right:"left"};return`${s[t[0]]}-${s[t[1]]}`}(this.activeHandlePosition)),this.originalWidth=o.width,this.originalHeight=o.height,this.aspectRatio=o.width/o.height;const i=s.style.width;i&&i.match(/^\d+(\.\d*)?%$/)?this.originalWidthPercents=parseFloat(i):this.originalWidthPercents=function(e,t){const s=e.parentElement,o=parseFloat(s.ownerDocument.defaultView.getComputedStyle(s).width);return t.width/o*100}(s,o)}update(e){this.proposedWidth=e.width,this.proposedHeight=e.height,this.proposedWidthPercents=e.widthPercents,this.proposedHandleHostWidth=e.handleHostWidth,this.proposedHandleHostHeight=e.handleHostHeight}}function b(e){return`ck-widget__resizer__handle-${e}`}(0,k.Z)(_,f.Z);var w=s("./packages/ckeditor5-ui/src/view.js");class v extends w.Z{constructor(){super();const e=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-size-view",e.to("_viewPosition",(e=>e?`ck-orientation-${e}`:""))],style:{display:e.if("_isVisible","none",(e=>!e))}},children:[{text:e.to("_label")}]})}_bindToState(e,t){this.bind("_isVisible").to(t,"proposedWidth",t,"proposedHeight",((e,t)=>null!==e&&null!==t)),this.bind("_label").to(t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",t,"proposedWidthPercents",((t,s,o)=>"px"===e.unit?`${t}×${s}`:`${o}%`)),this.bind("_viewPosition").to(t,"activeHandlePosition",t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",((e,t,s)=>t<50||s<50?"above-center":e))}_dismiss(){this.unbind(),this._isVisible=!1}}class y{constructor(e){this._options=e,this._viewResizerWrapper=null,this.set("isEnabled",!0),this.decorate("begin"),this.decorate("cancel"),this.decorate("commit"),this.decorate("updateSize"),this.on("commit",(e=>{this.state.proposedWidth||this.state.proposedWidthPercents||(this._cleanup(),e.stop())}),{priority:"high"}),this.on("change:isEnabled",(()=>{this.isEnabled&&this.redraw()}))}attach(){const e=this,t=this._options.viewElement;this._options.editor.editing.view.change((s=>{const o=s.createUIElement("div",{class:"ck ck-reset_all ck-widget__resizer"},(function(t){const s=this.toDomElement(t);return e._appendHandles(s),e._appendSizeUI(s),e.on("change:isEnabled",((e,t,o)=>{s.style.display=o?"":"none"})),s.style.display=e.isEnabled?"":"none",s}));s.insert(s.createPositionAt(t,"end"),o),s.addClass("ck-widget_with-resizer",t),this._viewResizerWrapper=o}))}begin(e){this.state=new _(this._options),this._sizeView._bindToState(this._options,this.state),this._initialViewWidth=this._options.viewElement.getStyle("width"),this.state.begin(e,this._getHandleHost(),this._getResizeHost())}updateSize(e){const t=this._proposeNewSize(e);this._options.editor.editing.view.change((e=>{const s=this._options.unit||"%",o=("%"===s?t.widthPercents:t.width)+s;e.setStyle("width",o,this._options.viewElement)}));const s=this._getHandleHost(),o=new g.Z(s);t.handleHostWidth=Math.round(o.width),t.handleHostHeight=Math.round(o.height);const i=new g.Z(s);t.width=Math.round(i.width),t.height=Math.round(i.height),this.redraw(o),this.state.update(t)}commit(){const e=this._options.unit||"%",t=("%"===e?this.state.proposedWidthPercents:this.state.proposedWidth)+e;this._options.editor.editing.view.change((()=>{this._cleanup(),this._options.onCommit(t)}))}cancel(){this._cleanup()}destroy(){this.cancel()}redraw(e){const t=this._domResizerWrapper;if(!((s=t)&&s.ownerDocument&&s.ownerDocument.contains(s)))return;var s;const o=t.parentElement,i=this._getHandleHost(),r=this._viewResizerWrapper,n=[r.getStyle("width"),r.getStyle("height"),r.getStyle("left"),r.getStyle("top")];let a;if(o.isSameNode(i)){const t=e||new g.Z(i);a=[t.width+"px",t.height+"px",void 0,void 0]}else a=[i.offsetWidth+"px",i.offsetHeight+"px",i.offsetLeft+"px",i.offsetTop+"px"];"same"!==(0,m.Z)(n,a)&&this._options.editor.editing.view.change((e=>{e.setStyle({width:a[0],height:a[1],left:a[2],top:a[3]},r)}))}containsHandle(e){return this._domResizerWrapper.contains(e)}static isResizeHandle(e){return e.classList.contains("ck-widget__resizer__handle")}_cleanup(){this._sizeView._dismiss();this._options.editor.editing.view.change((e=>{e.setStyle("width",this._initialViewWidth,this._options.viewElement)}))}_proposeNewSize(e){const t=this.state,s={x:(o=e).pageX,y:o.pageY};var o;const i=!this._options.isCentered||this._options.isCentered(this),r={x:t._referenceCoordinates.x-(s.x+t.originalWidth),y:s.y-t.originalHeight-t._referenceCoordinates.y};i&&t.activeHandlePosition.endsWith("-right")&&(r.x=s.x-(t._referenceCoordinates.x+t.originalWidth)),i&&(r.x*=2);const n={width:Math.abs(t.originalWidth+r.x),height:Math.abs(t.originalHeight+r.y)};n.dominant=n.width/t.aspectRatio>n.height?"width":"height",n.max=n[n.dominant];const a={width:n.width,height:n.height};return"width"==n.dominant?a.height=a.width/t.aspectRatio:a.width=a.height*t.aspectRatio,{width:Math.round(a.width),height:Math.round(a.height),widthPercents:Math.min(Math.round(t.originalWidthPercents/t.originalWidth*a.width*100)/100,100)}}_getResizeHost(){const e=this._domResizerWrapper.parentElement;return this._options.getResizeHost(e)}_getHandleHost(){const e=this._domResizerWrapper.parentElement;return this._options.getHandleHost(e)}get _domResizerWrapper(){return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper)}_appendHandles(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const o of t)e.appendChild(new p.ZP({tag:"div",attributes:{class:"ck-widget__resizer__handle "+(s=o,`ck-widget__resizer__handle-${s}`)}}).render());var s}_appendSizeUI(e){this._sizeView=new v,this._sizeView.render(),e.appendChild(this._sizeView.element)}}(0,k.Z)(y,f.Z);var Z=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),P=s("./packages/ckeditor5-utils/src/dom/global.ts"),x=s("./packages/ckeditor5-engine/src/view/observer/mouseobserver.js"),A=s("./node_modules/lodash-es/throttle.js"),j=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),T=s.n(j),C=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widgetresize.css"),E={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};T()(C.Z,E);C.Z.locals;class S extends i.Z{static get pluginName(){return"WidgetResize"}init(){const e=this.editor.editing,t=P.Z.window.document;this.set("visibleResizer",null),this.set("_activeResizer",null),this._resizers=new Map,e.view.addObserver(x.Z),this._observer=Object.create(Z.Z),this.listenTo(e.view.document,"mousedown",this._mouseDownListener.bind(this),{priority:"high"}),this._observer.listenTo(t,"mousemove",this._mouseMoveListener.bind(this)),this._observer.listenTo(t,"mouseup",this._mouseUpListener.bind(this));const s=()=>{this.visibleResizer&&this.visibleResizer.redraw()};this._redrawFocusedResizerThrottled=(0,A.Z)(s,200),this.on("change:visibleResizer",s),this.editor.ui.on("update",this._redrawFocusedResizerThrottled),this.editor.model.document.on("change",(()=>{for(const[e,t]of this._resizers)e.isAttached()||(this._resizers.delete(e),t.destroy())}),{priority:"lowest"}),this._observer.listenTo(P.Z.window,"resize",this._redrawFocusedResizerThrottled);const o=this.editor.editing.view.document.selection;o.on("change",(()=>{const e=o.getSelectedElement();this.visibleResizer=this.getResizerByViewElement(e)||null}))}destroy(){this._observer.stopListening();for(const e of this._resizers.values())e.destroy();this._redrawFocusedResizerThrottled.cancel()}attachTo(e){const t=new y(e),s=this.editor.plugins;if(t.attach(),s.has("WidgetToolbarRepository")){const e=s.get("WidgetToolbarRepository");t.on("begin",(()=>{e.forceDisabled("resize")}),{priority:"lowest"}),t.on("cancel",(()=>{e.clearForceDisabled("resize")}),{priority:"highest"}),t.on("commit",(()=>{e.clearForceDisabled("resize")}),{priority:"highest"})}this._resizers.set(e.viewElement,t);const o=this.editor.editing.view.document.selection.getSelectedElement();return this.getResizerByViewElement(o)==t&&(this.visibleResizer=t),t}getResizerByViewElement(e){return this._resizers.get(e)}_getResizerByHandle(e){for(const t of this._resizers.values())if(t.containsHandle(e))return t}_mouseDownListener(e,t){const s=t.domTarget;y.isResizeHandle(s)&&(this._activeResizer=this._getResizerByHandle(s),this._activeResizer&&(this._activeResizer.begin(s),e.stop(),t.preventDefault()))}_mouseMoveListener(e,t){this._activeResizer&&this._activeResizer.updateSize(t)}_mouseUpListener(){this._activeResizer&&(this._activeResizer.commit(),this._activeResizer=null)}}(0,k.Z)(S,f.Z);var O=s("./packages/ckeditor5-widget/src/widgettypearound/widgettypearound.js")},"?7cdd":(e,t,s)=>{e.exports=s},"./node_modules/lodash-es/_ListCache.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});const o=function(){this.__data__=[],this.size=0};var i=s("./node_modules/lodash-es/eq.js");const r=function(e,t){for(var s=e.length;s--;)if((0,i.Z)(e[s][0],t))return s;return-1};var n=Array.prototype.splice;const a=function(e){var t=this.__data__,s=r(t,e);return!(s<0)&&(s==t.length-1?t.pop():n.call(t,s,1),--this.size,!0)};const c=function(e){var t=this.__data__,s=r(t,e);return s<0?void 0:t[s][1]};const l=function(e){return r(this.__data__,e)>-1};const d=function(e,t){var s=this.__data__,o=r(s,e);return o<0?(++this.size,s.push([e,t])):s[o][1]=t,this};function h(e){var t=-1,s=null==e?0:e.length;for(this.clear();++t<s;){var o=e[t];this.set(o[0],o[1])}}h.prototype.clear=o,h.prototype.delete=a,h.prototype.get=c,h.prototype.has=l,h.prototype.set=d;const u=h},"./node_modules/lodash-es/_Map.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_getNative.js"),i=s("./node_modules/lodash-es/_root.js");const r=(0,o.Z)(i.Z,"Map")},"./node_modules/lodash-es/_MapCache.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Z});const o=(0,s("./node_modules/lodash-es/_getNative.js").Z)(Object,"create");const i=function(){this.__data__=o?o(null):{},this.size=0};const r=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t};var n=Object.prototype.hasOwnProperty;const a=function(e){var t=this.__data__;if(o){var s=t[e];return"__lodash_hash_undefined__"===s?void 0:s}return n.call(t,e)?t[e]:void 0};var c=Object.prototype.hasOwnProperty;const l=function(e){var t=this.__data__;return o?void 0!==t[e]:c.call(t,e)};const d=function(e,t){var s=this.__data__;return this.size+=this.has(e)?0:1,s[e]=o&&void 0===t?"__lodash_hash_undefined__":t,this};function h(e){var t=-1,s=null==e?0:e.length;for(this.clear();++t<s;){var o=e[t];this.set(o[0],o[1])}}h.prototype.clear=i,h.prototype.delete=r,h.prototype.get=a,h.prototype.has=l,h.prototype.set=d;const u=h;var p=s("./node_modules/lodash-es/_ListCache.js"),g=s("./node_modules/lodash-es/_Map.js");const m=function(){this.size=0,this.__data__={hash:new u,map:new(g.Z||p.Z),string:new u}};const f=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e};const k=function(e,t){var s=e.__data__;return f(t)?s["string"==typeof t?"string":"hash"]:s.map};const _=function(e){var t=k(this,e).delete(e);return this.size-=t?1:0,t};const b=function(e){return k(this,e).get(e)};const w=function(e){return k(this,e).has(e)};const v=function(e,t){var s=k(this,e),o=s.size;return s.set(e,t),this.size+=s.size==o?0:1,this};function y(e){var t=-1,s=null==e?0:e.length;for(this.clear();++t<s;){var o=e[t];this.set(o[0],o[1])}}y.prototype.clear=m,y.prototype.delete=_,y.prototype.get=b,y.prototype.has=w,y.prototype.set=v;const Z=y},"./node_modules/lodash-es/_Stack.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./node_modules/lodash-es/_ListCache.js");const i=function(){this.__data__=new o.Z,this.size=0};const r=function(e){var t=this.__data__,s=t.delete(e);return this.size=t.size,s};const n=function(e){return this.__data__.get(e)};const a=function(e){return this.__data__.has(e)};var c=s("./node_modules/lodash-es/_Map.js"),l=s("./node_modules/lodash-es/_MapCache.js");const d=function(e,t){var s=this.__data__;if(s instanceof o.Z){var i=s.__data__;if(!c.Z||i.length<199)return i.push([e,t]),this.size=++s.size,this;s=this.__data__=new l.Z(i)}return s.set(e,t),this.size=s.size,this};function h(e){var t=this.__data__=new o.Z(e);this.size=t.size}h.prototype.clear=i,h.prototype.delete=r,h.prototype.get=n,h.prototype.has=a,h.prototype.set=d;const u=h},"./node_modules/lodash-es/_Symbol.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=s("./node_modules/lodash-es/_root.js").Z.Symbol},"./node_modules/lodash-es/_Uint8Array.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=s("./node_modules/lodash-es/_root.js").Z.Uint8Array},"./node_modules/lodash-es/_arrayLikeKeys.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});const o=function(e,t){for(var s=-1,o=Array(e);++s<e;)o[s]=t(s);return o};var i=s("./node_modules/lodash-es/isArguments.js"),r=s("./node_modules/lodash-es/isArray.js"),n=s("./node_modules/lodash-es/isBuffer.js"),a=s("./node_modules/lodash-es/_isIndex.js"),c=s("./node_modules/lodash-es/isTypedArray.js"),l=Object.prototype.hasOwnProperty;const d=function(e,t){var s=(0,r.Z)(e),d=!s&&(0,i.Z)(e),h=!s&&!d&&(0,n.Z)(e),u=!s&&!d&&!h&&(0,c.Z)(e),p=s||d||h||u,g=p?o(e.length,String):[],m=g.length;for(var f in e)!t&&!l.call(e,f)||p&&("length"==f||h&&("offset"==f||"parent"==f)||u&&("buffer"==f||"byteLength"==f||"byteOffset"==f)||(0,a.Z)(f,m))||g.push(f);return g}},"./node_modules/lodash-es/_arrayPush.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e,t){for(var s=-1,o=t.length,i=e.length;++s<o;)e[i+s]=t[s];return e}},"./node_modules/lodash-es/_assignValue.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./node_modules/lodash-es/_baseAssignValue.js"),i=s("./node_modules/lodash-es/eq.js"),r=Object.prototype.hasOwnProperty;const n=function(e,t,s){var n=e[t];r.call(e,t)&&(0,i.Z)(n,s)&&(void 0!==s||t in e)||(0,o.Z)(e,t,s)}},"./node_modules/lodash-es/_baseAssignValue.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_defineProperty.js");const i=function(e,t,s){"__proto__"==t&&o.Z?(0,o.Z)(e,t,{configurable:!0,enumerable:!0,value:s,writable:!0}):e[t]=s}},"./node_modules/lodash-es/_baseClone.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Y});var o=s("./node_modules/lodash-es/_Stack.js");const i=function(e,t){for(var s=-1,o=null==e?0:e.length;++s<o&&!1!==t(e[s],s,e););return e};var r=s("./node_modules/lodash-es/_assignValue.js"),n=s("./node_modules/lodash-es/_copyObject.js"),a=s("./node_modules/lodash-es/keys.js");const c=function(e,t){return e&&(0,n.Z)(t,(0,a.Z)(t),e)};var l=s("./node_modules/lodash-es/keysIn.js");const d=function(e,t){return e&&(0,n.Z)(t,(0,l.Z)(t),e)};var h=s("./node_modules/lodash-es/_cloneBuffer.js"),u=s("./node_modules/lodash-es/_copyArray.js"),p=s("./node_modules/lodash-es/_getSymbols.js");const g=function(e,t){return(0,n.Z)(e,(0,p.Z)(e),t)};var m=s("./node_modules/lodash-es/_arrayPush.js"),f=s("./node_modules/lodash-es/_getPrototype.js"),k=s("./node_modules/lodash-es/stubArray.js");const _=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)(0,m.Z)(t,(0,p.Z)(e)),e=(0,f.Z)(e);return t}:k.Z;const b=function(e,t){return(0,n.Z)(e,_(e),t)};var w=s("./node_modules/lodash-es/_getAllKeys.js"),v=s("./node_modules/lodash-es/_baseGetAllKeys.js");const y=function(e){return(0,v.Z)(e,l.Z,_)};var Z=s("./node_modules/lodash-es/_getTag.js"),P=Object.prototype.hasOwnProperty;const x=function(e){var t=e.length,s=new e.constructor(t);return t&&"string"==typeof e[0]&&P.call(e,"index")&&(s.index=e.index,s.input=e.input),s};var A=s("./node_modules/lodash-es/_cloneArrayBuffer.js");const j=function(e,t){var s=t?(0,A.Z)(e.buffer):e.buffer;return new e.constructor(s,e.byteOffset,e.byteLength)};var T=/\w*$/;const C=function(e){var t=new e.constructor(e.source,T.exec(e));return t.lastIndex=e.lastIndex,t};var E=s("./node_modules/lodash-es/_Symbol.js"),S=E.Z?E.Z.prototype:void 0,O=S?S.valueOf:void 0;const R=function(e){return O?Object(O.call(e)):{}};var M=s("./node_modules/lodash-es/_cloneTypedArray.js");const N=function(e,t,s){var o=e.constructor;switch(t){case"[object ArrayBuffer]":return(0,A.Z)(e);case"[object Boolean]":case"[object Date]":return new o(+e);case"[object DataView]":return j(e,s);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return(0,M.Z)(e,s);case"[object Map]":case"[object Set]":return new o;case"[object Number]":case"[object String]":return new o(e);case"[object RegExp]":return C(e);case"[object Symbol]":return R(e)}};var I=s("./node_modules/lodash-es/_initCloneObject.js"),V=s("./node_modules/lodash-es/isArray.js"),z=s("./node_modules/lodash-es/isBuffer.js"),D=s("./node_modules/lodash-es/isObjectLike.js");const B=function(e){return(0,D.Z)(e)&&"[object Map]"==(0,Z.Z)(e)};var F=s("./node_modules/lodash-es/_baseUnary.js"),L=s("./node_modules/lodash-es/_nodeUtil.js"),W=L.Z&&L.Z.isMap;const q=W?(0,F.Z)(W):B;var $=s("./node_modules/lodash-es/isObject.js");const H=function(e){return(0,D.Z)(e)&&"[object Set]"==(0,Z.Z)(e)};var U=L.Z&&L.Z.isSet;const K=U?(0,F.Z)(U):H;var G="[object Arguments]",J="[object Function]",X="[object Object]",Q={};Q[G]=Q["[object Array]"]=Q["[object ArrayBuffer]"]=Q["[object DataView]"]=Q["[object Boolean]"]=Q["[object Date]"]=Q["[object Float32Array]"]=Q["[object Float64Array]"]=Q["[object Int8Array]"]=Q["[object Int16Array]"]=Q["[object Int32Array]"]=Q["[object Map]"]=Q["[object Number]"]=Q[X]=Q["[object RegExp]"]=Q["[object Set]"]=Q["[object String]"]=Q["[object Symbol]"]=Q["[object Uint8Array]"]=Q["[object Uint8ClampedArray]"]=Q["[object Uint16Array]"]=Q["[object Uint32Array]"]=!0,Q["[object Error]"]=Q[J]=Q["[object WeakMap]"]=!1;const Y=function e(t,s,n,p,m,f){var k,_=1&s,v=2&s,P=4&s;if(n&&(k=m?n(t,p,m,f):n(t)),void 0!==k)return k;if(!(0,$.Z)(t))return t;var A=(0,V.Z)(t);if(A){if(k=x(t),!_)return(0,u.Z)(t,k)}else{var j=(0,Z.Z)(t),T=j==J||"[object GeneratorFunction]"==j;if((0,z.Z)(t))return(0,h.Z)(t,_);if(j==X||j==G||T&&!m){if(k=v||T?{}:(0,I.Z)(t),!_)return v?b(t,d(k,t)):g(t,c(k,t))}else{if(!Q[j])return m?t:{};k=N(t,j,_)}}f||(f=new o.Z);var C=f.get(t);if(C)return C;f.set(t,k),K(t)?t.forEach((function(o){k.add(e(o,s,n,o,t,f))})):q(t)&&t.forEach((function(o,i){k.set(i,e(o,s,n,i,t,f))}));var E=P?v?y:w.Z:v?l.Z:a.Z,S=A?void 0:E(t);return i(S||t,(function(o,i){S&&(o=t[i=o]),(0,r.Z)(k,i,e(o,s,n,i,t,f))})),k}},"./node_modules/lodash-es/_baseGetAllKeys.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_arrayPush.js"),i=s("./node_modules/lodash-es/isArray.js");const r=function(e,t,s){var r=t(e);return(0,i.Z)(e)?r:(0,o.Z)(r,s(e))}},"./node_modules/lodash-es/_baseGetTag.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./node_modules/lodash-es/_Symbol.js"),i=Object.prototype,r=i.hasOwnProperty,n=i.toString,a=o.Z?o.Z.toStringTag:void 0;const c=function(e){var t=r.call(e,a),s=e[a];try{e[a]=void 0;var o=!0}catch(e){}var i=n.call(e);return o&&(t?e[a]=s:delete e[a]),i};var l=Object.prototype.toString;const d=function(e){return l.call(e)};var h=o.Z?o.Z.toStringTag:void 0;const u=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":h&&h in Object(e)?c(e):d(e)}},"./node_modules/lodash-es/_baseIsEqual.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>R});var o=s("./node_modules/lodash-es/_Stack.js"),i=s("./node_modules/lodash-es/_MapCache.js");const r=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this};const n=function(e){return this.__data__.has(e)};function a(e){var t=-1,s=null==e?0:e.length;for(this.__data__=new i.Z;++t<s;)this.add(e[t])}a.prototype.add=a.prototype.push=r,a.prototype.has=n;const c=a;const l=function(e,t){for(var s=-1,o=null==e?0:e.length;++s<o;)if(t(e[s],s,e))return!0;return!1};const d=function(e,t){return e.has(t)};const h=function(e,t,s,o,i,r){var n=1&s,a=e.length,h=t.length;if(a!=h&&!(n&&h>a))return!1;var u=r.get(e),p=r.get(t);if(u&&p)return u==t&&p==e;var g=-1,m=!0,f=2&s?new c:void 0;for(r.set(e,t),r.set(t,e);++g<a;){var k=e[g],_=t[g];if(o)var b=n?o(_,k,g,t,e,r):o(k,_,g,e,t,r);if(void 0!==b){if(b)continue;m=!1;break}if(f){if(!l(t,(function(e,t){if(!d(f,t)&&(k===e||i(k,e,s,o,r)))return f.push(t)}))){m=!1;break}}else if(k!==_&&!i(k,_,s,o,r)){m=!1;break}}return r.delete(e),r.delete(t),m};var u=s("./node_modules/lodash-es/_Symbol.js"),p=s("./node_modules/lodash-es/_Uint8Array.js"),g=s("./node_modules/lodash-es/eq.js");const m=function(e){var t=-1,s=Array(e.size);return e.forEach((function(e,o){s[++t]=[o,e]})),s};const f=function(e){var t=-1,s=Array(e.size);return e.forEach((function(e){s[++t]=e})),s};var k=u.Z?u.Z.prototype:void 0,_=k?k.valueOf:void 0;const b=function(e,t,s,o,i,r,n){switch(s){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!r(new p.Z(e),new p.Z(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return(0,g.Z)(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var a=m;case"[object Set]":var c=1&o;if(a||(a=f),e.size!=t.size&&!c)return!1;var l=n.get(e);if(l)return l==t;o|=2,n.set(e,t);var d=h(a(e),a(t),o,i,r,n);return n.delete(e),d;case"[object Symbol]":if(_)return _.call(e)==_.call(t)}return!1};var w=s("./node_modules/lodash-es/_getAllKeys.js"),v=Object.prototype.hasOwnProperty;const y=function(e,t,s,o,i,r){var n=1&s,a=(0,w.Z)(e),c=a.length;if(c!=(0,w.Z)(t).length&&!n)return!1;for(var l=c;l--;){var d=a[l];if(!(n?d in t:v.call(t,d)))return!1}var h=r.get(e),u=r.get(t);if(h&&u)return h==t&&u==e;var p=!0;r.set(e,t),r.set(t,e);for(var g=n;++l<c;){var m=e[d=a[l]],f=t[d];if(o)var k=n?o(f,m,d,t,e,r):o(m,f,d,e,t,r);if(!(void 0===k?m===f||i(m,f,s,o,r):k)){p=!1;break}g||(g="constructor"==d)}if(p&&!g){var _=e.constructor,b=t.constructor;_==b||!("constructor"in e)||!("constructor"in t)||"function"==typeof _&&_ instanceof _&&"function"==typeof b&&b instanceof b||(p=!1)}return r.delete(e),r.delete(t),p};var Z=s("./node_modules/lodash-es/_getTag.js"),P=s("./node_modules/lodash-es/isArray.js"),x=s("./node_modules/lodash-es/isBuffer.js"),A=s("./node_modules/lodash-es/isTypedArray.js"),j="[object Arguments]",T="[object Array]",C="[object Object]",E=Object.prototype.hasOwnProperty;const S=function(e,t,s,i,r,n){var a=(0,P.Z)(e),c=(0,P.Z)(t),l=a?T:(0,Z.Z)(e),d=c?T:(0,Z.Z)(t),u=(l=l==j?C:l)==C,p=(d=d==j?C:d)==C,g=l==d;if(g&&(0,x.Z)(e)){if(!(0,x.Z)(t))return!1;a=!0,u=!1}if(g&&!u)return n||(n=new o.Z),a||(0,A.Z)(e)?h(e,t,s,i,r,n):b(e,t,l,s,i,r,n);if(!(1&s)){var m=u&&E.call(e,"__wrapped__"),f=p&&E.call(t,"__wrapped__");if(m||f){var k=m?e.value():e,_=f?t.value():t;return n||(n=new o.Z),r(k,_,s,i,n)}}return!!g&&(n||(n=new o.Z),y(e,t,s,i,r,n))};var O=s("./node_modules/lodash-es/isObjectLike.js");const R=function e(t,s,o,i,r){return t===s||(null==t||null==s||!(0,O.Z)(t)&&!(0,O.Z)(s)?t!=t&&s!=s:S(t,s,o,i,e,r))}},"./node_modules/lodash-es/_baseUnary.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e){return function(t){return e(t)}}},"./node_modules/lodash-es/_cloneArrayBuffer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_Uint8Array.js");const i=function(e){var t=new e.constructor(e.byteLength);return new o.Z(t).set(new o.Z(e)),t}},"./node_modules/lodash-es/_cloneBuffer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./node_modules/lodash-es/_root.js"),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,r=i&&"object"==typeof module&&module&&!module.nodeType&&module,n=r&&r.exports===i?o.Z.Buffer:void 0,a=n?n.allocUnsafe:void 0;const c=function(e,t){if(t)return e.slice();var s=e.length,o=a?a(s):new e.constructor(s);return e.copy(o),o}},"./node_modules/lodash-es/_cloneTypedArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_cloneArrayBuffer.js");const i=function(e,t){var s=t?(0,o.Z)(e.buffer):e.buffer;return new e.constructor(s,e.byteOffset,e.length)}},"./node_modules/lodash-es/_copyArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e,t){var s=-1,o=e.length;for(t||(t=Array(o));++s<o;)t[s]=e[s];return t}},"./node_modules/lodash-es/_copyObject.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_assignValue.js"),i=s("./node_modules/lodash-es/_baseAssignValue.js");const r=function(e,t,s,r){var n=!s;s||(s={});for(var a=-1,c=t.length;++a<c;){var l=t[a],d=r?r(s[l],e[l],l,s,e):void 0;void 0===d&&(d=e[l]),n?(0,i.Z)(s,l,d):(0,o.Z)(s,l,d)}return s}},"./node_modules/lodash-es/_createAssigner.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>_});const o=function(e){return e};const i=function(e,t,s){switch(s.length){case 0:return e.call(t);case 1:return e.call(t,s[0]);case 2:return e.call(t,s[0],s[1]);case 3:return e.call(t,s[0],s[1],s[2])}return e.apply(t,s)};var r=Math.max;const n=function(e,t,s){return t=r(void 0===t?e.length-1:t,0),function(){for(var o=arguments,n=-1,a=r(o.length-t,0),c=Array(a);++n<a;)c[n]=o[t+n];n=-1;for(var l=Array(t+1);++n<t;)l[n]=o[n];return l[t]=s(c),i(e,this,l)}};const a=function(e){return function(){return e}};var c=s("./node_modules/lodash-es/_defineProperty.js");const l=c.Z?function(e,t){return(0,c.Z)(e,"toString",{configurable:!0,enumerable:!1,value:a(t),writable:!0})}:o;var d=Date.now;const h=function(e){var t=0,s=0;return function(){var o=d(),i=16-(o-s);if(s=o,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(l);const u=function(e,t){return h(n(e,t,o),e+"")};var p=s("./node_modules/lodash-es/eq.js"),g=s("./node_modules/lodash-es/isArrayLike.js"),m=s("./node_modules/lodash-es/_isIndex.js"),f=s("./node_modules/lodash-es/isObject.js");const k=function(e,t,s){if(!(0,f.Z)(s))return!1;var o=typeof t;return!!("number"==o?(0,g.Z)(s)&&(0,m.Z)(t,s.length):"string"==o&&t in s)&&(0,p.Z)(s[t],e)};const _=function(e){return u((function(t,s){var o=-1,i=s.length,r=i>1?s[i-1]:void 0,n=i>2?s[2]:void 0;for(r=e.length>3&&"function"==typeof r?(i--,r):void 0,n&&k(s[0],s[1],n)&&(r=i<3?void 0:r,i=1),t=Object(t);++o<i;){var a=s[o];a&&e(t,a,o,r)}return t}))}},"./node_modules/lodash-es/_defineProperty.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_getNative.js");const i=function(){try{var e=(0,o.Z)(Object,"defineProperty");return e({},"",{}),e}catch(e){}}()},"./node_modules/lodash-es/_freeGlobal.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o="object"==typeof global&&global&&global.Object===Object&&global},"./node_modules/lodash-es/_getAllKeys.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./node_modules/lodash-es/_baseGetAllKeys.js"),i=s("./node_modules/lodash-es/_getSymbols.js"),r=s("./node_modules/lodash-es/keys.js");const n=function(e){return(0,o.Z)(e,r.Z,i.Z)}},"./node_modules/lodash-es/_getNative.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>_});var o=s("./node_modules/lodash-es/isFunction.js");const i=s("./node_modules/lodash-es/_root.js").Z["__core-js_shared__"];var r,n=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";const a=function(e){return!!n&&n in e};var c=s("./node_modules/lodash-es/isObject.js"),l=s("./node_modules/lodash-es/_toSource.js"),d=/^\[object .+?Constructor\]$/,h=Function.prototype,u=Object.prototype,p=h.toString,g=u.hasOwnProperty,m=RegExp("^"+p.call(g).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const f=function(e){return!(!(0,c.Z)(e)||a(e))&&((0,o.Z)(e)?m:d).test((0,l.Z)(e))};const k=function(e,t){return null==e?void 0:e[t]};const _=function(e,t){var s=k(e,t);return f(s)?s:void 0}},"./node_modules/lodash-es/_getPrototype.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=(0,s("./node_modules/lodash-es/_overArg.js").Z)(Object.getPrototypeOf,Object)},"./node_modules/lodash-es/_getSymbols.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});const o=function(e,t){for(var s=-1,o=null==e?0:e.length,i=0,r=[];++s<o;){var n=e[s];t(n,s,e)&&(r[i++]=n)}return r};var i=s("./node_modules/lodash-es/stubArray.js"),r=Object.prototype.propertyIsEnumerable,n=Object.getOwnPropertySymbols;const a=n?function(e){return null==e?[]:(e=Object(e),o(n(e),(function(t){return r.call(e,t)})))}:i.Z},"./node_modules/lodash-es/_getTag.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Z});var o=s("./node_modules/lodash-es/_getNative.js"),i=s("./node_modules/lodash-es/_root.js");const r=(0,o.Z)(i.Z,"DataView");var n=s("./node_modules/lodash-es/_Map.js");const a=(0,o.Z)(i.Z,"Promise");const c=(0,o.Z)(i.Z,"Set");const l=(0,o.Z)(i.Z,"WeakMap");var d=s("./node_modules/lodash-es/_baseGetTag.js"),h=s("./node_modules/lodash-es/_toSource.js"),u="[object Map]",p="[object Promise]",g="[object Set]",m="[object WeakMap]",f="[object DataView]",k=(0,h.Z)(r),_=(0,h.Z)(n.Z),b=(0,h.Z)(a),w=(0,h.Z)(c),v=(0,h.Z)(l),y=d.Z;(r&&y(new r(new ArrayBuffer(1)))!=f||n.Z&&y(new n.Z)!=u||a&&y(a.resolve())!=p||c&&y(new c)!=g||l&&y(new l)!=m)&&(y=function(e){var t=(0,d.Z)(e),s="[object Object]"==t?e.constructor:void 0,o=s?(0,h.Z)(s):"";if(o)switch(o){case k:return f;case _:return u;case b:return p;case w:return g;case v:return m}return t});const Z=y},"./node_modules/lodash-es/_initCloneObject.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./node_modules/lodash-es/isObject.js"),i=Object.create;const r=function(){function e(){}return function(t){if(!(0,o.Z)(t))return{};if(i)return i(t);e.prototype=t;var s=new e;return e.prototype=void 0,s}}();var n=s("./node_modules/lodash-es/_getPrototype.js"),a=s("./node_modules/lodash-es/_isPrototype.js");const c=function(e){return"function"!=typeof e.constructor||(0,a.Z)(e)?{}:r((0,n.Z)(e))}},"./node_modules/lodash-es/_isIndex.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=/^(?:0|[1-9]\d*)$/;const i=function(e,t){var s=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==s||"symbol"!=s&&o.test(e))&&e>-1&&e%1==0&&e<t}},"./node_modules/lodash-es/_isPrototype.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=Object.prototype;const i=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||o)}},"./node_modules/lodash-es/_nodeUtil.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./node_modules/lodash-es/_freeGlobal.js"),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,r=i&&"object"==typeof module&&module&&!module.nodeType&&module,n=r&&r.exports===i&&o.Z.process;const a=function(){try{var e=r&&r.require&&r.require("util").types;return e||n&&n.binding&&n.binding("util")}catch(e){}}()},"./node_modules/lodash-es/_overArg.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e,t){return function(s){return e(t(s))}}},"./node_modules/lodash-es/_root.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_freeGlobal.js"),i="object"==typeof self&&self&&self.Object===Object&&self;const r=o.Z||i||Function("return this")()},"./node_modules/lodash-es/_toSource.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=Function.prototype.toString;const i=function(e){if(null!=e){try{return o.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},"./node_modules/lodash-es/assignIn.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./node_modules/lodash-es/_copyObject.js"),i=s("./node_modules/lodash-es/_createAssigner.js"),r=s("./node_modules/lodash-es/keysIn.js");const n=(0,i.Z)((function(e,t){(0,o.Z)(t,(0,r.Z)(t),e)}))},"./node_modules/lodash-es/clone.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_baseClone.js");const i=function(e){return(0,o.Z)(e,4)}},"./node_modules/lodash-es/cloneDeep.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_baseClone.js");const i=function(e){return(0,o.Z)(e,5)}},"./node_modules/lodash-es/cloneDeepWith.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_baseClone.js");const i=function(e,t){return t="function"==typeof t?t:void 0,(0,o.Z)(e,5,t)}},"./node_modules/lodash-es/debounce.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>_});var o=s("./node_modules/lodash-es/isObject.js"),i=s("./node_modules/lodash-es/_root.js");const r=function(){return i.Z.Date.now()};var n=/\s/;const a=function(e){for(var t=e.length;t--&&n.test(e.charAt(t)););return t};var c=/^\s+/;const l=function(e){return e?e.slice(0,a(e)+1).replace(c,""):e};var d=s("./node_modules/lodash-es/isSymbol.js"),h=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,p=/^0o[0-7]+$/i,g=parseInt;const m=function(e){if("number"==typeof e)return e;if((0,d.Z)(e))return NaN;if((0,o.Z)(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=(0,o.Z)(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=l(e);var s=u.test(e);return s||p.test(e)?g(e.slice(2),s?2:8):h.test(e)?NaN:+e};var f=Math.max,k=Math.min;const _=function(e,t,s){var i,n,a,c,l,d,h=0,u=!1,p=!1,g=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function _(t){var s=i,o=n;return i=n=void 0,h=t,c=e.apply(o,s)}function b(e){return h=e,l=setTimeout(v,t),u?_(e):c}function w(e){var s=e-d;return void 0===d||s>=t||s<0||p&&e-h>=a}function v(){var e=r();if(w(e))return y(e);l=setTimeout(v,function(e){var s=t-(e-d);return p?k(s,a-(e-h)):s}(e))}function y(e){return l=void 0,g&&i?_(e):(i=n=void 0,c)}function Z(){var e=r(),s=w(e);if(i=arguments,n=this,d=e,s){if(void 0===l)return b(d);if(p)return clearTimeout(l),l=setTimeout(v,t),_(d)}return void 0===l&&(l=setTimeout(v,t)),c}return t=m(t)||0,(0,o.Z)(s)&&(u=!!s.leading,a=(p="maxWait"in s)?f(m(s.maxWait)||0,t):a,g="trailing"in s?!!s.trailing:g),Z.cancel=function(){void 0!==l&&clearTimeout(l),h=0,i=d=n=l=void 0},Z.flush=function(){return void 0===l?c:y(r())},Z}},"./node_modules/lodash-es/eq.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e,t){return e===t||e!=e&&t!=t}},"./node_modules/lodash-es/isArguments.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/isObjectLike.js");const r=function(e){return(0,i.Z)(e)&&"[object Arguments]"==(0,o.Z)(e)};var n=Object.prototype,a=n.hasOwnProperty,c=n.propertyIsEnumerable;const l=r(function(){return arguments}())?r:function(e){return(0,i.Z)(e)&&a.call(e,"callee")&&!c.call(e,"callee")}},"./node_modules/lodash-es/isArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=Array.isArray},"./node_modules/lodash-es/isArrayLike.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/isFunction.js"),i=s("./node_modules/lodash-es/isLength.js");const r=function(e){return null!=e&&(0,i.Z)(e.length)&&!(0,o.Z)(e)}},"./node_modules/lodash-es/isBuffer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./node_modules/lodash-es/_root.js");const i=function(){return!1};var r="object"==typeof exports&&exports&&!exports.nodeType&&exports,n=r&&"object"==typeof module&&module&&!module.nodeType&&module,a=n&&n.exports===r?o.Z.Buffer:void 0;const c=(a?a.isBuffer:void 0)||i},"./node_modules/lodash-es/isElement.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/isObjectLike.js"),i=s("./node_modules/lodash-es/isPlainObject.js");const r=function(e){return(0,o.Z)(e)&&1===e.nodeType&&!(0,i.Z)(e)}},"./node_modules/lodash-es/isFunction.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/isObject.js");const r=function(e){if(!(0,i.Z)(e))return!1;var t=(0,o.Z)(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},"./node_modules/lodash-es/isLength.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},"./node_modules/lodash-es/isObject.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},"./node_modules/lodash-es/isObjectLike.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e){return null!=e&&"object"==typeof e}},"./node_modules/lodash-es/isPlainObject.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/_getPrototype.js"),r=s("./node_modules/lodash-es/isObjectLike.js"),n=Function.prototype,a=Object.prototype,c=n.toString,l=a.hasOwnProperty,d=c.call(Object);const h=function(e){if(!(0,r.Z)(e)||"[object Object]"!=(0,o.Z)(e))return!1;var t=(0,i.Z)(e);if(null===t)return!0;var s=l.call(t,"constructor")&&t.constructor;return"function"==typeof s&&s instanceof s&&c.call(s)==d}},"./node_modules/lodash-es/isSymbol.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/isObjectLike.js");const r=function(e){return"symbol"==typeof e||(0,i.Z)(e)&&"[object Symbol]"==(0,o.Z)(e)}},"./node_modules/lodash-es/isTypedArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/isLength.js"),r=s("./node_modules/lodash-es/isObjectLike.js"),n={};n["[object Float32Array]"]=n["[object Float64Array]"]=n["[object Int8Array]"]=n["[object Int16Array]"]=n["[object Int32Array]"]=n["[object Uint8Array]"]=n["[object Uint8ClampedArray]"]=n["[object Uint16Array]"]=n["[object Uint32Array]"]=!0,n["[object Arguments]"]=n["[object Array]"]=n["[object ArrayBuffer]"]=n["[object Boolean]"]=n["[object DataView]"]=n["[object Date]"]=n["[object Error]"]=n["[object Function]"]=n["[object Map]"]=n["[object Number]"]=n["[object Object]"]=n["[object RegExp]"]=n["[object Set]"]=n["[object String]"]=n["[object WeakMap]"]=!1;const a=function(e){return(0,r.Z)(e)&&(0,i.Z)(e.length)&&!!n[(0,o.Z)(e)]};var c=s("./node_modules/lodash-es/_baseUnary.js"),l=s("./node_modules/lodash-es/_nodeUtil.js"),d=l.Z&&l.Z.isTypedArray;const h=d?(0,c.Z)(d):a},"./node_modules/lodash-es/keys.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./node_modules/lodash-es/_arrayLikeKeys.js"),i=s("./node_modules/lodash-es/_isPrototype.js");const r=(0,s("./node_modules/lodash-es/_overArg.js").Z)(Object.keys,Object);var n=Object.prototype.hasOwnProperty;const a=function(e){if(!(0,i.Z)(e))return r(e);var t=[];for(var s in Object(e))n.call(e,s)&&"constructor"!=s&&t.push(s);return t};var c=s("./node_modules/lodash-es/isArrayLike.js");const l=function(e){return(0,c.Z)(e)?(0,o.Z)(e):a(e)}},"./node_modules/lodash-es/keysIn.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});var o=s("./node_modules/lodash-es/_arrayLikeKeys.js"),i=s("./node_modules/lodash-es/isObject.js"),r=s("./node_modules/lodash-es/_isPrototype.js");const n=function(e){var t=[];if(null!=e)for(var s in Object(e))t.push(s);return t};var a=Object.prototype.hasOwnProperty;const c=function(e){if(!(0,i.Z)(e))return n(e);var t=(0,r.Z)(e),s=[];for(var o in e)("constructor"!=o||!t&&a.call(e,o))&&s.push(o);return s};var l=s("./node_modules/lodash-es/isArrayLike.js");const d=function(e){return(0,l.Z)(e)?(0,o.Z)(e,!0):c(e)}},"./node_modules/lodash-es/stubArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(){return[]}},"./node_modules/lodash-es/throttle.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/debounce.js"),i=s("./node_modules/lodash-es/isObject.js");const r=function(e,t,s){var r=!0,n=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return(0,i.Z)(s)&&(r="leading"in s?!!s.leading:r,n="trailing"in s?!!s.trailing:n),(0,o.Z)(e,t,{leading:r,maxWait:t,trailing:n})}},"./node_modules/lodash-es/toString.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});var o=s("./node_modules/lodash-es/_Symbol.js");const i=function(e,t){for(var s=-1,o=null==e?0:e.length,i=Array(o);++s<o;)i[s]=t(e[s],s,e);return i};var r=s("./node_modules/lodash-es/isArray.js"),n=s("./node_modules/lodash-es/isSymbol.js"),a=o.Z?o.Z.prototype:void 0,c=a?a.toString:void 0;const l=function e(t){if("string"==typeof t)return t;if((0,r.Z)(t))return i(t,e)+"";if((0,n.Z)(t))return c?c.call(t):"";var s=t+"";return"0"==s&&1/t==-Infinity?"-0":s};const d=function(e){return null==e?"":l(e)}}},t={};function s(o){var i=t[o];if(void 0!==i)return i.exports;var r=t[o]={id:o,exports:{}};return e[o](r,r.exports,s),r.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var o in t)s.o(t,o)&&!s.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nc=void 0;var o=s("?7cdd");(window.CKEditor5=window.CKEditor5||{}).dll=o})(),function(e){e.CKEditor5=e.CKEditor5||{};const t=["utils","core","engine","ui","clipboard","enter","paragraph","select-all","typing","undo","upload","widget"];for(const s of t){const t=s.replace(/-([a-z])/g,((e,t)=>t.toUpperCase()));e.CKEditor5[t]=e.CKEditor5.dll(`./src/${s}.js`)}}(window); \ No newline at end of file + */(()=>{var e={"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-clipboard/theme/clipboard.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,'.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position{display:inline;pointer-events:none;position:relative}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{position:absolute;width:0}.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__selection-handle,.ck.ck-editor__editable .ck-widget:-webkit-drag>.ck-widget__type-around{display:none}:root{--ck-clipboard-drop-target-dot-width:12px;--ck-clipboard-drop-target-dot-height:8px;--ck-clipboard-drop-target-color:var(--ck-color-focus-border)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span{background:var(--ck-clipboard-drop-target-color);border:1px solid var(--ck-clipboard-drop-target-color);bottom:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);margin-left:-1px;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5)}.ck.ck-editor__editable .ck.ck-clipboard-drop-target-position span:after{border-color:var(--ck-clipboard-drop-target-color) transparent transparent transparent;border-style:solid;border-width:calc(var(--ck-clipboard-drop-target-dot-height)) calc(var(--ck-clipboard-drop-target-dot-width)*.5) 0 calc(var(--ck-clipboard-drop-target-dot-width)*.5);content:"";display:block;height:0;left:50%;position:absolute;top:calc(var(--ck-clipboard-drop-target-dot-height)*-.5);transform:translateX(-50%);width:0}.ck.ck-editor__editable .ck-widget.ck-clipboard-drop-target-range{outline:var(--ck-widget-outline-thickness) solid var(--ck-clipboard-drop-target-color)!important}.ck.ck-editor__editable .ck-widget:-webkit-drag{zoom:.6;outline:none!important}',""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-engine/theme/placeholder.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck .ck-placeholder,.ck.ck-placeholder{position:relative}.ck .ck-placeholder:before,.ck.ck-placeholder:before{content:attr(data-placeholder);left:0;pointer-events:none;position:absolute;right:0}.ck.ck-read-only .ck-placeholder:before{display:none}.ck.ck-reset_all .ck-placeholder{position:relative}.ck .ck-placeholder:before,.ck.ck-placeholder:before{color:var(--ck-color-engine-placeholder-text);cursor:text}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-engine/theme/renderer.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-editor__editable span[data-ck-unsafe-element]{display:none}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/button/button.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-button,a.ck.ck-button{align-items:center;display:inline-flex;justify-content:left;position:relative;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{display:none}.ck.ck-button.ck-button_with-text .ck-button__label,a.ck.ck-button.ck-button_with-text .ck-button__label{display:inline-block}.ck.ck-button:not(.ck-button_with-text),a.ck.ck-button:not(.ck-button_with-text){justify-content:center}.ck.ck-button,a.ck.ck-button{background:var(--ck-color-button-default-background)}.ck.ck-button:not(.ck-disabled):hover,a.ck.ck-button:not(.ck-disabled):hover{background:var(--ck-color-button-default-hover-background)}.ck.ck-button:not(.ck-disabled):active,a.ck.ck-button:not(.ck-disabled):active{background:var(--ck-color-button-default-active-background)}.ck.ck-button.ck-disabled,a.ck.ck-button.ck-disabled{background:var(--ck-color-button-default-disabled-background)}.ck.ck-button,a.ck.ck-button{border-radius:0}.ck-rounded-corners .ck.ck-button,.ck-rounded-corners a.ck.ck-button,.ck.ck-button.ck-rounded-corners,a.ck.ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-button,a.ck.ck-button{-webkit-appearance:none;border:1px solid transparent;cursor:default;font-size:inherit;line-height:1;min-height:var(--ck-ui-component-min-height);min-width:var(--ck-ui-component-min-height);padding:var(--ck-spacing-tiny);text-align:center;transition:box-shadow .2s ease-in-out,border .2s ease-in-out;vertical-align:middle;white-space:nowrap}.ck.ck-button:active,.ck.ck-button:focus,a.ck.ck-button:active,a.ck.ck-button:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-button .ck-button__icon use,.ck.ck-button .ck-button__icon use *,a.ck.ck-button .ck-button__icon use,a.ck.ck-button .ck-button__icon use *{color:inherit}.ck.ck-button .ck-button__label,a.ck.ck-button .ck-button__label{color:inherit;cursor:inherit;font-size:inherit;font-weight:inherit;vertical-align:middle}[dir=ltr] .ck.ck-button .ck-button__label,[dir=ltr] a.ck.ck-button .ck-button__label{text-align:left}[dir=rtl] .ck.ck-button .ck-button__label,[dir=rtl] a.ck.ck-button .ck-button__label{text-align:right}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{color:inherit}[dir=ltr] .ck.ck-button .ck-button__keystroke,[dir=ltr] a.ck.ck-button .ck-button__keystroke{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-button .ck-button__keystroke,[dir=rtl] a.ck.ck-button .ck-button__keystroke{margin-right:var(--ck-spacing-large)}.ck.ck-button .ck-button__keystroke,a.ck.ck-button .ck-button__keystroke{font-weight:700;opacity:.7}.ck.ck-button.ck-disabled:active,.ck.ck-button.ck-disabled:focus,a.ck.ck-button.ck-disabled:active,a.ck.ck-button.ck-disabled:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-button.ck-disabled .ck-button__icon,.ck.ck-button.ck-disabled .ck-button__label,a.ck.ck-button.ck-disabled .ck-button__icon,a.ck.ck-button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-disabled .ck-button__keystroke,a.ck.ck-button.ck-disabled .ck-button__keystroke{opacity:.3}.ck.ck-button.ck-button_with-text,a.ck.ck-button.ck-button_with-text{padding:var(--ck-spacing-tiny) var(--ck-spacing-standard)}[dir=ltr] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=ltr] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:calc(var(--ck-spacing-small)*-1);margin-right:var(--ck-spacing-small)}[dir=rtl] .ck.ck-button.ck-button_with-text .ck-button__icon,[dir=rtl] a.ck.ck-button.ck-button_with-text .ck-button__icon{margin-left:var(--ck-spacing-small);margin-right:calc(var(--ck-spacing-small)*-1)}.ck.ck-button.ck-button_with-keystroke .ck-button__label,a.ck.ck-button.ck-button_with-keystroke .ck-button__label{flex-grow:1}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{background:var(--ck-color-button-on-background)}.ck.ck-button.ck-on:not(.ck-disabled):hover,a.ck.ck-button.ck-on:not(.ck-disabled):hover{background:var(--ck-color-button-on-hover-background)}.ck.ck-button.ck-on:not(.ck-disabled):active,a.ck.ck-button.ck-on:not(.ck-disabled):active{background:var(--ck-color-button-on-active-background)}.ck.ck-button.ck-on.ck-disabled,a.ck.ck-button.ck-on.ck-disabled{background:var(--ck-color-button-on-disabled-background)}.ck.ck-button.ck-on,a.ck.ck-button.ck-on{color:var(--ck-color-button-on-color)}.ck.ck-button.ck-button-save,a.ck.ck-button.ck-button-save{color:var(--ck-color-button-save)}.ck.ck-button.ck-button-cancel,a.ck.ck-button.ck-button-cancel{color:var(--ck-color-button-cancel)}.ck.ck-button-action,a.ck.ck-button-action{background:var(--ck-color-button-action-background)}.ck.ck-button-action:not(.ck-disabled):hover,a.ck.ck-button-action:not(.ck-disabled):hover{background:var(--ck-color-button-action-hover-background)}.ck.ck-button-action:not(.ck-disabled):active,a.ck.ck-button-action:not(.ck-disabled):active{background:var(--ck-color-button-action-active-background)}.ck.ck-button-action.ck-disabled,a.ck.ck-button-action.ck-disabled{background:var(--ck-color-button-action-disabled-background)}.ck.ck-button-action,a.ck.ck-button-action{color:var(--ck-color-button-action-text)}.ck.ck-button-bold,a.ck.ck-button-bold{font-weight:700}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/button/switchbutton.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{display:block}:root{--ck-switch-button-toggle-width:2.6153846154em;--ck-switch-button-toggle-inner-size:calc(1.07692em + 1px);--ck-switch-button-translation:calc(var(--ck-switch-button-toggle-width) - var(--ck-switch-button-toggle-inner-size) - 2px);--ck-switch-button-inner-hover-shadow:0 0 0 5px var(--ck-color-switch-button-inner-shadow)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__label{margin-right:calc(var(--ck-spacing-large)*2)}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__label{margin-left:calc(var(--ck-spacing-large)*2)}.ck.ck-button.ck-switchbutton .ck-button__toggle{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle,.ck.ck-button.ck-switchbutton .ck-button__toggle.ck-rounded-corners{border-radius:var(--ck-border-radius)}[dir=ltr] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-left:auto}[dir=rtl] .ck.ck-button.ck-switchbutton .ck-button__toggle{margin-right:auto}.ck.ck-button.ck-switchbutton .ck-button__toggle{background:var(--ck-color-switch-button-off-background);border:1px solid transparent;transition:background .4s ease,box-shadow .2s ease-in-out,outline .2s ease-in-out;width:var(--ck-switch-button-toggle-width)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{border-radius:0}.ck-rounded-corners .ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner,.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:calc(var(--ck-border-radius)*.5)}.ck.ck-button.ck-switchbutton .ck-button__toggle .ck-button__toggle__inner{background:var(--ck-color-switch-button-inner-background);height:var(--ck-switch-button-toggle-inner-size);transition:all .3s ease;width:var(--ck-switch-button-toggle-inner-size)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover{background:var(--ck-color-switch-button-off-hover-background)}.ck.ck-button.ck-switchbutton .ck-button__toggle:hover .ck-button__toggle__inner{box-shadow:var(--ck-switch-button-inner-hover-shadow)}.ck.ck-button.ck-switchbutton.ck-disabled .ck-button__toggle{opacity:var(--ck-disabled-opacity)}.ck.ck-button.ck-switchbutton:focus{border-color:transparent;box-shadow:none;outline:none}.ck.ck-button.ck-switchbutton:focus .ck-button__toggle{box-shadow:0 0 0 1px var(--ck-color-base-background),0 0 0 5px var(--ck-color-focus-outer-shadow);outline:var(--ck-focus-ring);outline-offset:1px}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle{background:var(--ck-color-switch-button-on-background)}.ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle:hover{background:var(--ck-color-switch-button-on-hover-background)}[dir=ltr] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(var( --ck-switch-button-translation ))}[dir=rtl] .ck.ck-button.ck-switchbutton.ck-on .ck-button__toggle .ck-button__toggle__inner{transform:translateX(calc(var( --ck-switch-button-translation )*-1))}.ck.ck-button.ck-switchbutton.ck-on:active,.ck.ck-button.ck-switchbutton:active{background:transparent}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/colorgrid/colorgrid.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-color-grid{display:grid}:root{--ck-color-grid-tile-size:24px;--ck-color-color-grid-check-icon:#166fd4}.ck.ck-color-grid{grid-gap:5px;padding:8px}.ck.ck-color-grid__tile{border:0;height:var(--ck-color-grid-tile-size);min-height:var(--ck-color-grid-tile-size);min-width:var(--ck-color-grid-tile-size);padding:0;transition:box-shadow .2s ease;width:var(--ck-color-grid-tile-size)}.ck.ck-color-grid__tile.ck-disabled{cursor:unset;transition:unset}.ck.ck-color-grid__tile.ck-color-table__color-tile_bordered{box-shadow:0 0 0 1px var(--ck-color-base-border)}.ck.ck-color-grid__tile .ck.ck-icon{color:var(--ck-color-color-grid-check-icon);display:none}.ck.ck-color-grid__tile.ck-on{box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-base-text)}.ck.ck-color-grid__tile.ck-on .ck.ck-icon{display:block}.ck.ck-color-grid__tile.ck-on,.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){border:0}.ck.ck-color-grid__tile:focus:not(.ck-disabled),.ck.ck-color-grid__tile:hover:not(.ck-disabled){box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-color-grid__label{padding:0 var(--ck-spacing-standard)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/dropdown.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-dropdown-max-width:75vw}.ck.ck-dropdown{display:inline-block;position:relative}.ck.ck-dropdown .ck-dropdown__arrow{pointer-events:none;z-index:var(--ck-z-default)}.ck.ck-dropdown .ck-button.ck-dropdown__button{width:100%}.ck.ck-dropdown .ck-dropdown__panel{display:none;max-width:var(--ck-dropdown-max-width);position:absolute;z-index:var(--ck-z-modal)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel-visible{display:inline-block}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw{bottom:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{bottom:auto;top:100%}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_ne,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_se{left:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sw{right:0}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_n,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_s{left:50%;transform:translateX(-50%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nmw,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_smw{left:75%;transform:translateX(-75%)}.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_nme,.ck.ck-dropdown .ck-dropdown__panel.ck-dropdown__panel_sme{left:25%;transform:translateX(-25%)}.ck.ck-toolbar .ck-dropdown__panel{z-index:calc(var(--ck-z-modal) + 1)}:root{--ck-dropdown-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-dropdown{font-size:inherit}.ck.ck-dropdown .ck-dropdown__arrow{width:var(--ck-dropdown-arrow-size)}[dir=ltr] .ck.ck-dropdown .ck-dropdown__arrow{margin-left:var(--ck-spacing-standard);right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-dropdown .ck-dropdown__arrow{left:var(--ck-spacing-standard);margin-right:var(--ck-spacing-small)}.ck.ck-dropdown.ck-disabled .ck-dropdown__arrow{opacity:var(--ck-disabled-opacity)}[dir=ltr] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-left:var(--ck-spacing-small)}[dir=rtl] .ck.ck-dropdown .ck-button.ck-dropdown__button:not(.ck-button_with-text){padding-right:var(--ck-spacing-small)}.ck.ck-dropdown .ck-button.ck-dropdown__button .ck-button__label{overflow:hidden;text-overflow:ellipsis;width:7em}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-disabled .ck-button__label{opacity:var(--ck-disabled-opacity)}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on{border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-dropdown__button_label-width_auto .ck-button__label{width:auto}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active{box-shadow:none}.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-off:active:focus,.ck.ck-dropdown .ck-button.ck-dropdown__button.ck-on:active:focus{box-shadow:var(--ck-focus-outer-shadow),0 0}.ck.ck-dropdown__panel{border-radius:0}.ck-rounded-corners .ck.ck-dropdown__panel,.ck.ck-dropdown__panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-dropdown__panel{background:var(--ck-color-dropdown-panel-background);border:1px solid var(--ck-color-dropdown-panel-border);bottom:0;box-shadow:var(--ck-drop-shadow),0 0;min-width:100%}.ck.ck-dropdown__panel.ck-dropdown__panel_se{border-top-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_sw{border-top-right-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_ne{border-bottom-left-radius:0}.ck.ck-dropdown__panel.ck-dropdown__panel_nw{border-bottom-right-radius:0}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/listdropdown.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-dropdown .ck-dropdown__panel .ck-list{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list,.ck.ck-dropdown .ck-dropdown__panel .ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:first-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0;border-top-left-radius:0}.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button{border-radius:0}.ck-rounded-corners .ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button,.ck.ck-dropdown .ck-dropdown__panel .ck-list .ck-list__item:last-child .ck-button.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/splitbutton.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,'.ck.ck-splitbutton{font-size:inherit}.ck.ck-splitbutton .ck-splitbutton__action:focus{z-index:calc(var(--ck-z-default) + 1)}:root{--ck-color-split-button-hover-background:#ebebeb;--ck-color-split-button-hover-border:#b3b3b3}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-bottom-right-radius:unset;border-top-right-radius:unset}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__action{border-bottom-left-radius:unset;border-top-left-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow{min-width:unset}[dir=ltr] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-left-radius:unset;border-top-left-radius:unset}[dir=rtl] .ck.ck-splitbutton>.ck-splitbutton__arrow{border-bottom-right-radius:unset;border-top-right-radius:unset}.ck.ck-splitbutton>.ck-splitbutton__arrow svg{width:var(--ck-dropdown-arrow-size)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover),.ck.ck-splitbutton:hover>.ck-button:not(.ck-on):not(.ck-disabled):not(:hover){background:var(--ck-color-split-button-hover-background)}.ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{background-color:var(--ck-color-split-button-hover-border);content:"";height:100%;position:absolute;width:1px}[dir=ltr] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=ltr] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{left:-1px}[dir=rtl] .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,[dir=rtl] .ck.ck-splitbutton:hover>.ck-splitbutton__arrow:not(.ck-disabled):after{right:-1px}.ck.ck-splitbutton.ck-splitbutton_open{border-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__action,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__action{border-bottom-left-radius:0}.ck-rounded-corners .ck.ck-splitbutton.ck-splitbutton_open>.ck-splitbutton__arrow,.ck.ck-splitbutton.ck-splitbutton_open.ck-rounded-corners>.ck-splitbutton__arrow{border-bottom-right-radius:0}',""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-toolbar-dropdown-max-width:60vw}.ck.ck-toolbar-dropdown>.ck-dropdown__panel{max-width:var(--ck-toolbar-dropdown-max-width);width:max-content}.ck.ck-toolbar-dropdown>.ck-dropdown__panel .ck-button:focus{z-index:calc(var(--ck-z-default) + 1)}.ck.ck-toolbar-dropdown .ck-toolbar{border:0}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/editorui/editorui.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-editable-blur-selection:#d9d9d9}.ck.ck-editor__editable:not(.ck-editor__nested-editable){border-radius:0}.ck-rounded-corners .ck.ck-editor__editable:not(.ck-editor__nested-editable),.ck.ck-editor__editable.ck-rounded-corners:not(.ck-editor__nested-editable){border-radius:var(--ck-border-radius)}.ck.ck-editor__editable.ck-focused:not(.ck-editor__nested-editable){border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck.ck-editor__editable_inline{border:1px solid transparent;overflow:auto;padding:0 var(--ck-spacing-standard)}.ck.ck-editor__editable_inline[dir=ltr]{text-align:left}.ck.ck-editor__editable_inline[dir=rtl]{text-align:right}.ck.ck-editor__editable_inline>:first-child{margin-top:var(--ck-spacing-large)}.ck.ck-editor__editable_inline>:last-child{margin-bottom:var(--ck-spacing-large)}.ck.ck-editor__editable_inline.ck-blurred ::selection{background:var(--ck-color-editable-blur-selection)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_n]:after{border-bottom-color:var(--ck-color-base-foreground)}.ck.ck-balloon-panel.ck-toolbar-container[class*=arrow_s]:after{border-top-color:var(--ck-color-base-foreground)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/formheader/formheader.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-form__header{align-items:center;display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}:root{--ck-form-header-height:38px}.ck.ck-form__header{border-bottom:1px solid var(--ck-color-base-border);height:var(--ck-form-header-height);line-height:var(--ck-form-header-height);padding:var(--ck-spacing-small) var(--ck-spacing-large)}.ck.ck-form__header .ck-form__header__label{font-weight:700}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/icon/icon.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-icon{vertical-align:middle}:root{--ck-icon-size:calc(var(--ck-line-height-base)*var(--ck-font-size-normal))}.ck.ck-icon{font-size:.8333350694em;height:var(--ck-icon-size);width:var(--ck-icon-size);will-change:transform}.ck.ck-icon,.ck.ck-icon *{color:inherit;cursor:inherit}.ck.ck-icon :not([fill]){fill:currentColor}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/input/input.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-input-width:18em;--ck-input-text-width:var(--ck-input-width)}.ck.ck-input{border-radius:0}.ck-rounded-corners .ck.ck-input,.ck.ck-input.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input{background:var(--ck-color-input-background);border:1px solid var(--ck-color-input-border);min-height:var(--ck-ui-component-min-height);min-width:var(--ck-input-width);padding:var(--ck-spacing-extra-tiny) var(--ck-spacing-medium);transition:box-shadow .1s ease-in-out,border .1s ease-in-out}.ck.ck-input:focus{border:var(--ck-focus-ring);box-shadow:var(--ck-focus-outer-shadow),0 0;outline:none}.ck.ck-input[readonly]{background:var(--ck-color-input-disabled-background);border:1px solid var(--ck-color-input-disabled-border);color:var(--ck-color-input-disabled-text)}.ck.ck-input[readonly]:focus{box-shadow:var(--ck-focus-disabled-outer-shadow),0 0}.ck.ck-input.ck-error{animation:ck-input-shake .3s ease both;border-color:var(--ck-color-input-error-border)}.ck.ck-input.ck-error:focus{box-shadow:var(--ck-focus-error-outer-shadow),0 0}@keyframes ck-input-shake{20%{transform:translateX(-2px)}40%{transform:translateX(2px)}60%{transform:translateX(-1px)}80%{transform:translateX(1px)}}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/label/label.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-label{display:block}.ck.ck-voice-label{display:none}.ck.ck-label{font-weight:700}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{display:flex;position:relative}.ck.ck-labeled-field-view .ck.ck-label{display:block;position:absolute}:root{--ck-labeled-field-view-transition:.1s cubic-bezier(0,0,0.24,0.95);--ck-labeled-field-empty-unfocused-max-width:100% - 2 * var(--ck-spacing-medium);--ck-color-labeled-field-label-background:var(--ck-color-base-background)}.ck.ck-labeled-field-view{border-radius:0}.ck-rounded-corners .ck.ck-labeled-field-view,.ck.ck-labeled-field-view.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper{width:100%}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{top:0}[dir=ltr] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{left:0}[dir=rtl] .ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{right:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{background:var(--ck-color-labeled-field-label-background);font-weight:400;line-height:normal;max-width:100%;overflow:hidden;padding:0 calc(var(--ck-font-size-tiny)*.5);pointer-events:none;text-overflow:ellipsis;transform:translate(var(--ck-spacing-medium),-6px) scale(.75);transform-origin:0 0;transition:transform var(--ck-labeled-field-view-transition),padding var(--ck-labeled-field-view-transition),background var(--ck-labeled-field-view-transition)}.ck.ck-labeled-field-view.ck-error .ck-input:not([readonly])+.ck.ck-label,.ck.ck-labeled-field-view.ck-error>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view .ck-labeled-field-view__status{font-size:var(--ck-font-size-small);margin-top:var(--ck-spacing-small);white-space:normal}.ck.ck-labeled-field-view .ck-labeled-field-view__status.ck-labeled-field-view__status_error{color:var(--ck-color-base-error)}.ck.ck-labeled-field-view.ck-disabled>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{color:var(--ck-color-input-disabled-text)}[dir=ltr] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=ltr] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(var(--ck-spacing-medium),calc(var(--ck-font-size-base)*.6)) scale(1)}[dir=rtl] .ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,[dir=rtl] .ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{transform:translate(calc(var(--ck-spacing-medium)*-1),calc(var(--ck-font-size-base)*.6)) scale(1)}.ck.ck-labeled-field-view.ck-disabled.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label,.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck.ck-label{background:transparent;max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width));padding:0}.ck.ck-labeled-field-view>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck.ck-button{background:transparent}.ck.ck-labeled-field-view.ck-labeled-field-view_empty>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown>.ck-button>.ck-button__label{opacity:0}.ck.ck-labeled-field-view.ck-labeled-field-view_empty:not(.ck-labeled-field-view_focused):not(.ck-labeled-field-view_placeholder)>.ck.ck-labeled-field-view__input-wrapper>.ck-dropdown+.ck-label{max-width:calc(var(--ck-labeled-field-empty-unfocused-max-width) - var(--ck-dropdown-arrow-size) - var(--ck-spacing-standard))}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/list/list.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-list{display:flex;flex-direction:column;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-list .ck-list__item,.ck.ck-list .ck-list__separator{display:block}.ck.ck-list .ck-list__item>:focus{position:relative;z-index:var(--ck-z-default)}.ck.ck-list{border-radius:0}.ck-rounded-corners .ck.ck-list,.ck.ck-list.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-list{background:var(--ck-color-list-background);list-style-type:none}.ck.ck-list__item{cursor:default;min-width:12em}.ck.ck-list__item .ck-button{border-radius:0;min-height:unset;padding:calc(var(--ck-line-height-base)*.2*var(--ck-font-size-base)) calc(var(--ck-line-height-base)*.4*var(--ck-font-size-base));text-align:left;width:100%}.ck.ck-list__item .ck-button .ck-button__label{line-height:calc(var(--ck-line-height-base)*1.2*var(--ck-font-size-base))}.ck.ck-list__item .ck-button:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on{background:var(--ck-color-list-button-on-background);color:var(--ck-color-list-button-on-text)}.ck.ck-list__item .ck-button.ck-on:active{box-shadow:none}.ck.ck-list__item .ck-button.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-on-background-focus)}.ck.ck-list__item .ck-button.ck-on:focus:not(.ck-switchbutton):not(.ck-disabled){border-color:var(--ck-color-base-background)}.ck.ck-list__item .ck-button:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background)}.ck.ck-list__item .ck-switchbutton.ck-on{background:var(--ck-color-list-background);color:inherit}.ck.ck-list__item .ck-switchbutton.ck-on:hover:not(.ck-disabled){background:var(--ck-color-list-button-hover-background);color:inherit}.ck.ck-list__separator{background:var(--ck-color-base-border);height:1px;width:100%}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/balloonpanel.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,':root{--ck-balloon-panel-arrow-z-index:calc(var(--ck-z-default) - 3)}.ck.ck-balloon-panel{display:none;position:absolute;z-index:var(--ck-z-modal)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{content:"";position:absolute}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_n]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_n]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel[class*=arrow_s]:before{z-index:var(--ck-balloon-panel-arrow-z-index)}.ck.ck-balloon-panel[class*=arrow_s]:after{z-index:calc(var(--ck-balloon-panel-arrow-z-index) + 1)}.ck.ck-balloon-panel.ck-balloon-panel_visible{display:block}:root{--ck-balloon-border-width:1px;--ck-balloon-arrow-offset:2px;--ck-balloon-arrow-height:10px;--ck-balloon-arrow-half-width:8px;--ck-balloon-arrow-drop-shadow:0 2px 2px var(--ck-color-shadow-drop)}.ck.ck-balloon-panel{border-radius:0}.ck-rounded-corners .ck.ck-balloon-panel,.ck.ck-balloon-panel.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-balloon-panel{background:var(--ck-color-panel-background);border:var(--ck-balloon-border-width) solid var(--ck-color-panel-border);box-shadow:var(--ck-drop-shadow),0 0;min-height:15px}.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:after,.ck.ck-balloon-panel.ck-balloon-panel_with-arrow:before{border-style:solid;height:0;width:0}.ck.ck-balloon-panel[class*=arrow_n]:after,.ck.ck-balloon-panel[class*=arrow_n]:before{border-width:0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_n]:before{border-color:transparent transparent var(--ck-color-panel-border) transparent;margin-top:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_n]:after{border-color:transparent transparent var(--ck-color-panel-background) transparent;margin-top:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_s]:after,.ck.ck-balloon-panel[class*=arrow_s]:before{border-width:var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width)}.ck.ck-balloon-panel[class*=arrow_s]:before{border-color:var(--ck-color-panel-border) transparent transparent;filter:drop-shadow(var(--ck-balloon-arrow-drop-shadow));margin-bottom:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_s]:after{border-color:var(--ck-color-panel-background) transparent transparent transparent;margin-bottom:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_e]:after,.ck.ck-balloon-panel[class*=arrow_e]:before{border-width:var(--ck-balloon-arrow-half-width) 0 var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height)}.ck.ck-balloon-panel[class*=arrow_e]:before{border-color:transparent transparent transparent var(--ck-color-panel-border);margin-right:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_e]:after{border-color:transparent transparent transparent var(--ck-color-panel-background);margin-right:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel[class*=arrow_w]:after,.ck.ck-balloon-panel[class*=arrow_w]:before{border-width:var(--ck-balloon-arrow-half-width) var(--ck-balloon-arrow-height) var(--ck-balloon-arrow-half-width) 0}.ck.ck-balloon-panel[class*=arrow_w]:before{border-color:transparent var(--ck-color-panel-border) transparent transparent;margin-left:calc(var(--ck-balloon-border-width)*-1)}.ck.ck-balloon-panel[class*=arrow_w]:after{border-color:transparent var(--ck-color-panel-background) transparent transparent;margin-left:calc(var(--ck-balloon-arrow-offset) - var(--ck-balloon-border-width))}.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_n:before{left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nw:before{left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_ne:before{right:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_s:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:50%;margin-left:calc(var(--ck-balloon-arrow-half-width)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_se:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);right:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_sme:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_smw:before{bottom:calc(var(--ck-balloon-arrow-height)*-1);left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nme:before{margin-right:calc(var(--ck-balloon-arrow-half-width)*2);right:25%;top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_nmw:before{left:25%;margin-left:calc(var(--ck-balloon-arrow-half-width)*2);top:calc(var(--ck-balloon-arrow-height)*-1)}.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_e:before{margin-top:calc(var(--ck-balloon-arrow-half-width)*-1);right:calc(var(--ck-balloon-arrow-height)*-1);top:50%}.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:after,.ck.ck-balloon-panel.ck-balloon-panel_arrow_w:before{left:calc(var(--ck-balloon-arrow-height)*-1);margin-top:calc(var(--ck-balloon-arrow-half-width)*-1);top:50%}',""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/balloonrotator.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck .ck-balloon-rotator__navigation{align-items:center;display:flex;justify-content:center}.ck .ck-balloon-rotator__content .ck-toolbar{justify-content:center}.ck .ck-balloon-rotator__navigation{background:var(--ck-color-toolbar-background);border-bottom:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation>*{margin-bottom:var(--ck-spacing-small);margin-right:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck .ck-balloon-rotator__navigation .ck-balloon-rotator__counter{margin-left:var(--ck-spacing-small);margin-right:var(--ck-spacing-standard)}.ck .ck-balloon-rotator__content .ck.ck-annotation-wrapper{box-shadow:none}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/fakepanel.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck .ck-fake-panel{position:absolute;z-index:calc(var(--ck-z-modal) - 1)}.ck .ck-fake-panel div{position:absolute}.ck .ck-fake-panel div:first-child{z-index:2}.ck .ck-fake-panel div:nth-child(2){z-index:1}:root{--ck-balloon-fake-panel-offset-horizontal:6px;--ck-balloon-fake-panel-offset-vertical:6px}.ck .ck-fake-panel div{background:var(--ck-color-panel-background);border:1px solid var(--ck-color-panel-border);border-radius:var(--ck-border-radius);box-shadow:var(--ck-drop-shadow),0 0;height:100%;min-height:15px;width:100%}.ck .ck-fake-panel div:first-child{margin-left:var(--ck-balloon-fake-panel-offset-horizontal);margin-top:var(--ck-balloon-fake-panel-offset-vertical)}.ck .ck-fake-panel div:nth-child(2){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*2);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*2)}.ck .ck-fake-panel div:nth-child(3){margin-left:calc(var(--ck-balloon-fake-panel-offset-horizontal)*3);margin-top:calc(var(--ck-balloon-fake-panel-offset-vertical)*3)}.ck .ck-balloon-panel_arrow_s+.ck-fake-panel,.ck .ck-balloon-panel_arrow_se+.ck-fake-panel,.ck .ck-balloon-panel_arrow_sw+.ck-fake-panel{--ck-balloon-fake-panel-offset-vertical:-6px}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/stickypanel.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-sticky-panel .ck-sticky-panel__content_sticky{position:fixed;top:0;z-index:var(--ck-z-modal)}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky_bottom-limit{position:absolute;top:auto}.ck.ck-sticky-panel .ck-sticky-panel__content_sticky{border-top-left-radius:0;border-top-right-radius:0;border-width:0 1px 1px;box-shadow:var(--ck-drop-shadow),0 0}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-block-toolbar-button{position:absolute;z-index:var(--ck-z-default)}:root{--ck-color-block-toolbar-button:var(--ck-color-text);--ck-block-toolbar-button-size:var(--ck-font-size-normal)}.ck.ck-block-toolbar-button{color:var(--ck-color-block-toolbar-button);font-size:var(--ck-block-toolbar-size)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/toolbar/toolbar.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-toolbar{align-items:center;display:flex;flex-flow:row nowrap;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.ck.ck-toolbar>.ck-toolbar__items{align-items:center;display:flex;flex-flow:row wrap;flex-grow:1}.ck.ck-toolbar .ck.ck-toolbar__separator{display:inline-block}.ck.ck-toolbar .ck.ck-toolbar__separator:first-child,.ck.ck-toolbar .ck.ck-toolbar__separator:last-child{display:none}.ck.ck-toolbar .ck-toolbar__line-break{flex-basis:100%}.ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items{flex-direction:column}.ck.ck-toolbar.ck-toolbar_floating>.ck-toolbar__items{flex-wrap:nowrap}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck-dropdown__button .ck-dropdown__arrow{display:none}.ck.ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-toolbar,.ck.ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-toolbar{background:var(--ck-color-toolbar-background);border:1px solid var(--ck-color-toolbar-border);padding:0 var(--ck-spacing-small)}.ck.ck-toolbar .ck.ck-toolbar__separator{align-self:stretch;background:var(--ck-color-toolbar-border);margin-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small);min-width:1px;width:1px}.ck.ck-toolbar .ck-toolbar__line-break{height:0}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break){margin-right:var(--ck-spacing-small)}.ck.ck-toolbar>.ck-toolbar__items:empty+.ck.ck-toolbar__separator{display:none}.ck.ck-toolbar>.ck-toolbar__items>:not(.ck-toolbar__line-break),.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown{margin-bottom:var(--ck-spacing-small);margin-top:var(--ck-spacing-small)}.ck.ck-toolbar.ck-toolbar_vertical{padding:0}.ck.ck-toolbar.ck-toolbar_vertical>.ck-toolbar__items>.ck{border-radius:0;margin:0;width:100%}.ck.ck-toolbar.ck-toolbar_compact{padding:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>*{margin:0}.ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>:not(:first-child):not(:last-child){border-radius:0}.ck.ck-toolbar>.ck.ck-toolbar__grouped-dropdown>.ck.ck-button.ck-dropdown__button{padding-left:var(--ck-spacing-tiny)}.ck-toolbar-container .ck.ck-toolbar{border:0}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck{margin-right:0}.ck.ck-toolbar[dir=rtl]:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck,[dir=rtl] .ck.ck-toolbar:not(.ck-toolbar_compact)>.ck-toolbar__items>.ck{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-left:0}.ck.ck-toolbar.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:first-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=rtl]>.ck-toolbar__items>.ck:last-child,[dir=rtl] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=rtl]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=rtl]>.ck.ck-toolbar__separator,[dir=rtl] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=rtl] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-left:var(--ck-spacing-small)}.ck.ck-toolbar[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar>.ck-toolbar__items>.ck:last-child{margin-right:0}.ck.ck-toolbar.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:first-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:first-child{border-bottom-right-radius:0;border-top-right-radius:0}.ck.ck-toolbar.ck-toolbar_compact[dir=ltr]>.ck-toolbar__items>.ck:last-child,[dir=ltr] .ck.ck-toolbar.ck-toolbar_compact>.ck-toolbar__items>.ck:last-child{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-toolbar.ck-toolbar_grouping[dir=ltr]>.ck-toolbar__items:not(:empty):not(:only-child),.ck.ck-toolbar[dir=ltr]>.ck.ck-toolbar__separator,[dir=ltr] .ck.ck-toolbar.ck-toolbar_grouping>.ck-toolbar__items:not(:empty):not(:only-child),[dir=ltr] .ck.ck-toolbar>.ck.ck-toolbar__separator{margin-right:var(--ck-spacing-small)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/tooltip/tooltip.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-balloon-panel.ck-tooltip{--ck-balloon-border-width:0px;--ck-balloon-arrow-offset:0px;--ck-balloon-arrow-half-width:4px;--ck-balloon-arrow-height:4px;--ck-color-panel-background:var(--ck-color-tooltip-background);padding:0 var(--ck-spacing-medium);pointer-events:none;z-index:calc(var(--ck-z-modal) + 100)}.ck.ck-balloon-panel.ck-tooltip .ck-tooltip__text{color:var(--ck-color-tooltip-text);font-size:.9em;line-height:1.5}.ck.ck-balloon-panel.ck-tooltip{box-shadow:none}.ck.ck-balloon-panel.ck-tooltip:before{display:none}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/globals/globals.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck-hidden{display:none!important}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset,.ck.ck-reset_all{box-sizing:border-box;height:auto;position:static;width:auto}:root{--ck-z-default:1;--ck-z-modal:calc(var(--ck-z-default) + 999)}.ck-transitions-disabled,.ck-transitions-disabled *{transition:none!important}:root{--ck-color-base-foreground:#fafafa;--ck-color-base-background:#fff;--ck-color-base-border:#ccced1;--ck-color-base-action:#53a336;--ck-color-base-focus:#6cb5f9;--ck-color-base-text:#333;--ck-color-base-active:#2977ff;--ck-color-base-active-focus:#0d65ff;--ck-color-base-error:#db3700;--ck-color-focus-border-coordinates:218,81.8%,56.9%;--ck-color-focus-border:hsl(var(--ck-color-focus-border-coordinates));--ck-color-focus-outer-shadow:#cae1fc;--ck-color-focus-disabled-shadow:rgba(119,186,248,.3);--ck-color-focus-error-shadow:rgba(255,64,31,.3);--ck-color-text:var(--ck-color-base-text);--ck-color-shadow-drop:rgba(0,0,0,.15);--ck-color-shadow-drop-active:rgba(0,0,0,.2);--ck-color-shadow-inner:rgba(0,0,0,.1);--ck-color-button-default-background:transparent;--ck-color-button-default-hover-background:#f0f0f0;--ck-color-button-default-active-background:#f0f0f0;--ck-color-button-default-disabled-background:transparent;--ck-color-button-on-background:#f0f7ff;--ck-color-button-on-hover-background:#dbecff;--ck-color-button-on-active-background:#dbecff;--ck-color-button-on-disabled-background:#f0f2f4;--ck-color-button-on-color:#2977ff;--ck-color-button-action-background:var(--ck-color-base-action);--ck-color-button-action-hover-background:#4d9d30;--ck-color-button-action-active-background:#4d9d30;--ck-color-button-action-disabled-background:#7ec365;--ck-color-button-action-text:var(--ck-color-base-background);--ck-color-button-save:#008a00;--ck-color-button-cancel:#db3700;--ck-color-switch-button-off-background:#939393;--ck-color-switch-button-off-hover-background:#7d7d7d;--ck-color-switch-button-on-background:var(--ck-color-button-action-background);--ck-color-switch-button-on-hover-background:#4d9d30;--ck-color-switch-button-inner-background:var(--ck-color-base-background);--ck-color-switch-button-inner-shadow:rgba(0,0,0,.1);--ck-color-dropdown-panel-background:var(--ck-color-base-background);--ck-color-dropdown-panel-border:var(--ck-color-base-border);--ck-color-input-background:var(--ck-color-base-background);--ck-color-input-border:var(--ck-color-base-border);--ck-color-input-error-border:var(--ck-color-base-error);--ck-color-input-text:var(--ck-color-base-text);--ck-color-input-disabled-background:#f2f2f2;--ck-color-input-disabled-border:var(--ck-color-base-border);--ck-color-input-disabled-text:#757575;--ck-color-list-background:var(--ck-color-base-background);--ck-color-list-button-hover-background:var(--ck-color-button-default-hover-background);--ck-color-list-button-on-background:var(--ck-color-button-on-color);--ck-color-list-button-on-background-focus:var(--ck-color-button-on-color);--ck-color-list-button-on-text:var(--ck-color-base-background);--ck-color-panel-background:var(--ck-color-base-background);--ck-color-panel-border:var(--ck-color-base-border);--ck-color-toolbar-background:var(--ck-color-base-background);--ck-color-toolbar-border:var(--ck-color-base-border);--ck-color-tooltip-background:var(--ck-color-base-text);--ck-color-tooltip-text:var(--ck-color-base-background);--ck-color-engine-placeholder-text:#707070;--ck-color-upload-bar-background:#6cb5f9;--ck-color-link-default:#0000f0;--ck-color-link-selected-background:rgba(31,176,255,.1);--ck-color-link-fake-selection:rgba(31,176,255,.3);--ck-disabled-opacity:.5;--ck-focus-outer-shadow-geometry:0 0 0 3px;--ck-focus-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-outer-shadow);--ck-focus-disabled-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-disabled-shadow);--ck-focus-error-outer-shadow:var(--ck-focus-outer-shadow-geometry) var(--ck-color-focus-error-shadow);--ck-focus-ring:1px solid var(--ck-color-focus-border);--ck-font-size-base:13px;--ck-line-height-base:1.84615;--ck-font-face:Helvetica,Arial,Tahoma,Verdana,Sans-Serif;--ck-font-size-tiny:0.7em;--ck-font-size-small:0.75em;--ck-font-size-normal:1em;--ck-font-size-big:1.4em;--ck-font-size-large:1.8em;--ck-ui-component-min-height:2.3em}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset,.ck.ck-reset_all{word-wrap:break-word;background:transparent;border:0;margin:0;padding:0;text-decoration:none;transition:none;vertical-align:middle}.ck-reset_all :not(.ck-reset_all-excluded *),.ck.ck-reset_all{border-collapse:collapse;color:var(--ck-color-text);cursor:auto;float:none;font:normal normal normal var(--ck-font-size-base)/var(--ck-line-height-base) var(--ck-font-face);text-align:left;white-space:nowrap}.ck-reset_all .ck-rtl :not(.ck-reset_all-excluded *){text-align:right}.ck-reset_all iframe:not(.ck-reset_all-excluded *){vertical-align:inherit}.ck-reset_all textarea:not(.ck-reset_all-excluded *){white-space:pre-wrap}.ck-reset_all input[type=password]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text]:not(.ck-reset_all-excluded *),.ck-reset_all textarea:not(.ck-reset_all-excluded *){cursor:text}.ck-reset_all input[type=password][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all input[type=text][disabled]:not(.ck-reset_all-excluded *),.ck-reset_all textarea[disabled]:not(.ck-reset_all-excluded *){cursor:default}.ck-reset_all fieldset:not(.ck-reset_all-excluded *){border:2px groove #dfdee3;padding:10px}.ck-reset_all button:not(.ck-reset_all-excluded *)::-moz-focus-inner{border:0;padding:0}.ck[dir=rtl],.ck[dir=rtl] .ck{text-align:right}:root{--ck-border-radius:2px;--ck-inner-shadow:2px 2px 3px var(--ck-color-shadow-inner) inset;--ck-drop-shadow:0 1px 2px 1px var(--ck-color-shadow-drop);--ck-drop-shadow-active:0 3px 6px 1px var(--ck-color-shadow-drop-active);--ck-spacing-unit:0.6em;--ck-spacing-large:calc(var(--ck-spacing-unit)*1.5);--ck-spacing-standard:var(--ck-spacing-unit);--ck-spacing-medium:calc(var(--ck-spacing-unit)*0.8);--ck-spacing-small:calc(var(--ck-spacing-unit)*0.5);--ck-spacing-tiny:calc(var(--ck-spacing-unit)*0.3);--ck-spacing-extra-tiny:calc(var(--ck-spacing-unit)*0.16)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widget.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-resizer:var(--ck-color-focus-border);--ck-color-resizer-tooltip-background:#262626;--ck-color-resizer-tooltip-text:#f2f2f2;--ck-resizer-border-radius:var(--ck-border-radius);--ck-resizer-tooltip-offset:10px;--ck-resizer-tooltip-height:calc(var(--ck-spacing-small)*2 + 10px)}.ck .ck-widget,.ck .ck-widget.ck-widget_with-selection-handle{position:relative}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{position:absolute}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{display:block}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{visibility:visible}.ck .ck-size-view{background:var(--ck-color-resizer-tooltip-background);border:1px solid var(--ck-color-resizer-tooltip-text);border-radius:var(--ck-resizer-border-radius);color:var(--ck-color-resizer-tooltip-text);display:block;font-size:var(--ck-font-size-tiny);height:var(--ck-resizer-tooltip-height);line-height:var(--ck-resizer-tooltip-height);padding:0 var(--ck-spacing-small)}.ck .ck-size-view.ck-orientation-above-center,.ck .ck-size-view.ck-orientation-bottom-left,.ck .ck-size-view.ck-orientation-bottom-right,.ck .ck-size-view.ck-orientation-top-left,.ck .ck-size-view.ck-orientation-top-right{position:absolute}.ck .ck-size-view.ck-orientation-top-left{left:var(--ck-resizer-tooltip-offset);top:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-top-right{right:var(--ck-resizer-tooltip-offset);top:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-right{bottom:var(--ck-resizer-tooltip-offset);right:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-bottom-left{bottom:var(--ck-resizer-tooltip-offset);left:var(--ck-resizer-tooltip-offset)}.ck .ck-size-view.ck-orientation-above-center{left:50%;top:calc(var(--ck-resizer-tooltip-height)*-1);transform:translate(-50%)}:root{--ck-widget-outline-thickness:3px;--ck-widget-handler-icon-size:16px;--ck-widget-handler-animation-duration:200ms;--ck-widget-handler-animation-curve:ease;--ck-color-widget-blurred-border:#dedede;--ck-color-widget-hover-border:#ffc83d;--ck-color-widget-editable-focus-background:var(--ck-color-base-background);--ck-color-widget-drag-handler-icon-color:var(--ck-color-base-background)}.ck .ck-widget{outline-color:transparent;outline-style:solid;outline-width:var(--ck-widget-outline-thickness);transition:outline-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_selected,.ck .ck-widget.ck-widget_selected:hover{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-focus-border)}.ck .ck-widget:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-editor__nested-editable{border:1px solid transparent}.ck .ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck .ck-editor__nested-editable:focus{background-color:var(--ck-color-widget-editable-focus-background);border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{background-color:transparent;border-radius:var(--ck-border-radius) var(--ck-border-radius) 0 0;box-sizing:border-box;left:calc(0px - var(--ck-widget-outline-thickness));opacity:0;padding:4px;top:0;transform:translateY(-100%);transition:background-color var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),visibility var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon{color:var(--ck-color-widget-drag-handler-icon-color);height:var(--ck-widget-handler-icon-size);width:var(--ck-widget-handler-icon-size)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:0;transition:opacity .3s var(--ck-widget-handler-animation-curve)}.ck .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover .ck-icon .ck-icon__selected-indicator{opacity:1}.ck .ck-widget.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle{background-color:var(--ck-color-widget-hover-border);opacity:1}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{background-color:var(--ck-color-focus-border);opacity:1}.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator,.ck .ck-widget.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle .ck-icon .ck-icon__selected-indicator{opacity:1}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle{left:auto;right:calc(0px - var(--ck-widget-outline-thickness))}.ck.ck-editor__editable.ck-read-only .ck-widget{transition:none}.ck.ck-editor__editable.ck-read-only .ck-widget:not(.ck-widget_selected){--ck-widget-outline-thickness:0px}.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle,.ck.ck-editor__editable.ck-read-only .ck-widget.ck-widget_with-selection-handle .ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected:hover{outline-color:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle:hover>.ck-widget__selection-handle:hover,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle,.ck.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected.ck-widget_with-selection-handle>.ck-widget__selection-handle:hover{background:var(--ck-color-widget-blurred-border)}.ck.ck-editor__editable blockquote>.ck-widget.ck-widget_with-selection-handle:first-child,.ck.ck-editor__editable>.ck-widget.ck-widget_with-selection-handle:first-child{margin-top:calc(1em + var(--ck-widget-handler-icon-size))}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widgetresize.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,".ck .ck-widget_with-resizer{position:relative}.ck .ck-widget__resizer{display:none;left:0;pointer-events:none;position:absolute;top:0}.ck-focused .ck-widget_with-resizer.ck-widget_selected>.ck-widget__resizer{display:block}.ck .ck-widget__resizer__handle{pointer-events:all;position:absolute}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{cursor:nwse-resize}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left,.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{cursor:nesw-resize}:root{--ck-resizer-size:10px;--ck-resizer-offset:calc(var(--ck-resizer-size)/-2 - 2px);--ck-resizer-border-width:1px}.ck .ck-widget__resizer{outline:1px solid var(--ck-color-resizer)}.ck .ck-widget__resizer__handle{background:var(--ck-color-focus-border);border:var(--ck-resizer-border-width) solid #fff;border-radius:var(--ck-resizer-border-radius);height:var(--ck-resizer-size);width:var(--ck-resizer-size)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-left{left:var(--ck-resizer-offset);top:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-top-right{right:var(--ck-resizer-offset);top:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-right{bottom:var(--ck-resizer-offset);right:var(--ck-resizer-offset)}.ck .ck-widget__resizer__handle.ck-widget__resizer__handle-bottom-left{bottom:var(--ck-resizer-offset);left:var(--ck-resizer-offset)}",""]);const r=i},"./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widgettypearound.css":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/css-loader/dist/runtime/api.js"),i=s.n(o)()((function(e){return e[1]}));i.push([e.id,'.ck .ck-widget .ck-widget__type-around__button{display:block;overflow:hidden;position:absolute;z-index:var(--ck-z-default)}.ck .ck-widget .ck-widget__type-around__button svg{left:50%;position:absolute;top:50%;z-index:calc(var(--ck-z-default) + 2)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_before{left:min(10%,30px);top:calc(var(--ck-widget-outline-thickness)*-.5);transform:translateY(-50%)}.ck .ck-widget .ck-widget__type-around__button.ck-widget__type-around__button_after{bottom:calc(var(--ck-widget-outline-thickness)*-.5);right:min(10%,30px);transform:translateY(50%)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{content:"";display:block;left:1px;position:absolute;top:1px;z-index:calc(var(--ck-z-default) + 1)}.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:none;left:0;position:absolute;right:0}.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__fake-caret{left:calc(var(--ck-widget-outline-thickness)*-1);right:calc(var(--ck-widget-outline-thickness)*-1)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__fake-caret{display:block;top:calc(var(--ck-widget-outline-thickness)*-1 - 1px)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__fake-caret{bottom:calc(var(--ck-widget-outline-thickness)*-1 - 1px);display:block}.ck.ck-editor__editable.ck-read-only .ck-widget__type-around,.ck.ck-editor__editable.ck-restricted-editing_mode_restricted .ck-widget__type-around,.ck.ck-editor__editable.ck-widget__type-around_disabled .ck-widget__type-around{display:none}:root{--ck-widget-type-around-button-size:20px;--ck-color-widget-type-around-button-active:var(--ck-color-focus-border);--ck-color-widget-type-around-button-hover:var(--ck-color-widget-hover-border);--ck-color-widget-type-around-button-blurred-editable:var(--ck-color-widget-blurred-border);--ck-color-widget-type-around-button-radar-start-alpha:0;--ck-color-widget-type-around-button-radar-end-alpha:.3;--ck-color-widget-type-around-button-icon:var(--ck-color-base-background)}.ck .ck-widget .ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button);border-radius:100px;height:var(--ck-widget-type-around-button-size);opacity:0;pointer-events:none;transition:opacity var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve),background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve);width:var(--ck-widget-type-around-button-size)}.ck .ck-widget .ck-widget__type-around__button svg{height:8px;margin-top:1px;transform:translate(-50%,-50%);transition:transform .5s ease;width:10px}.ck .ck-widget .ck-widget__type-around__button svg *{stroke-dasharray:10;stroke-dashoffset:0;fill:none;stroke:var(--ck-color-widget-type-around-button-icon);stroke-width:1.5px;stroke-linecap:round;stroke-linejoin:round}.ck .ck-widget .ck-widget__type-around__button svg line{stroke-dasharray:7}.ck .ck-widget .ck-widget__type-around__button:hover{animation:ck-widget-type-around-button-sonar 1s ease infinite}.ck .ck-widget .ck-widget__type-around__button:hover svg polyline{animation:ck-widget-type-around-arrow-dash 2s linear}.ck .ck-widget .ck-widget__type-around__button:hover svg line{animation:ck-widget-type-around-arrow-tip-dash 2s linear}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:1;pointer-events:auto}.ck .ck-widget:not(.ck-widget_selected)>.ck-widget__type-around>.ck-widget__type-around__button{background:var(--ck-color-widget-type-around-button-hover)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover{background:var(--ck-color-widget-type-around-button-active)}.ck .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:after,.ck .ck-widget>.ck-widget__type-around>.ck-widget__type-around__button:hover:after{background:linear-gradient(135deg,hsla(0,0%,100%,0),hsla(0,0%,100%,.3));border-radius:100px;height:calc(var(--ck-widget-type-around-button-size) - 2px);width:calc(var(--ck-widget-type-around-button-size) - 2px)}.ck .ck-widget.ck-widget_with-selection-handle>.ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:20px}.ck .ck-widget .ck-widget__type-around__fake-caret{animation:ck-widget-type-around-fake-caret-pulse 1s linear infinite normal forwards;background:var(--ck-color-base-text);height:1px;outline:1px solid hsla(0,0%,100%,.5);pointer-events:none}.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_after,.ck .ck-widget.ck-widget_selected.ck-widget_type-around_show-fake-caret_before{outline-color:transparent}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected:hover,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected:hover{outline-color:var(--ck-color-widget-hover-border)}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after>.ck-widget__type-around>.ck-widget__type-around__button,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_after.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_selected.ck-widget_with-resizer>.ck-widget__resizer,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected:hover>.ck-widget__selection-handle,.ck .ck-widget.ck-widget_type-around_show-fake-caret_before.ck-widget_with-selection-handle.ck-widget_selected>.ck-widget__selection-handle{opacity:0}.ck[dir=rtl] .ck-widget.ck-widget_with-selection-handle .ck-widget__type-around>.ck-widget__type-around__button_before{margin-left:0;margin-right:20px}.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button,.ck-editor__nested-editable.ck-editor__editable_selected .ck-widget:hover>.ck-widget__type-around>.ck-widget__type-around__button{opacity:0;pointer-events:none}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover){background:var(--ck-color-widget-type-around-button-blurred-editable)}.ck-editor__editable.ck-blurred .ck-widget.ck-widget_selected>.ck-widget__type-around>.ck-widget__type-around__button:not(:hover) svg *{stroke:#999}@keyframes ck-widget-type-around-arrow-dash{0%{stroke-dashoffset:10}20%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-arrow-tip-dash{0%,20%{stroke-dashoffset:7}40%,to{stroke-dashoffset:0}}@keyframes ck-widget-type-around-button-sonar{0%{box-shadow:0 0 0 0 hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}50%{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-end-alpha))}to{box-shadow:0 0 0 5px hsla(var(--ck-color-focus-border-coordinates),var(--ck-color-widget-type-around-button-radar-start-alpha))}}@keyframes ck-widget-type-around-fake-caret-pulse{0%{opacity:1}49%{opacity:1}50%{opacity:0}99%{opacity:0}to{opacity:1}}',""]);const r=i},"./node_modules/css-loader/dist/runtime/api.js":e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var s=e(t);return t[2]?"@media ".concat(t[2]," {").concat(s,"}"):s})).join("")},t.i=function(e,s,o){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(o)for(var r=0;r<this.length;r++){var n=this[r][0];null!=n&&(i[n]=!0)}for(var a=0;a<e.length;a++){var c=[].concat(e[a]);o&&i[c[0]]||(s&&(c[2]?c[2]="".concat(s," and ").concat(c[2]):c[2]=s),t.push(c))}},t}},"./packages/ckeditor5-core/theme/icons/pilcrow.svg":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.999 2H15a1 1 0 0 1 0 2h-1.004v13a1 1 0 1 1-2 0V4H8.999v13a1 1 0 1 1-2 0v-7A4 4 0 0 1 3 6a4 4 0 0 1 3.999-4z"/></svg>'},"./packages/ckeditor5-core/theme/icons/three-vertical-dots.svg":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><circle cx="9.5" cy="4.5" r="1.5"/><circle cx="9.5" cy="10.5" r="1.5"/><circle cx="9.5" cy="16.5" r="1.5"/></svg>'},"./packages/ckeditor5-ui/theme/icons/dropdown-arrow.svg":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o='<svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg"><path d="M.941 4.523a.75.75 0 1 1 1.06-1.06l3.006 3.005 3.005-3.005a.75.75 0 1 1 1.06 1.06l-3.549 3.55a.75.75 0 0 1-1.168-.136L.941 4.523z"/></svg>'},"./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":(e,t,s)=>{"use strict";var o,i=function(){return void 0===o&&(o=Boolean(window&&document&&document.all&&!window.atob)),o},r=function(){var e={};return function(t){if(void 0===e[t]){var s=document.querySelector(t);if(window.HTMLIFrameElement&&s instanceof window.HTMLIFrameElement)try{s=s.contentDocument.head}catch(e){s=null}e[t]=s}return e[t]}}(),n=[];function a(e){for(var t=-1,s=0;s<n.length;s++)if(n[s].identifier===e){t=s;break}return t}function c(e,t){for(var s={},o=[],i=0;i<e.length;i++){var r=e[i],c=t.base?r[0]+t.base:r[0],l=s[c]||0,d="".concat(c," ").concat(l);s[c]=l+1;var h=a(d),u={css:r[1],media:r[2],sourceMap:r[3]};-1!==h?(n[h].references++,n[h].updater(u)):n.push({identifier:d,updater:m(u,t),references:1}),o.push(d)}return o}function l(e){var t=document.createElement("style"),o=e.attributes||{};if(void 0===o.nonce){var i=s.nc;i&&(o.nonce=i)}if(Object.keys(o).forEach((function(e){t.setAttribute(e,o[e])})),"function"==typeof e.insert)e.insert(t);else{var n=r(e.insert||"head");if(!n)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");n.appendChild(t)}return t}var d,h=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function u(e,t,s,o){var i=s?"":o.media?"@media ".concat(o.media," {").concat(o.css,"}"):o.css;if(e.styleSheet)e.styleSheet.cssText=h(t,i);else{var r=document.createTextNode(i),n=e.childNodes;n[t]&&e.removeChild(n[t]),n.length?e.insertBefore(r,n[t]):e.appendChild(r)}}function p(e,t,s){var o=s.css,i=s.media,r=s.sourceMap;if(i?e.setAttribute("media",i):e.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),e.styleSheet)e.styleSheet.cssText=o;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(o))}}var g=null,f=0;function m(e,t){var s,o,i;if(t.singleton){var r=f++;s=g||(g=l(t)),o=u.bind(null,s,r,!1),i=u.bind(null,s,r,!0)}else s=l(t),o=p.bind(null,s,t),i=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(s)};return o(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;o(e=t)}else i()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=i());var s=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var o=0;o<s.length;o++){var i=a(s[o]);n[i].references--}for(var r=c(e,t),l=0;l<s.length;l++){var d=a(s[l]);0===n[d].references&&(n[d].updater(),n.splice(d,1))}s=r}}}},"./packages/ckeditor5-engine/src/controller/datacontroller.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Z});var o=s("./packages/ckeditor5-utils/src/observablemixin.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-utils/src/emittermixin.ts"),n=s("./packages/ckeditor5-engine/src/conversion/mapper.ts"),a=s("./packages/ckeditor5-engine/src/conversion/downcastdispatcher.ts"),c=s("./packages/ckeditor5-engine/src/conversion/downcasthelpers.ts"),l=s("./node_modules/lodash-es/isArray.js");class d{constructor(){this._consumables=new Map}add(e,t){let s;e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!0):(this._consumables.has(e)?s=this._consumables.get(e):(s=new u(e),this._consumables.set(e,s)),s.add(t))}test(e,t){const s=this._consumables.get(e);return void 0===s?null:e.is("$text")||e.is("documentFragment")?s:s.test(t)}consume(e,t){return!!this.test(e,t)&&(e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!1):this._consumables.get(e).consume(t),!0)}revert(e,t){const s=this._consumables.get(e);void 0!==s&&(e.is("$text")||e.is("documentFragment")?this._consumables.set(e,!0):s.revert(t))}static consumablesFromElement(e){const t={element:e,name:!0,attributes:[],classes:[],styles:[]},s=e.getAttributeKeys();for(const e of s)"style"!=e&&"class"!=e&&t.attributes.push(e);const o=e.getClassNames();for(const e of o)t.classes.push(e);const i=e.getStyleNames();for(const e of i)t.styles.push(e);return t}static createFrom(e,t){if(t||(t=new d),e.is("$text"))return t.add(e),t;e.is("element")&&t.add(e,d.consumablesFromElement(e)),e.is("documentFragment")&&t.add(e);for(const s of e.getChildren())t=d.createFrom(s,t);return t}}const h=["attributes","classes","styles"];class u{constructor(e){this.element=e,this._canConsumeName=null,this._consumables={attributes:new Map,styles:new Map,classes:new Map}}add(e){e.name&&(this._canConsumeName=!0);for(const t of h)t in e&&this._add(t,e[t])}test(e){if(e.name&&!this._canConsumeName)return this._canConsumeName;for(const t of h)if(t in e){const s=this._test(t,e[t]);if(!0!==s)return s}return!0}consume(e){e.name&&(this._canConsumeName=!1);for(const t of h)t in e&&this._consume(t,e[t])}revert(e){e.name&&(this._canConsumeName=!0);for(const t of h)t in e&&this._revert(t,e[t])}_add(e,t){const s=(0,l.Z)(t)?t:[t],o=this._consumables[e];for(const t of s){if("attributes"===e&&("class"===t||"style"===t))throw new i.ZP("viewconsumable-invalid-attribute",this);if(o.set(t,!0),"styles"===e)for(const e of this.element.document.stylesProcessor.getRelatedStyles(t))o.set(e,!0)}}_test(e,t){const s=(0,l.Z)(t)?t:[t],o=this._consumables[e];for(const t of s)if("attributes"!==e||"class"!==t&&"style"!==t){const e=o.get(t);if(void 0===e)return null;if(!e)return!1}else{const e="class"==t?"classes":"styles",s=this._test(e,[...this._consumables[e].keys()]);if(!0!==s)return s}return!0}_consume(e,t){const s=(0,l.Z)(t)?t:[t],o=this._consumables[e];for(const t of s)if("attributes"!==e||"class"!==t&&"style"!==t){if(o.set(t,!1),"styles"==e)for(const e of this.element.document.stylesProcessor.getRelatedStyles(t))o.set(e,!1)}else{const e="class"==t?"classes":"styles";this._consume(e,[...this._consumables[e].keys()])}}_revert(e,t){const s=(0,l.Z)(t)?t:[t],o=this._consumables[e];for(const t of s)if("attributes"!==e||"class"!==t&&"style"!==t){!1===o.get(t)&&o.set(t,!0)}else{const e="class"==t?"classes":"styles";this._revert(e,[...this._consumables[e].keys()])}}}var p=s("./packages/ckeditor5-engine/src/model/range.ts"),g=s("./packages/ckeditor5-engine/src/model/position.ts"),f=s("./packages/ckeditor5-engine/src/model/schema.ts"),m=s("./packages/ckeditor5-engine/src/model/utils/autoparagraphing.ts");class k extends r.Q5{constructor(e){super(),this._splitParts=new Map,this._cursorParents=new Map,this._modelCursor=null,this._emptyElementsToKeep=new Set,this.conversionApi={...e,consumable:null,writer:null,store:null,convertItem:(e,t)=>this._convertItem(e,t),convertChildren:(e,t)=>this._convertChildren(e,t),safeInsert:(e,t)=>this._safeInsert(e,t),updateConversionResult:(e,t)=>this._updateConversionResult(e,t),splitToAllowedParent:(e,t)=>this._splitToAllowedParent(e,t),getSplitParts:e=>this._getSplitParts(e),keepEmptyElement:e=>this._keepEmptyElement(e)}}convert(e,t,s=["$root"]){this.fire("viewCleanup",e),this._modelCursor=function(e,t){let s;for(const o of new f.G(e)){const e={};for(const t of o.getAttributeKeys())e[t]=o.getAttribute(t);const i=t.createElement(o.name,e);s&&t.insert(i,s),s=g.ZP._createAt(i,0)}return s}(s,t),this.conversionApi.writer=t,this.conversionApi.consumable=d.createFrom(e),this.conversionApi.store={};const{modelRange:o}=this._convertItem(e,this._modelCursor),i=t.createDocumentFragment();if(o){this._removeEmptyElements();for(const e of Array.from(this._modelCursor.parent.getChildren()))t.append(e,i);i.markers=function(e,t){const s=new Set,o=new Map,i=p.Z._createIn(e).getItems();for(const e of i)e.is("element","$marker")&&s.add(e);for(const e of s){const s=e.getAttribute("data-name"),i=t.createPositionBefore(e);o.has(s)?o.get(s).end=i.clone():o.set(s,new p.Z(i.clone())),t.remove(e)}return o}(i,t)}return this._modelCursor=null,this._splitParts.clear(),this._cursorParents.clear(),this._emptyElementsToKeep.clear(),this.conversionApi.writer=null,this.conversionApi.store=null,i}_convertItem(e,t){const s={viewItem:e,modelCursor:t,modelRange:null};if(e.is("element")?this.fire(`element:${e.name}`,s,this.conversionApi):e.is("$text")?this.fire("text",s,this.conversionApi):this.fire("documentFragment",s,this.conversionApi),s.modelRange&&!(s.modelRange instanceof p.Z))throw new i.ZP("view-conversion-dispatcher-incorrect-result",this);return{modelRange:s.modelRange,modelCursor:s.modelCursor}}_convertChildren(e,t){let s=t.is("position")?t:g.ZP._createAt(t,0);const o=new p.Z(s);for(const t of Array.from(e.getChildren())){const e=this._convertItem(t,s);e.modelRange instanceof p.Z&&(o.end=e.modelRange.end,s=e.modelCursor)}return{modelRange:o,modelCursor:s}}_safeInsert(e,t){const s=this._splitToAllowedParent(e,t);return!!s&&(this.conversionApi.writer.insert(e,s.position),!0)}_updateConversionResult(e,t){const s=this._getSplitParts(e),o=this.conversionApi.writer;t.modelRange||(t.modelRange=o.createRange(o.createPositionBefore(e),o.createPositionAfter(s[s.length-1])));const i=this._cursorParents.get(e);t.modelCursor=i?o.createPositionAt(i,0):t.modelRange.end}_splitToAllowedParent(e,t){const{schema:s,writer:o}=this.conversionApi;let i=s.findAllowedParent(t,e);if(i){if(i===t.parent)return{position:t};this._modelCursor.parent.getAncestors().includes(i)&&(i=null)}if(!i)return(0,m.gg)(t,e,s)?{position:(0,m.zX)(t,o)}:null;const r=this.conversionApi.writer.split(t,i),n=[];for(const e of r.range.getWalker())if("elementEnd"==e.type)n.push(e.item);else{const t=n.pop(),s=e.item;this._registerSplitPair(t,s)}const a=r.range.end.parent;return this._cursorParents.set(e,a),{position:r.position,cursorParent:a}}_registerSplitPair(e,t){this._splitParts.has(e)||this._splitParts.set(e,[e]);const s=this._splitParts.get(e);this._splitParts.set(t,s),s.push(t)}_getSplitParts(e){let t;return t=this._splitParts.has(e)?this._splitParts.get(e):[e],t}_keepEmptyElement(e){this._emptyElementsToKeep.add(e)}_removeEmptyElements(){let e=!1;for(const t of this._splitParts.keys())t.isEmpty&&!this._emptyElementsToKeep.has(t)&&(this.conversionApi.writer.remove(t),this._splitParts.delete(t),e=!0);e&&this._removeEmptyElements()}}var b=s("./packages/ckeditor5-engine/src/conversion/upcasthelpers.ts"),_=s("./packages/ckeditor5-engine/src/view/documentfragment.ts"),w=s("./packages/ckeditor5-engine/src/view/document.ts"),v=s("./packages/ckeditor5-engine/src/view/downcastwriter.ts"),y=s("./packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.ts");class Z extends r.Q5{constructor(e,t){super(),this.model=e,this.mapper=new n.Z,this.downcastDispatcher=new a.Z({mapper:this.mapper,schema:e.schema}),this.downcastDispatcher.on("insert:$text",(0,c.Om)(),{priority:"lowest"}),this.downcastDispatcher.on("insert",(0,c.o6)(),{priority:"lowest"}),this.upcastDispatcher=new k({schema:e.schema}),this.viewDocument=new w.Z(t),this.stylesProcessor=t,this.htmlProcessor=new y.Z(this.viewDocument),this.processor=this.htmlProcessor,this._viewWriter=new v.Z(this.viewDocument),this.upcastDispatcher.on("text",(0,b.s8)(),{priority:"lowest"}),this.upcastDispatcher.on("element",(0,b._p)(),{priority:"lowest"}),this.upcastDispatcher.on("documentFragment",(0,b._p)(),{priority:"lowest"}),o.y.prototype.decorate.call(this,"init"),o.y.prototype.decorate.call(this,"set"),o.y.prototype.decorate.call(this,"get"),this.on("init",(()=>{this.fire("ready")}),{priority:"lowest"}),this.on("ready",(()=>{this.model.enqueueChange({isUndoable:!1},m._m)}),{priority:"lowest"})}get(e={}){const{rootName:t="main",trim:s="empty"}=e;if(!this._checkIfRootsExists([t]))throw new i.ZP("datacontroller-get-non-existent-root",this);const o=this.model.document.getRoot(t);return"empty"!==s||this.model.hasContent(o,{ignoreWhitespaces:!0})?this.stringify(o,e):""}stringify(e,t={}){const s=this.toView(e,t);return this.processor.toData(s)}toView(e,t={}){const s=this.viewDocument,o=this._viewWriter;this.mapper.clearBindings();const i=p.Z._createIn(e),r=new _.Z(s);this.mapper.bindElements(e,r);const n=e.is("documentFragment")?e.markers:function(e){const t=[],s=e.root.document;if(!s)return new Map;const o=p.Z._createIn(e);for(const e of s.model.markers){const s=e.getRange(),i=s.isCollapsed,r=s.start.isEqual(o.start)||s.end.isEqual(o.end);if(i&&r)t.push([e.name,s]);else{const i=o.getIntersection(s);i&&t.push([e.name,i])}}return t.sort((([e,t],[s,o])=>{if("after"!==t.end.compareWith(o.start))return 1;if("before"!==t.start.compareWith(o.end))return-1;switch(t.start.compareWith(o.start)){case"before":return 1;case"after":return-1;default:switch(t.end.compareWith(o.end)){case"before":return 1;case"after":return-1;default:return s.localeCompare(e)}}})),new Map(t)}(e);return this.downcastDispatcher.convert(i,n,o,t),r}init(e){if(this.model.document.version)throw new i.ZP("datacontroller-init-document-not-empty",this);let t={};if("string"==typeof e?t.main=e:t=e,!this._checkIfRootsExists(Object.keys(t)))throw new i.ZP("datacontroller-init-non-existent-root",this);return this.model.enqueueChange({isUndoable:!1},(e=>{for(const s of Object.keys(t)){const o=this.model.document.getRoot(s);e.insert(this.parse(t[s],o),o,0)}})),Promise.resolve()}set(e,t={}){let s={};if("string"==typeof e?s.main=e:s=e,!this._checkIfRootsExists(Object.keys(s)))throw new i.ZP("datacontroller-set-non-existent-root",this);this.model.enqueueChange(t.batchType||{},(e=>{e.setSelection(null),e.removeSelectionAttribute(this.model.document.selection.getAttributeKeys());for(const t of Object.keys(s)){const o=this.model.document.getRoot(t);e.remove(e.createRangeIn(o)),e.insert(this.parse(s[t],o),o,0)}}))}parse(e,t="$root"){const s=this.processor.toView(e);return this.toModel(s,t)}toModel(e,t="$root"){return this.model.change((s=>this.upcastDispatcher.convert(e,s,t)))}addStyleProcessorRules(e){e(this.stylesProcessor)}registerRawContentMatcher(e){this.processor&&this.processor!==this.htmlProcessor&&this.processor.registerRawContentMatcher(e),this.htmlProcessor.registerRawContentMatcher(e)}destroy(){this.stopListening()}_checkIfRootsExists(e){for(const t of e)if(!this.model.document.getRootNames().includes(t))return!1;return!0}}},"./packages/ckeditor5-engine/src/controller/editingcontroller.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>F});var o=s("./packages/ckeditor5-engine/src/view/editableelement.ts");const i=Symbol("rootName");class r extends o.Z{constructor(e,t){super(e,t),this.rootName="main"}get rootName(){return this.getCustomProperty(i)}set rootName(e){this._setCustomProperty(i,e)}set _name(e){this.name=e}}r.prototype.is=function(e,t){return t?t===this.name&&("rootElement"===e||"view:rootElement"===e||"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"rootElement"===e||"view:rootElement"===e||"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e};var n=s("./packages/ckeditor5-engine/src/view/document.ts"),a=s("./packages/ckeditor5-engine/src/view/downcastwriter.ts"),c=s("./packages/ckeditor5-engine/src/view/renderer.ts"),l=s("./packages/ckeditor5-engine/src/view/domconverter.ts"),d=s("./packages/ckeditor5-engine/src/view/position.ts"),h=s("./packages/ckeditor5-engine/src/view/range.ts"),u=s("./packages/ckeditor5-engine/src/view/selection.ts"),p=s("./packages/ckeditor5-engine/src/view/observer/observer.ts"),g=s("./packages/ckeditor5-engine/src/view/filler.ts"),f=s("./node_modules/lodash-es/_baseIsEqual.js");const m=function(e,t,s){var o=(s="function"==typeof s?s:void 0)?s(e,t):void 0;return void 0===o?(0,f.Z)(e,t,void 0,s):!!o};class k extends p.Z{constructor(e){super(e),this._config={childList:!0,characterData:!0,characterDataOldValue:!0,subtree:!0},this.domConverter=e.domConverter,this.renderer=e._renderer,this._domElements=[],this._mutationObserver=new window.MutationObserver(this._onMutations.bind(this))}flush(){this._onMutations(this._mutationObserver.takeRecords())}observe(e){this._domElements.push(e),this.isEnabled&&this._mutationObserver.observe(e,this._config)}enable(){super.enable();for(const e of this._domElements)this._mutationObserver.observe(e,this._config)}disable(){super.disable(),this._mutationObserver.disconnect()}destroy(){super.destroy(),this._mutationObserver.disconnect()}_onMutations(e){if(0===e.length)return;const t=this.domConverter,s=new Map,o=new Set;for(const s of e)if("childList"===s.type){const e=t.mapDomToView(s.target);if(e&&(e.is("uiElement")||e.is("rawElement")))continue;e&&!this._isBogusBrMutation(s)&&o.add(e)}for(const i of e){const e=t.mapDomToView(i.target);if((!e||!e.is("uiElement")&&!e.is("rawElement"))&&"characterData"===i.type){const e=t.findCorrespondingViewText(i.target);e&&!o.has(e.parent)?s.set(e,{type:"text",oldText:e.data,newText:(0,g.th)(i.target),node:e}):!e&&(0,g.Sw)(i.target)&&o.add(t.mapDomToView(i.target.parentNode))}}const i=[];for(const e of s.values())this.renderer.markToSync("text",e.node),i.push(e);for(const e of o){const s=t.mapViewToDom(e),o=Array.from(e.getChildren()),r=Array.from(t.domChildrenToView(s,{withChildren:!1}));m(o,r,a)||(this.renderer.markToSync("children",e),i.push({type:"children",oldChildren:o,newChildren:r,node:e}))}const r=e[0].target.ownerDocument.getSelection();let n=null;if(r&&r.anchorNode){const e=t.domPositionToView(r.anchorNode,r.anchorOffset),s=t.domPositionToView(r.focusNode,r.focusOffset);e&&s&&(n=new u.Z(e),n.setFocus(s))}function a(e,t){if(!Array.isArray(e))return e===t||!(!e.is("$text")||!t.is("$text"))&&e.data===t.data}i.length&&(this.document.fire("mutations",i,n),this.view.forceRender())}_isBogusBrMutation(e){let t=null;return null===e.nextSibling&&0===e.removedNodes.length&&1==e.addedNodes.length&&(t=this.domConverter.domToView(e.addedNodes[0],{withChildren:!1})),t&&t.is("element","br")}}var b=s("./packages/ckeditor5-engine/src/view/observer/domeventobserver.ts"),_=s("./packages/ckeditor5-utils/src/keyboard.ts");class w extends b.Z{constructor(e){super(e),this.domEventType=["keydown","keyup"]}onDomEvent(e){const t={keyCode:e.keyCode,altKey:e.altKey,ctrlKey:e.ctrlKey,shiftKey:e.shiftKey,metaKey:e.metaKey,get keystroke(){return(0,_.Cq)(this)}};this.fire(e.type,e,t)}}var v=s("./node_modules/lodash-es/debounce.js");class y extends p.Z{constructor(e){super(e),this._fireSelectionChangeDoneDebounced=(0,v.Z)((e=>{this.document.fire("selectionChangeDone",e)}),200)}observe(){const e=this.document;e.on("arrowKey",((t,s)=>{e.selection.isFake&&this.isEnabled&&s.preventDefault()}),{context:"$capture"}),e.on("arrowKey",((t,s)=>{e.selection.isFake&&this.isEnabled&&this._handleSelectionMove(s.keyCode)}),{priority:"lowest"})}destroy(){super.destroy(),this._fireSelectionChangeDoneDebounced.cancel()}_handleSelectionMove(e){const t=this.document.selection,s=new u.Z(t.getRanges(),{backward:t.isBackward,fake:!1});e!=_.Do.arrowleft&&e!=_.Do.arrowup||s.setTo(s.getFirstPosition()),e!=_.Do.arrowright&&e!=_.Do.arrowdown||s.setTo(s.getLastPosition());const o={oldSelection:t,newSelection:s,domSelection:null};this.document.fire("selectionChange",o),this._fireSelectionChangeDoneDebounced(o)}}class Z extends p.Z{constructor(e){super(e),this.mutationObserver=e.getObserver(k),this.selection=this.document.selection,this.domConverter=e.domConverter,this._documents=new WeakSet,this._fireSelectionChangeDoneDebounced=(0,v.Z)((e=>{this.document.fire("selectionChangeDone",e)}),200),this._clearInfiniteLoopInterval=setInterval((()=>this._clearInfiniteLoop()),1e3),this._documentIsSelectingInactivityTimeoutDebounced=(0,v.Z)((()=>this.document.isSelecting=!1),5e3),this._loopbackCounter=0}observe(e){const t=e.ownerDocument,s=()=>{this.document.isSelecting=!1,this._documentIsSelectingInactivityTimeoutDebounced.cancel()};this.listenTo(e,"selectstart",(()=>{this.document.isSelecting=!0,this._documentIsSelectingInactivityTimeoutDebounced()}),{priority:"highest"}),this.listenTo(e,"keydown",s,{priority:"highest"}),this.listenTo(e,"keyup",s,{priority:"highest"}),this._documents.has(t)||(this.listenTo(t,"mouseup",s,{priority:"highest"}),this.listenTo(t,"selectionchange",((e,s)=>{this._handleSelectionChange(s,t),this._documentIsSelectingInactivityTimeoutDebounced()})),this._documents.add(t))}destroy(){super.destroy(),clearInterval(this._clearInfiniteLoopInterval),this._fireSelectionChangeDoneDebounced.cancel(),this._documentIsSelectingInactivityTimeoutDebounced.cancel()}_handleSelectionChange(e,t){if(!this.isEnabled)return;const s=t.defaultView.getSelection();if(this.checkShouldIgnoreEventFromTarget(s.anchorNode))return;this.mutationObserver.flush();const o=this.domConverter.domSelectionToView(s);if(0!=o.rangeCount){if(this.view.hasDomSelection=!0,!(this.selection.isEqual(o)&&this.domConverter.isDomSelectionCorrect(s)||++this._loopbackCounter>60))if(this.selection.isSimilar(o))this.view.forceRender();else{const e={oldSelection:this.selection,newSelection:o,domSelection:s};this.document.fire("selectionChange",e),this._fireSelectionChangeDoneDebounced(e)}}else this.view.hasDomSelection=!1}_clearInfiniteLoop(){this._loopbackCounter=0}}class P extends b.Z{constructor(e){super(e),this.domEventType=["focus","blur"],this.useCapture=!0;const t=this.document;t.on("focus",(()=>{t.isFocused=!0,this._renderTimeoutId=setTimeout((()=>e.change((()=>{}))),50)})),t.on("blur",((s,o)=>{const i=t.selection.editableElement;null!==i&&i!==o.target||(t.isFocused=!1,e.change((()=>{})))}))}onDomEvent(e){this.fire(e.type,e)}destroy(){this._renderTimeoutId&&clearTimeout(this._renderTimeoutId),super.destroy()}}class x extends b.Z{constructor(e){super(e),this.domEventType=["compositionstart","compositionupdate","compositionend"];const t=this.document;t.on("compositionstart",(()=>{t.isComposing=!0})),t.on("compositionend",(()=>{t.isComposing=!1}))}onDomEvent(e){this.fire(e.type,e)}}class T extends b.Z{constructor(e){super(e),this.domEventType=["beforeinput"]}onDomEvent(e){this.fire(e.type,e)}}var A=s("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.ts"),C=s("./packages/ckeditor5-utils/src/index.ts");class E extends p.Z{constructor(e){super(e),this.document.on("keydown",((e,t)=>{if(this.isEnabled&&(0,C.dj)(t.keyCode)){const s=new A.Z(this.document,"arrowKey",this.document.selection.getFirstRange());this.document.fire(s,t),s.stop.called&&e.stop()}}))}observe(){}}class S extends p.Z{constructor(e){super(e);const t=this.document;t.on("keydown",((e,s)=>{if(!this.isEnabled||s.keyCode!=_.Do.tab||s.ctrlKey)return;const o=new A.Z(t,"tab",t.selection.getFirstRange());t.fire(o,s),o.stop.called&&e.stop()}))}observe(){}}var j=s("./packages/ckeditor5-utils/src/observablemixin.ts"),O=s("./packages/ckeditor5-utils/src/dom/scroll.ts"),R=s("./packages/ckeditor5-engine/src/view/uielement.ts"),M=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),N=s("./packages/ckeditor5-utils/src/env.ts");class V extends j.y{constructor(e){super(),this.document=new n.Z(e),this.domConverter=new l.Z(this.document),this.domRoots=new Map,this.set("isRenderingInProgress",!1),this.set("hasDomSelection",!1),this._renderer=new c.Z(this.domConverter,this.document.selection),this._renderer.bind("isFocused","isSelecting").to(this.document,"isFocused","isSelecting"),this._initialDomRootAttributes=new WeakMap,this._observers=new Map,this._ongoingChange=!1,this._postFixersInProgress=!1,this._renderingDisabled=!1,this._hasChangedSinceTheLastRendering=!1,this._writer=new a.Z(this.document),this.addObserver(k),this.addObserver(Z),this.addObserver(P),this.addObserver(w),this.addObserver(y),this.addObserver(x),this.addObserver(E),this.addObserver(S),N.ZP.isAndroid&&this.addObserver(T),(0,g.mm)(this),(0,R.h)(this),this.on("render",(()=>{this._render(),this.document.fire("layoutChanged"),this._hasChangedSinceTheLastRendering=!1})),this.listenTo(this.document.selection,"change",(()=>{this._hasChangedSinceTheLastRendering=!0})),this.listenTo(this.document,"change:isFocused",(()=>{this._hasChangedSinceTheLastRendering=!0}))}attachDomRoot(e,t="main"){const s=this.document.getRoot(t);s._name=e.tagName.toLowerCase();const o={};for(const{name:t,value:i}of Array.from(e.attributes))o[t]=i,"class"===t?this._writer.addClass(i.split(" "),s):this._writer.setAttribute(t,i,s);this._initialDomRootAttributes.set(e,o);const i=()=>{this._writer.setAttribute("contenteditable",(!s.isReadOnly).toString(),s),s.isReadOnly?this._writer.addClass("ck-read-only",s):this._writer.removeClass("ck-read-only",s)};i(),this.domRoots.set(t,e),this.domConverter.bindElements(e,s),this._renderer.markToSync("children",s),this._renderer.markToSync("attributes",s),this._renderer.domDocuments.add(e.ownerDocument),s.on("change:children",((e,t)=>this._renderer.markToSync("children",t))),s.on("change:attributes",((e,t)=>this._renderer.markToSync("attributes",t))),s.on("change:text",((e,t)=>this._renderer.markToSync("text",t))),s.on("change:isReadOnly",(()=>this.change(i))),s.on("change",(()=>{this._hasChangedSinceTheLastRendering=!0}));for(const s of this._observers.values())s.observe(e,t)}detachDomRoot(e){const t=this.domRoots.get(e);Array.from(t.attributes).forEach((({name:e})=>t.removeAttribute(e)));const s=this._initialDomRootAttributes.get(t);for(const e in s)t.setAttribute(e,s[e]);this.domRoots.delete(e),this.domConverter.unbindDomElement(t)}getDomRoot(e="main"){return this.domRoots.get(e)}addObserver(e){let t=this._observers.get(e);if(t)return t;t=new e(this),this._observers.set(e,t);for(const[e,s]of this.domRoots)t.observe(s,e);return t.enable(),t}getObserver(e){return this._observers.get(e)}disableObservers(){for(const e of this._observers.values())e.disable()}enableObservers(){for(const e of this._observers.values())e.enable()}scrollToTheSelection(){const e=this.document.selection.getFirstRange();e&&(0,O.m)({target:this.domConverter.viewRangeToDom(e),viewportOffset:20})}focus(){if(!this.document.isFocused){const e=this.document.selection.editableElement;e&&(this.domConverter.focus(e),this.forceRender())}}change(e){if(this.isRenderingInProgress||this._postFixersInProgress)throw new M.ZP("cannot-change-view-tree",this);try{if(this._ongoingChange)return e(this._writer);this._ongoingChange=!0;const t=e(this._writer);return this._ongoingChange=!1,!this._renderingDisabled&&this._hasChangedSinceTheLastRendering&&(this._postFixersInProgress=!0,this.document._callPostFixers(this._writer),this._postFixersInProgress=!1,this.fire("render")),t}catch(e){M.ZP.rethrowUnexpectedError(e,this)}}forceRender(){this._hasChangedSinceTheLastRendering=!0,this.change((()=>{}))}destroy(){for(const e of this._observers.values())e.destroy();this.document.destroy(),this.stopListening()}createPositionAt(e,t){return d.Z._createAt(e,t)}createPositionAfter(e){return d.Z._createAfter(e)}createPositionBefore(e){return d.Z._createBefore(e)}createRange(...e){return new h.Z(...e)}createRangeOn(e){return h.Z._createOn(e)}createRangeIn(e){return h.Z._createIn(e)}createSelection(...e){return new u.Z(...e)}_disableRendering(e){this._renderingDisabled=e,0==e&&this.change((()=>{}))}_render(){this.isRenderingInProgress=!0,this.disableObservers(),this._renderer.render(),this.enableObservers(),this.isRenderingInProgress=!1}}var I=s("./packages/ckeditor5-engine/src/conversion/mapper.ts"),D=s("./packages/ckeditor5-engine/src/conversion/downcastdispatcher.ts"),z=s("./packages/ckeditor5-engine/src/conversion/downcasthelpers.ts"),B=s("./packages/ckeditor5-engine/src/conversion/upcasthelpers.ts");class F extends j.y{constructor(e,t){super(),this.model=e,this.view=new V(t),this.mapper=new I.Z,this.downcastDispatcher=new D.Z({mapper:this.mapper,schema:e.schema});const s=this.model.document,o=s.selection,i=this.model.markers;this.listenTo(this.model,"_beforeChanges",(()=>{this.view._disableRendering(!0)}),{priority:"highest"}),this.listenTo(this.model,"_afterChanges",(()=>{this.view._disableRendering(!1)}),{priority:"lowest"}),this.listenTo(s,"change",(()=>{this.view.change((e=>{this.downcastDispatcher.convertChanges(s.differ,i,e),this.downcastDispatcher.convertSelection(o,i,e)}))}),{priority:"low"}),this.listenTo(this.view.document,"selectionChange",(0,B.Fo)(this.model,this.mapper)),this.downcastDispatcher.on("insert:$text",(0,z.Om)(),{priority:"lowest"}),this.downcastDispatcher.on("insert",(0,z.o6)(),{priority:"lowest"}),this.downcastDispatcher.on("remove",(0,z.Od)(),{priority:"low"}),this.downcastDispatcher.on("selection",(0,z.iO)(),{priority:"high"}),this.downcastDispatcher.on("selection",(0,z.k3)(),{priority:"low"}),this.downcastDispatcher.on("selection",(0,z.GM)(),{priority:"low"}),this.view.document.roots.bindTo(this.model.document.roots).using((e=>{if("$graveyard"==e.rootName)return null;const t=new r(this.view.document,e.name);return t.rootName=e.rootName,this.mapper.bindElements(e,t),t}))}destroy(){this.view.destroy(),this.stopListening()}reconvertMarker(e){const t="string"==typeof e?e:e.name,s=this.model.markers.get(t);if(!s)throw new M.ZP("editingcontroller-reconvertmarker-marker-not-exist",this,{markerName:t});this.model.change((()=>{this.model.markers._refresh(s)}))}reconvertItem(e){this.model.change((()=>{this.model.document.differ._refreshItem(e)}))}}},"./packages/ckeditor5-engine/src/conversion/conversion.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-engine/src/conversion/upcasthelpers.ts"),r=s("./packages/ckeditor5-engine/src/conversion/downcasthelpers.ts"),n=s("./packages/ckeditor5-utils/src/toarray.ts");class a{constructor(e,t){this._helpers=new Map,this._downcast=(0,n.Z)(e),this._createConversionHelpers({name:"downcast",dispatchers:this._downcast,isDowncast:!0}),this._upcast=(0,n.Z)(t),this._createConversionHelpers({name:"upcast",dispatchers:this._upcast,isDowncast:!1})}addAlias(e,t){const s=this._downcast.includes(t);if(!this._upcast.includes(t)&&!s)throw new o.ZP("conversion-add-alias-dispatcher-not-registered",this);this._createConversionHelpers({name:e,dispatchers:[t],isDowncast:s})}for(e){if(!this._helpers.has(e))throw new o.ZP("conversion-for-unknown-group",this);return this._helpers.get(e)}elementToElement(e){this.for("downcast").elementToElement(e);for(const{model:t,view:s}of c(e))this.for("upcast").elementToElement({model:t,view:s,converterPriority:e.converterPriority})}attributeToElement(e){this.for("downcast").attributeToElement(e);for(const{model:t,view:s}of c(e))this.for("upcast").elementToAttribute({view:s,model:t,converterPriority:e.converterPriority})}attributeToAttribute(e){this.for("downcast").attributeToAttribute(e);for(const{model:t,view:s}of c(e))this.for("upcast").attributeToAttribute({view:s,model:t})}_createConversionHelpers({name:e,dispatchers:t,isDowncast:s}){if(this._helpers.has(e))throw new o.ZP("conversion-group-exists",this);const n=s?new r.ZP(t):new i.ZP(t);this._helpers.set(e,n)}}function*c(e){if(e.model.values)for(const t of e.model.values){const s={key:e.model.key,value:t},o=e.view[t],i=e.upcastAlso?e.upcastAlso[t]:void 0;yield*l(s,o,i)}else yield*l(e.model,e.view,e.upcastAlso)}function*l(e,t,s){if(yield{model:e,view:t},s)for(const t of(0,n.Z)(s))yield{model:e,view:t}}},"./packages/ckeditor5-engine/src/conversion/conversionhelpers.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{constructor(e){this._dispatchers=e}add(e){for(const t of this._dispatchers)e(t);return this}}},"./packages/ckeditor5-engine/src/conversion/downcastdispatcher.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r{constructor(){this._consumable=new Map,this._textProxyRegistry=new Map}add(e,t){t=n(t),e instanceof o.Z&&(e=this._getSymbolForTextProxy(e)),this._consumable.has(e)||this._consumable.set(e,new Map),this._consumable.get(e).set(t,!0)}consume(e,t){return t=n(t),e instanceof o.Z&&(e=this._getSymbolForTextProxy(e)),!!this.test(e,t)&&(this._consumable.get(e).set(t,!1),!0)}test(e,t){t=n(t),e instanceof o.Z&&(e=this._getSymbolForTextProxy(e));const s=this._consumable.get(e);if(void 0===s)return null;const i=s.get(t);return void 0===i?null:i}revert(e,t){t=n(t),e instanceof o.Z&&(e=this._getSymbolForTextProxy(e));const s=this.test(e,t);return!1===s?(this._consumable.get(e).set(t,!0),!0):!0!==s&&null}verifyAllConsumed(e){const t=[];for(const[s,o]of this._consumable)for(const[i,r]of o){const o=i.split(":")[0];r&&e==o&&t.push({event:i,item:s.name||s.description})}if(t.length)throw new i.ZP("conversion-model-consumable-not-consumed",null,{items:t})}_getSymbolForTextProxy(e){let t=null;const s=this._textProxyRegistry.get(e.startOffset);if(s){const o=s.get(e.endOffset);o&&(t=o.get(e.parent))}return t||(t=this._addSymbolForTextProxy(e)),t}_addSymbolForTextProxy(e){const t=e.startOffset,s=e.endOffset,o=e.parent,i=Symbol("$textProxy:"+e.data);let r,n;return r=this._textProxyRegistry.get(t),r||(r=new Map,this._textProxyRegistry.set(t,r)),n=r.get(s),n||(n=new Map,r.set(s,n)),n.set(o,i),i}}function n(e){const t=e.split(":");return"insert"==t[0]?t[0]:"addMarker"==t[0]||"removeMarker"==t[0]?e:t.length>1?t[0]+":"+t[1]:t[0]}var a=s("./packages/ckeditor5-engine/src/model/range.ts"),c=s("./packages/ckeditor5-utils/src/emittermixin.ts");class l extends c.Q5{constructor(e){super(),this._conversionApi={dispatcher:this,...e},this._firedEventsMap=new WeakMap}convertChanges(e,t,s){const o=this._createConversionApi(s,e.getRefreshedItems());for(const t of e.getMarkersToRemove())this._convertMarkerRemove(t.name,t.range,o);const i=this._reduceChanges(e.getChanges());for(const e of i)"insert"===e.type?this._convertInsert(a.Z._createFromPositionAndShift(e.position,e.length),o):"reinsert"===e.type?this._convertReinsert(a.Z._createFromPositionAndShift(e.position,e.length),o):"remove"===e.type?this._convertRemove(e.position,e.length,e.name,o):this._convertAttribute(e.range,e.attributeKey,e.attributeOldValue,e.attributeNewValue,o);for(const e of o.mapper.flushUnboundMarkerNames()){const s=t.get(e).getRange();this._convertMarkerRemove(e,s,o),this._convertMarkerAdd(e,s,o)}for(const t of e.getMarkersToAdd())this._convertMarkerAdd(t.name,t.range,o);o.mapper.flushDeferredBindings(),o.consumable.verifyAllConsumed("insert")}convert(e,t,s,o={}){const i=this._createConversionApi(s,void 0,o);this._convertInsert(e,i);for(const[e,s]of t)this._convertMarkerAdd(e,s,i);i.consumable.verifyAllConsumed("insert")}convertSelection(e,t,s){const o=Array.from(t.getMarkersAtPosition(e.getFirstPosition())),i=this._createConversionApi(s);if(this._addConsumablesForSelection(i.consumable,e,o),this.fire("selection",{selection:e},i),e.isCollapsed){for(const t of o){const s=t.getRange();if(!d(e.getFirstPosition(),t,i.mapper))continue;const o={item:e,markerName:t.name,markerRange:s};i.consumable.test(e,"addMarker:"+t.name)&&this.fire(`addMarker:${t.name}`,o,i)}for(const t of e.getAttributeKeys()){const s={item:e,range:e.getFirstRange(),attributeKey:t,attributeOldValue:null,attributeNewValue:e.getAttribute(t)};i.consumable.test(e,"attribute:"+s.attributeKey)&&this.fire(`attribute:${s.attributeKey}:$text`,s,i)}}}_convertInsert(e,t,s={}){s.doNotAddConsumables||this._addConsumablesForInsert(t.consumable,Array.from(e));for(const s of Array.from(e.getWalker({shallow:!0})).map(h))this._testAndFire("insert",s,t)}_convertRemove(e,t,s,o){this.fire(`remove:${s}`,{position:e,length:t},o)}_convertAttribute(e,t,s,o,i){this._addConsumablesForRange(i.consumable,e,`attribute:${t}`);for(const r of e){const e={item:r.item,range:a.Z._createFromPositionAndShift(r.previousPosition,r.length),attributeKey:t,attributeOldValue:s,attributeNewValue:o};this._testAndFire(`attribute:${t}`,e,i)}}_convertReinsert(e,t){const s=Array.from(e.getWalker({shallow:!0}));this._addConsumablesForInsert(t.consumable,s);for(const e of s.map(h))this._testAndFire("insert",{...e,reconversion:!0},t)}_convertMarkerAdd(e,t,s){if("$graveyard"==t.root.rootName)return;const o=`addMarker:${e}`;if(s.consumable.add(t,o),this.fire(o,{markerName:e,markerRange:t},s),s.consumable.consume(t,o)){this._addConsumablesForRange(s.consumable,t,o);for(const i of t.getItems()){if(!s.consumable.test(i,o))continue;const r={item:i,range:a.Z._createOn(i),markerName:e,markerRange:t};this.fire(o,r,s)}}}_convertMarkerRemove(e,t,s){"$graveyard"!=t.root.rootName&&this.fire(`removeMarker:${e}`,{markerName:e,markerRange:t},s)}_reduceChanges(e){const t={changes:e};return this.fire("reduceChanges",t),t.changes}_addConsumablesForInsert(e,t){for(const s of t){const t=s.item;if(null===e.test(t,"insert")){e.add(t,"insert");for(const s of t.getAttributeKeys())e.add(t,"attribute:"+s)}}return e}_addConsumablesForRange(e,t,s){for(const o of t.getItems())e.add(o,s);return e}_addConsumablesForSelection(e,t,s){e.add(t,"selection");for(const o of s)e.add(t,"addMarker:"+o.name);for(const s of t.getAttributeKeys())e.add(t,"attribute:"+s);return e}_testAndFire(e,t,s){const o=function(e,t){const s=t.item.is("element")?t.item.name:"$text";return`${e}:${s}`}(e,t),i=t.item.is("$textProxy")?s.consumable._getSymbolForTextProxy(t.item):t.item,r=this._firedEventsMap.get(s),n=r.get(i);if(n){if(n.has(o))return;n.add(o)}else r.set(i,new Set([o]));this.fire(o,t,s)}_testAndFireAddAttributes(e,t){const s={item:e,range:a.Z._createOn(e)};for(const e of s.item.getAttributeKeys())s.attributeKey=e,s.attributeOldValue=null,s.attributeNewValue=s.item.getAttribute(e),this._testAndFire(`attribute:${e}`,s,t)}_createConversionApi(e,t=new Set,s={}){const o={...this._conversionApi,consumable:new r,writer:e,options:s,convertItem:e=>this._convertInsert(a.Z._createOn(e),o),convertChildren:e=>this._convertInsert(a.Z._createIn(e),o,{doNotAddConsumables:!0}),convertAttributes:e=>this._testAndFireAddAttributes(e,o),canReuseView:e=>!t.has(o.mapper.toModelElement(e))};return this._firedEventsMap.set(o,new Map),o}}function d(e,t,s){const o=t.getRange(),i=Array.from(e.getAncestors());i.shift(),i.reverse();return!i.some((e=>{if(o.containsItem(e)){return!!s.toViewElement(e).getCustomProperty("addHighlight")}}))}function h(e){return{item:e.item,range:a.Z._createFromPositionAndShift(e.previousPosition,e.length)}}},"./packages/ckeditor5-engine/src/conversion/downcasthelpers.ts":(e,t,s)=>{"use strict";s.d(t,{GM:()=>_,Od:()=>m,Om:()=>g,ZP:()=>p,iO:()=>w,k3:()=>b,o6:()=>f});var o=s("./packages/ckeditor5-engine/src/model/range.ts"),i=s("./packages/ckeditor5-engine/src/model/selection.ts"),r=s("./packages/ckeditor5-engine/src/model/documentselection.ts"),n=s("./packages/ckeditor5-engine/src/model/element.ts"),a=s("./packages/ckeditor5-engine/src/model/position.ts"),c=s("./packages/ckeditor5-engine/src/view/attributeelement.ts"),l=s("./packages/ckeditor5-engine/src/conversion/conversionhelpers.ts"),d=s("./node_modules/lodash-es/cloneDeep.js"),h=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),u=s("./packages/ckeditor5-utils/src/toarray.ts");class p extends l.Z{elementToElement(e){return this.add(function(e){const t=y(e.model),s=Z(e.view,"container");t.attributes.length&&(t.children=!0);return o=>{o.on(`insert:${t.name}`,function(e,t=j){return(s,o,i)=>{if(!t(o.item,i.consumable,{preflight:!0}))return;const r=e(o.item,i,o);if(!r)return;t(o.item,i.consumable);const n=i.mapper.toViewPosition(o.range.start);i.mapper.bindElements(o.item,r),i.writer.insert(n,r),i.convertAttributes(o.item),E(r,o.item.getChildren(),i,{reconversion:o.reconversion})}}(s,C(t)),{priority:e.converterPriority||"normal"}),(t.children||t.attributes.length)&&o.on("reduceChanges",A(t),{priority:"low"})}}(e))}elementToStructure(e){return this.add(function(e){const t=y(e.model),s=Z(e.view,"container");return t.children=!0,o=>{if(o._conversionApi.schema.checkChild(t.name,"$text"))throw new h.ZP("conversion-element-to-structure-disallowed-text",o,{elementName:t.name});var i,r;o.on(`insert:${t.name}`,(i=s,r=C(t),(e,t,s)=>{if(!r(t.item,s.consumable,{preflight:!0}))return;const o=new Map;s.writer._registerSlotFactory(function(e,t,s){return(o,i="children")=>{const r=o.createContainerElement("$slot");let n=null;if("children"===i)n=Array.from(e.getChildren());else{if("function"!=typeof i)throw new h.ZP("conversion-slot-mode-unknown",s.dispatcher,{modeOrFilter:i});n=Array.from(e.getChildren()).filter((e=>i(e)))}return t.set(r,n),r}}(t.item,o,s));const n=i(t.item,s,t);if(s.writer._clearSlotFactory(),!n)return;!function(e,t,s){const o=Array.from(t.values()).flat(),i=new Set(o);if(i.size!=o.length)throw new h.ZP("conversion-slot-filter-overlap",s.dispatcher,{element:e});if(i.size!=e.childCount)throw new h.ZP("conversion-slot-filter-incomplete",s.dispatcher,{element:e})}(t.item,o,s),r(t.item,s.consumable);const a=s.mapper.toViewPosition(t.range.start);s.mapper.bindElements(t.item,n),s.writer.insert(a,n),s.convertAttributes(t.item),function(e,t,s,o){s.mapper.on("modelToViewPosition",n,{priority:"highest"});let i=null,r=null;for([i,r]of t)E(e,r,s,o),s.writer.move(s.writer.createRangeIn(i),s.writer.createPositionBefore(i)),s.writer.remove(i);function n(e,t){const s=t.modelPosition.nodeAfter,o=r.indexOf(s);o<0||(t.viewPosition=t.mapper.findPositionIn(i,o))}s.mapper.off("modelToViewPosition",n)}(n,o,s,{reconversion:t.reconversion})}),{priority:e.converterPriority||"normal"}),o.on("reduceChanges",A(t),{priority:"low"})}}(e))}attributeToElement(e){return this.add(function(e){let t=(e=(0,d.Z)(e)).model;"string"==typeof t&&(t={key:t});let s=`attribute:${t.key}`;t.name&&(s+=":"+t.name);if(t.values)for(const s of t.values)e.view[s]=Z(e.view[s],"attribute");else e.view=Z(e.view,"attribute");const o=P(e);return t=>{t.on(s,function(e){return(t,s,o)=>{if(!o.consumable.test(s.item,t.name))return;const n=e(s.attributeOldValue,o,s),a=e(s.attributeNewValue,o,s);if(!n&&!a)return;o.consumable.consume(s.item,t.name);const c=o.writer,l=c.document.selection;if(s.item instanceof i.Z||s.item instanceof r.Z)c.wrap(l.getFirstRange(),a);else{let e=o.mapper.toViewRange(s.range);null!==s.attributeOldValue&&n&&(e=c.unwrap(e,n)),null!==s.attributeNewValue&&a&&c.wrap(e,a)}}}(o),{priority:e.converterPriority||"normal"})}}(e))}attributeToAttribute(e){return this.add(function(e){let t=(e=(0,d.Z)(e)).model;"string"==typeof t&&(t={key:t});let s=`attribute:${t.key}`;t.name&&(s+=":"+t.name);if(t.values)for(const s of t.values)e.view[s]=x(e.view[s]);else e.view=x(e.view);const o=P(e);return t=>{var i;t.on(s,(i=o,(e,t,s)=>{if(!s.consumable.test(t.item,e.name))return;const o=i(t.attributeOldValue,s,t),r=i(t.attributeNewValue,s,t);if(!o&&!r)return;s.consumable.consume(t.item,e.name);const n=s.mapper.toViewElement(t.item),a=s.writer;if(!n)throw new h.ZP("conversion-attribute-to-attribute-on-text",s.dispatcher,t);if(null!==t.attributeOldValue&&o)if("class"==o.key){const e=(0,u.Z)(o.value);for(const t of e)a.removeClass(t,n)}else if("style"==o.key){const e=Object.keys(o.value);for(const t of e)a.removeStyle(t,n)}else a.removeAttribute(o.key,n);if(null!==t.attributeNewValue&&r)if("class"==r.key){const e=(0,u.Z)(r.value);for(const t of e)a.addClass(t,n)}else if("style"==r.key){const e=Object.keys(r.value);for(const t of e)a.setStyle(t,r.value[t],n)}else a.setAttribute(r.key,r.value,n)}),{priority:e.converterPriority||"normal"})}}(e))}markerToElement(e){return this.add(function(e){const t=Z(e.view,"ui");return s=>{var o;s.on(`addMarker:${e.model}`,(o=t,(e,t,s)=>{t.isOpening=!0;const i=o(t,s);t.isOpening=!1;const r=o(t,s);if(!i||!r)return;const n=t.markerRange;if(n.isCollapsed&&!s.consumable.consume(n,e.name))return;for(const t of n)if(!s.consumable.consume(t.item,e.name))return;const a=s.mapper,c=s.writer;c.insert(a.toViewPosition(n.start),i),s.mapper.bindElementToMarker(i,t.markerName),n.isCollapsed||(c.insert(a.toViewPosition(n.end),r),s.mapper.bindElementToMarker(r,t.markerName)),e.stop()}),{priority:e.converterPriority||"normal"}),s.on(`removeMarker:${e.model}`,((e,t,s)=>{const o=s.mapper.markerNameToElements(t.markerName);if(o){for(const e of o)s.mapper.unbindElementFromMarkerName(e,t.markerName),s.writer.clear(s.writer.createRangeOn(e),e);s.writer.clearClonedElementsGroup(t.markerName),e.stop()}}),{priority:e.converterPriority||"normal"})}}(e))}markerToHighlight(e){return this.add(function(e){return t=>{var s;t.on(`addMarker:${e.model}`,(s=e.view,(e,t,o)=>{if(!t.item)return;if(!(t.item instanceof i.Z||t.item instanceof r.Z||t.item.is("$textProxy")))return;const n=T(s,t,o);if(!n)return;if(!o.consumable.consume(t.item,e.name))return;const a=o.writer,c=k(a,n),l=a.document.selection;if(t.item instanceof i.Z||t.item instanceof r.Z)a.wrap(l.getFirstRange(),c);else{const e=o.mapper.toViewRange(t.range),s=a.wrap(e,c);for(const e of s.getItems())if(e.is("attributeElement")&&e.isSimilar(c)){o.mapper.bindElementToMarker(e,t.markerName);break}}}),{priority:e.converterPriority||"normal"}),t.on(`addMarker:${e.model}`,function(e){return(t,s,i)=>{if(!s.item)return;if(!(s.item instanceof n.Z))return;const r=T(e,s,i);if(!r)return;if(!i.consumable.test(s.item,t.name))return;const a=i.mapper.toViewElement(s.item);if(a&&a.getCustomProperty("addHighlight")){i.consumable.consume(s.item,t.name);for(const e of o.Z._createIn(s.item))i.consumable.consume(e.item,t.name);a.getCustomProperty("addHighlight")(a,r,i.writer),i.mapper.bindElementToMarker(a,s.markerName)}}}(e.view),{priority:e.converterPriority||"normal"}),t.on(`removeMarker:${e.model}`,function(e){return(t,s,o)=>{if(s.markerRange.isCollapsed)return;const i=T(e,s,o);if(!i)return;const r=k(o.writer,i),n=o.mapper.markerNameToElements(s.markerName);if(n){for(const e of n)if(o.mapper.unbindElementFromMarkerName(e,s.markerName),e.is("attributeElement"))o.writer.unwrap(o.writer.createRangeOn(e),r);else{e.getCustomProperty("removeHighlight")(e,i.id,o.writer)}o.writer.clearClonedElementsGroup(s.markerName),t.stop()}}}(e.view),{priority:e.converterPriority||"normal"})}}(e))}markerToData(e){return this.add(function(e){const t=(e=(0,d.Z)(e)).model;let s=e.view;s||(s=s=>({group:t,name:s.substr(e.model.length+1)}));return o=>{var i;o.on(`addMarker:${t}`,(i=s,(e,t,s)=>{const o=i(t.markerName,s);if(!o)return;const r=t.markerRange;s.consumable.consume(r,e.name)&&(v(r,!1,s,t,o),v(r,!0,s,t,o),e.stop())}),{priority:e.converterPriority||"normal"}),o.on(`removeMarker:${t}`,function(e){return(t,s,o)=>{const i=e(s.markerName,o);if(!i)return;const r=o.mapper.markerNameToElements(s.markerName);if(r){for(const e of r)o.mapper.unbindElementFromMarkerName(e,s.markerName),e.is("containerElement")?(n(`data-${i.group}-start-before`,e),n(`data-${i.group}-start-after`,e),n(`data-${i.group}-end-before`,e),n(`data-${i.group}-end-after`,e)):o.writer.clear(o.writer.createRangeOn(e),e);o.writer.clearClonedElementsGroup(s.markerName),t.stop()}function n(e,t){if(t.hasAttribute(e)){const s=new Set(t.getAttribute(e).split(","));s.delete(i.name),0==s.size?o.writer.removeAttribute(e,t):o.writer.setAttribute(e,Array.from(s).join(","),t)}}}}(s),{priority:e.converterPriority||"normal"})}}(e))}}function g(){return(e,t,s)=>{if(!s.consumable.consume(t.item,e.name))return;const o=s.writer,i=s.mapper.toViewPosition(t.range.start),r=o.createText(t.item.data);o.insert(i,r)}}function f(){return(e,t,s)=>{s.convertAttributes(t.item),t.reconversion||!t.item.is("element")||t.item.isEmpty||s.convertChildren(t.item)}}function m(){return(e,t,s)=>{const o=s.mapper.toViewPosition(t.position),i=t.position.getShiftedBy(t.length),r=s.mapper.toViewPosition(i,{isPhantom:!0}),n=s.writer.createRange(o,r),a=s.writer.remove(n.getTrimmed());for(const e of s.writer.createRangeIn(a).getItems())s.mapper.unbindViewElement(e,{defer:!0})}}function k(e,t){const s=e.createAttributeElement("span",t.attributes);return t.classes&&s._addClass(t.classes),"number"==typeof t.priority&&(s._priority=t.priority),s._id=t.id,s}function b(){return(e,t,s)=>{const o=t.selection;if(o.isCollapsed)return;if(!s.consumable.consume(o,"selection"))return;const i=[];for(const e of o.getRanges())i.push(s.mapper.toViewRange(e));s.writer.setSelection(i,{backward:o.isBackward})}}function _(){return(e,t,s)=>{const o=t.selection;if(!o.isCollapsed)return;if(!s.consumable.consume(o,"selection"))return;const i=s.writer,r=o.getFirstPosition(),n=s.mapper.toViewPosition(r),a=i.breakAttributes(n);i.setSelection(a)}}function w(){return(e,t,s)=>{const o=s.writer,i=o.document.selection;for(const e of i.getRanges())e.isCollapsed&&e.end.parent.isAttached()&&s.writer.mergeAttributes(e.start);o.setSelection(null)}}function v(e,t,s,o,i){const r=t?e.start:e.end,n=r.nodeAfter&&r.nodeAfter.is("element")?r.nodeAfter:null,a=r.nodeBefore&&r.nodeBefore.is("element")?r.nodeBefore:null;if(n||a){let e,r;t&&n||!t&&!a?(e=n,r=!0):(e=a,r=!1);const c=s.mapper.toViewElement(e);if(c)return void function(e,t,s,o,i,r){const n=`data-${r.group}-${t?"start":"end"}-${s?"before":"after"}`,a=e.hasAttribute(n)?e.getAttribute(n).split(","):[];a.unshift(r.name),o.writer.setAttribute(n,a.join(","),e),o.mapper.bindElementToMarker(e,i.markerName)}(c,t,r,s,o,i)}!function(e,t,s,o,i){const r=`${i.group}-${t?"start":"end"}`,n=i.name?{name:i.name}:null,a=s.writer.createUIElement(r,n);s.writer.insert(e,a),s.mapper.bindElementToMarker(a,o.markerName)}(s.mapper.toViewPosition(r),t,s,o,i)}function y(e){return"string"==typeof e&&(e={name:e}),e.attributes?Array.isArray(e.attributes)||(e.attributes=[e.attributes]):e.attributes=[],e.children=!!e.children,e}function Z(e,t){return"function"==typeof e?e:(s,o)=>function(e,t,s){"string"==typeof e&&(e={name:e});let o;const i=t.writer,r=Object.assign({},e.attributes);if("container"==s)o=i.createContainerElement(e.name,r);else if("attribute"==s){const t={priority:e.priority||c.Z.DEFAULT_PRIORITY};o=i.createAttributeElement(e.name,r,t)}else o=i.createUIElement(e.name,r);if(e.styles){const t=Object.keys(e.styles);for(const s of t)i.setStyle(s,e.styles[s],o)}if(e.classes){const t=e.classes;if("string"==typeof t)i.addClass(t,o);else for(const e of t)i.addClass(e,o)}return o}(e,o,t)}function P(e){return e.model.values?(t,s,o)=>{const i=e.view[t];return i?i(t,s,o):null}:e.view}function x(e){return"string"==typeof e?t=>({key:e,value:t}):"object"==typeof e?e.value?()=>e:t=>({key:e.key,value:t}):e}function T(e,t,s){const o="function"==typeof e?e(t,s):e;return o?(o.priority||(o.priority=10),o.id||(o.id=t.markerName),o):null}function A(e){const t=function(e){return(t,s)=>{if(!t.is("element",e.name))return!1;if("attribute"==s.type){if(e.attributes.includes(s.attributeKey))return!0}else if(e.children)return!0;return!1}}(e);return(e,s)=>{const o=[];s.reconvertedElements||(s.reconvertedElements=new Set);for(const e of s.changes){const i="attribute"==e.type?e.range.start.nodeAfter:e.position.parent;if(i&&t(i,e)){if(!s.reconvertedElements.has(i)){s.reconvertedElements.add(i);const e=a.ZP._createBefore(i);o.push({type:"remove",name:i.name,position:e,length:1},{type:"reinsert",name:i.name,position:e,length:1})}}else o.push(e)}s.changes=o}}function C(e){return(t,s,o={})=>{const i=["insert"];for(const s of e.attributes)t.hasAttribute(s)&&i.push(`attribute:${s}`);return!!i.every((e=>s.test(t,e)))&&(o.preflight||i.forEach((e=>s.consume(t,e))),!0)}}function E(e,t,s,o){for(const i of t)S(e.root,i,s,o)||s.convertItem(i)}function S(e,t,s,o){const{writer:i,mapper:r}=s;if(!o.reconversion)return!1;const n=r.toViewElement(t);return!(!n||n.root==e)&&(!!s.canReuseView(n)&&(i.move(i.createRangeOn(n),r.toViewPosition(a.ZP._createBefore(t))),!0))}function j(e,t,{preflight:s}={}){return s?t.test(e,"insert"):t.consume(e,"insert")}},"./packages/ckeditor5-engine/src/conversion/mapper.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});var o=s("./packages/ckeditor5-engine/src/model/position.ts"),i=s("./packages/ckeditor5-engine/src/model/range.ts"),r=s("./packages/ckeditor5-engine/src/view/position.ts"),n=s("./packages/ckeditor5-engine/src/view/range.ts"),a=s("./packages/ckeditor5-engine/src/view/text.ts"),c=s("./packages/ckeditor5-utils/src/emittermixin.ts"),l=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class d extends c.Q5{constructor(){super(),this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._viewToModelLengthCallbacks=new Map,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._deferredBindingRemovals=new Map,this._unboundMarkerNames=new Set,this.on("modelToViewPosition",((e,t)=>{if(t.viewPosition)return;const s=this._modelToViewMapping.get(t.modelPosition.parent);if(!s)throw new l.ZP("mapping-model-position-view-parent-not-found",this,{modelPosition:t.modelPosition});t.viewPosition=this.findPositionIn(s,t.modelPosition.offset)}),{priority:"low"}),this.on("viewToModelPosition",((e,t)=>{if(t.modelPosition)return;const s=this.findMappedViewAncestor(t.viewPosition),i=this._viewToModelMapping.get(s),r=this._toModelOffset(t.viewPosition.parent,t.viewPosition.offset,s);t.modelPosition=o.ZP._createAt(i,r)}),{priority:"low"})}bindElements(e,t){this._modelToViewMapping.set(e,t),this._viewToModelMapping.set(t,e)}unbindViewElement(e,t={}){const s=this.toModelElement(e);if(this._elementToMarkerNames.has(e))for(const t of this._elementToMarkerNames.get(e))this._unboundMarkerNames.add(t);t.defer?this._deferredBindingRemovals.set(e,e.root):(this._viewToModelMapping.delete(e),this._modelToViewMapping.get(s)==e&&this._modelToViewMapping.delete(s))}unbindModelElement(e){const t=this.toViewElement(e);this._modelToViewMapping.delete(e),this._viewToModelMapping.get(t)==e&&this._viewToModelMapping.delete(t)}bindElementToMarker(e,t){const s=this._markerNameToElements.get(t)||new Set;s.add(e);const o=this._elementToMarkerNames.get(e)||new Set;o.add(t),this._markerNameToElements.set(t,s),this._elementToMarkerNames.set(e,o)}unbindElementFromMarkerName(e,t){const s=this._markerNameToElements.get(t);s&&(s.delete(e),0==s.size&&this._markerNameToElements.delete(t));const o=this._elementToMarkerNames.get(e);o&&(o.delete(t),0==o.size&&this._elementToMarkerNames.delete(e))}flushUnboundMarkerNames(){const e=Array.from(this._unboundMarkerNames);return this._unboundMarkerNames.clear(),e}flushDeferredBindings(){for(const[e,t]of this._deferredBindingRemovals)e.root==t&&this.unbindViewElement(e);this._deferredBindingRemovals=new Map}clearBindings(){this._modelToViewMapping=new WeakMap,this._viewToModelMapping=new WeakMap,this._markerNameToElements=new Map,this._elementToMarkerNames=new Map,this._unboundMarkerNames=new Set,this._deferredBindingRemovals=new Map}toModelElement(e){return this._viewToModelMapping.get(e)}toViewElement(e){return this._modelToViewMapping.get(e)}toModelRange(e){return new i.Z(this.toModelPosition(e.start),this.toModelPosition(e.end))}toViewRange(e){return new n.Z(this.toViewPosition(e.start),this.toViewPosition(e.end))}toModelPosition(e){const t={viewPosition:e,mapper:this};return this.fire("viewToModelPosition",t),t.modelPosition}toViewPosition(e,t={}){const s={modelPosition:e,mapper:this,isPhantom:t.isPhantom};return this.fire("modelToViewPosition",s),s.viewPosition}markerNameToElements(e){const t=this._markerNameToElements.get(e);if(!t)return null;const s=new Set;for(const e of t)if(e.is("attributeElement"))for(const t of e.getElementsWithSameId())s.add(t);else s.add(e);return s}registerViewToModelLength(e,t){this._viewToModelLengthCallbacks.set(e,t)}findMappedViewAncestor(e){let t=e.parent;for(;!this._viewToModelMapping.has(t);)t=t.parent;return t}_toModelOffset(e,t,s){if(s!=e){return this._toModelOffset(e.parent,e.index,s)+this._toModelOffset(e,t,e)}if(e.is("$text"))return t;let o=0;for(let s=0;s<t;s++)o+=this.getModelLength(e.getChild(s));return o}getModelLength(e){if(this._viewToModelLengthCallbacks.get(e.name)){return this._viewToModelLengthCallbacks.get(e.name)(e)}if(this._viewToModelMapping.has(e))return 1;if(e.is("$text"))return e.data.length;if(e.is("uiElement"))return 0;{let t=0;for(const s of e.getChildren())t+=this.getModelLength(s);return t}}findPositionIn(e,t){let s,o=0,i=0,n=0;if(e.is("$text"))return new r.Z(e,t);for(;i<t;)s=e.getChild(n),o=this.getModelLength(s),i+=o,n++;return i==t?this._moveViewPositionToTextNode(new r.Z(e,n)):this.findPositionIn(s,t-(i-o))}_moveViewPositionToTextNode(e){const t=e.nodeBefore,s=e.nodeAfter;return t instanceof a.Z?new r.Z(t,t.data.length):s instanceof a.Z?new r.Z(s,0):e}}},"./packages/ckeditor5-engine/src/conversion/upcasthelpers.ts":(e,t,s)=>{"use strict";s.d(t,{Fo:()=>h,ZP:()=>c,_p:()=>l,s8:()=>d});var o=s("./packages/ckeditor5-engine/src/view/matcher.ts"),i=s("./packages/ckeditor5-engine/src/conversion/conversionhelpers.ts"),r=s("./node_modules/lodash-es/cloneDeep.js"),n=s("./packages/ckeditor5-utils/src/priorities.ts"),a=s("./packages/ckeditor5-engine/src/model/utils/autoparagraphing.ts");class c extends i.Z{elementToElement(e){return this.add(u(e))}elementToAttribute(e){return this.add(function(e){f(e=(0,r.Z)(e));const t=m(e,!1),s=p(e.view),o=s?`element:${s}`:"element";return s=>{s.on(o,t,{priority:e.converterPriority||"low"})}}(e))}attributeToAttribute(e){return this.add(function(e){e=(0,r.Z)(e);let t=null;("string"==typeof e.view||e.view.key)&&(t=function(e){"string"==typeof e.view&&(e.view={key:e.view});const t=e.view.key;let s;if("class"==t||"style"==t){s={["class"==t?"classes":"styles"]:e.view.value}}else{s={attributes:{[t]:void 0===e.view.value?/[\s\S]*/:e.view.value}}}e.view.name&&(s.name=e.view.name);return e.view=s,t}(e));f(e,t);const s=m(e,!0);return t=>{t.on("element",s,{priority:e.converterPriority||"low"})}}(e))}elementToMarker(e){return this.add(function(e){const t=function(e){return(t,s)=>{const o="string"==typeof e?e:e(t,s);return s.writer.createElement("$marker",{"data-name":o})}}(e.model);return u({...e,model:t})}(e))}dataToMarker(e){return this.add(function(e){(e=(0,r.Z)(e)).model||(e.model=t=>t?e.view+":"+t:e.view);const t={view:e.view,model:e.model},s=g(k(t,"start")),o=g(k(t,"end"));return i=>{i.on(`element:${e.view}-start`,s,{priority:e.converterPriority||"normal"}),i.on(`element:${e.view}-end`,o,{priority:e.converterPriority||"normal"});const r=n.Z.get("low"),a=n.Z.get("highest"),c=n.Z.get(e.converterPriority)/a;i.on("element",function(e){return(t,s,o)=>{const i=`data-${e.view}`;function r(t,i){for(const r of i){const i=e.model(r,o),n=o.writer.createElement("$marker",{"data-name":i});o.writer.insert(n,t),s.modelCursor.isEqual(t)?s.modelCursor=s.modelCursor.getShiftedBy(1):s.modelCursor=s.modelCursor._getTransformedByInsertion(t,1),s.modelRange=s.modelRange._getTransformedByInsertion(t,1)[0]}}(o.consumable.test(s.viewItem,{attributes:i+"-end-after"})||o.consumable.test(s.viewItem,{attributes:i+"-start-after"})||o.consumable.test(s.viewItem,{attributes:i+"-end-before"})||o.consumable.test(s.viewItem,{attributes:i+"-start-before"}))&&(s.modelRange||Object.assign(s,o.convertChildren(s.viewItem,s.modelCursor)),o.consumable.consume(s.viewItem,{attributes:i+"-end-after"})&&r(s.modelRange.end,s.viewItem.getAttribute(i+"-end-after").split(",")),o.consumable.consume(s.viewItem,{attributes:i+"-start-after"})&&r(s.modelRange.end,s.viewItem.getAttribute(i+"-start-after").split(",")),o.consumable.consume(s.viewItem,{attributes:i+"-end-before"})&&r(s.modelRange.start,s.viewItem.getAttribute(i+"-end-before").split(",")),o.consumable.consume(s.viewItem,{attributes:i+"-start-before"})&&r(s.modelRange.start,s.viewItem.getAttribute(i+"-start-before").split(",")))}}(t),{priority:r+c})}}(e))}}function l(){return(e,t,s)=>{if(!t.modelRange&&s.consumable.consume(t.viewItem,{name:!0})){const{modelRange:e,modelCursor:o}=s.convertChildren(t.viewItem,t.modelCursor);t.modelRange=e,t.modelCursor=o}}}function d(){return(e,t,{schema:s,consumable:o,writer:i})=>{let r=t.modelCursor;if(!o.test(t.viewItem))return;if(!s.checkChild(r,"$text")){if(!(0,a.gg)(r,"$text",s))return;if(0==t.viewItem.data.trim().length)return;r=(0,a.zX)(r,i)}o.consume(t.viewItem);const n=i.createText(t.viewItem.data);i.insert(n,r),t.modelRange=i.createRange(r,r.getShiftedBy(n.offsetSize)),t.modelCursor=t.modelRange.end}}function h(e,t){return(s,o)=>{const i=o.newSelection,r=[];for(const e of i.getRanges())r.push(t.toModelRange(e));const n=e.createSelection(r,{backward:i.isBackward});n.isEqual(e.document.selection)||e.change((e=>{e.setSelection(n)}))}}function u(e){const t=g(e=(0,r.Z)(e)),s=p(e.view),o=s?`element:${s}`:"element";return s=>{s.on(o,t,{priority:e.converterPriority||"normal"})}}function p(e){return"string"==typeof e?e:"object"==typeof e&&"string"==typeof e.name?e.name:null}function g(e){const t=new o.Z(e.view);return(s,o,i)=>{const r=t.match(o.viewItem);if(!r)return;const n=r.match;if(n.name=!0,!i.consumable.test(o.viewItem,n))return;const a=function(e,t,s){return e instanceof Function?e(t,s):s.writer.createElement(e)}(e.model,o.viewItem,i);a&&i.safeInsert(a,o.modelCursor)&&(i.consumable.consume(o.viewItem,n),i.convertChildren(o.viewItem,a),i.updateConversionResult(a,o))}}function f(e,t=null){const s=null===t||(e=>e.getAttribute(t)),o="object"!=typeof e.model?e.model:e.model.key,i="object"!=typeof e.model||void 0===e.model.value?s:e.model.value;e.model={key:o,value:i}}function m(e,t){const s=new o.Z(e.view);return(o,i,r)=>{if(!i.modelRange&&t)return;const n=s.match(i.viewItem);if(!n)return;if(!function(e,t){const s="function"==typeof e?e(t):e;if("object"==typeof s&&!p(s))return!1;return!s.classes&&!s.attributes&&!s.styles}(e.view,i.viewItem)?delete n.match.name:n.match.name=!0,!r.consumable.test(i.viewItem,n.match))return;const a=e.model.key,c="function"==typeof e.model.value?e.model.value(i.viewItem,r):e.model.value;if(null===c)return;i.modelRange||Object.assign(i,r.convertChildren(i.viewItem,i.modelCursor));const l=function(e,t,s,o){let i=!1;for(const r of Array.from(e.getItems({shallow:s})))o.schema.checkAttribute(r,t.key)&&(i=!0,r.hasAttribute(t.key)||o.writer.setAttribute(t.key,t.value,r));return i}(i.modelRange,{key:a,value:c},t,r);l&&(r.consumable.test(i.viewItem,{name:!0})&&(n.match.name=!0),r.consumable.consume(i.viewItem,n.match))}}function k(e,t){return{view:`${e.view}-${t}`,model:(t,s)=>{const o=t.getAttribute("name"),i=e.model(o,s);return s.writer.createElement("$marker",{"data-name":i})}}}},"./packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});class o{getHtml(e){const t=document.implementation.createHTMLDocument("").createElement("div");return t.appendChild(e),t.innerHTML}}var i=s("./packages/ckeditor5-engine/src/view/domconverter.ts");class r{constructor(e){this.domParser=new DOMParser,this.domConverter=new i.Z(e,{renderingMode:"data"}),this.htmlWriter=new o}toData(e){const t=this.domConverter.viewToDom(e);return this.htmlWriter.getHtml(t)}toView(e){const t=this._toDom(e);return this.domConverter.domToView(t)}registerRawContentMatcher(e){this.domConverter.registerRawContentMatcher(e)}useFillerType(e){this.domConverter.blockFillerMode="marked"==e?"markedNbsp":"nbsp"}_toDom(e){e.match(/<(?:html|body|head|meta)(?:\s[^>]*)?>/i)||(e=`<body>${e}</body>`);const t=this.domParser.parseFromString(e,"text/html"),s=t.createDocumentFragment(),o=t.body.childNodes;for(;o.length>0;)s.appendChild(o[0]);return s}}},"./packages/ckeditor5-engine/src/model/documentfragment.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/model/element.ts"),r=s("./packages/ckeditor5-engine/src/model/nodelist.ts"),n=s("./packages/ckeditor5-engine/src/model/text.ts"),a=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),c=s("./packages/ckeditor5-utils/src/isiterable.ts");class l extends o.Z{constructor(e){super(),this.markers=new Map,this._children=new r.Z,e&&this._insertChild(0,e)}[Symbol.iterator](){return this.getChildren()}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}get nextSibling(){return null}get previousSibling(){return null}get root(){return this}get parent(){return null}get document(){return null}getAncestors(){return[]}getChild(e){return this._children.getNode(e)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(e){return this._children.getNodeIndex(e)}getChildStartOffset(e){return this._children.getNodeStartOffset(e)}getPath(){return[]}getNodeByPath(e){let t=this;for(const s of e)t=t.getChild(t.offsetToIndex(s));return t}offsetToIndex(e){return this._children.offsetToIndex(e)}toJSON(){const e=[];for(const t of this._children)e.push(t.toJSON());return e}static fromJSON(e){const t=[];for(const s of e)s.name?t.push(i.Z.fromJSON(s)):t.push(n.Z.fromJSON(s));return new l(t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const s=function(e){if("string"==typeof e)return[new n.Z(e)];(0,c.Z)(e)||(e=[e]);return Array.from(e).map((e=>"string"==typeof e?new n.Z(e):e instanceof a.Z?new n.Z(e.data,e.getAttributes()):e))}(t);for(const e of s)null!==e.parent&&e._remove(),e.parent=this;this._children._insertNodes(e,s)}_removeChildren(e,t=1){const s=this._children._removeNodes(e,t);for(const e of s)e.parent=null;return s}}l.prototype.is=function(e){return"documentFragment"===e||"model:documentFragment"===e}},"./packages/ckeditor5-engine/src/model/documentselection.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>g});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/model/liverange.ts"),r=s("./packages/ckeditor5-engine/src/model/selection.ts"),n=s("./packages/ckeditor5-engine/src/model/text.ts"),a=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),l=s("./packages/ckeditor5-utils/src/collection.ts"),d=s("./packages/ckeditor5-utils/src/emittermixin.ts"),h=s("./packages/ckeditor5-utils/src/tomap.ts"),u=s("./packages/ckeditor5-utils/src/uid.ts");const p="selection:";class g extends((0,d.ZP)(o.Z)){constructor(e){super(),this._selection=new f(e),this._selection.delegate("change:range").to(this),this._selection.delegate("change:attribute").to(this),this._selection.delegate("change:marker").to(this)}get isCollapsed(){return this._selection.isCollapsed}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get rangeCount(){return this._selection.rangeCount}get hasOwnRange(){return this._selection.hasOwnRange}get isBackward(){return this._selection.isBackward}get isGravityOverridden(){return this._selection.isGravityOverridden}get markers(){return this._selection.markers}get _ranges(){return this._selection._ranges}getRanges(){return this._selection.getRanges()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getSelectedBlocks(){return this._selection.getSelectedBlocks()}getSelectedElement(){return this._selection.getSelectedElement()}containsEntireContent(e){return this._selection.containsEntireContent(e)}destroy(){this._selection.destroy()}getAttributeKeys(){return this._selection.getAttributeKeys()}getAttributes(){return this._selection.getAttributes()}getAttribute(e){return this._selection.getAttribute(e)}hasAttribute(e){return this._selection.hasAttribute(e)}refresh(){this._selection.updateMarkers(),this._selection._updateAttributes(!1)}observeMarkers(e){this._selection.observeMarkers(e)}_setFocus(e,t){this._selection.setFocus(e,t)}_setTo(...e){this._selection.setTo(...e)}_setAttribute(e,t){this._selection.setAttribute(e,t)}_removeAttribute(e){this._selection.removeAttribute(e)}_getStoredAttributes(){return this._selection.getStoredAttributes()}_overrideGravity(){return this._selection.overrideGravity()}_restoreGravity(e){this._selection.restoreGravity(e)}static _getStoreAttributeKey(e){return p+e}static _isStoreAttributeKey(e){return e.startsWith(p)}}g.prototype.is=function(e){return"selection"===e||"model:selection"==e||"documentSelection"==e||"model:documentSelection"==e};class f extends r.Z{constructor(e){super(),this.markers=new l.Z({idProperty:"name"}),this._model=e.model,this._document=e,this._attributePriority=new Map,this._selectionRestorePosition=null,this._hasChangedRange=!1,this._overriddenGravityRegister=new Set,this._observedMarkers=new Set,this.listenTo(this._model,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&"marker"!=s.type&&"rename"!=s.type&&"noop"!=s.type&&(0==this._ranges.length&&this._selectionRestorePosition&&this._fixGraveyardSelection(this._selectionRestorePosition),this._selectionRestorePosition=null,this._hasChangedRange&&(this._hasChangedRange=!1,this.fire("change:range",{directChange:!1})))}),{priority:"lowest"}),this.on("change:range",(()=>{this._validateSelectionRanges(this.getRanges())})),this.listenTo(this._model.markers,"update",((e,t,s,o)=>{this._updateMarker(t,o)})),this.listenTo(this._document,"change",((e,t)=>{!function(e,t){const s=e.document.differ;for(const o of s.getChanges()){if("insert"!=o.type)continue;const s=o.position.parent;o.length===s.maxOffset&&e.enqueueChange(t,(e=>{const t=Array.from(s.getAttributeKeys()).filter((e=>e.startsWith(p)));for(const o of t)e.removeAttribute(o,s)}))}}(this._model,t)}))}get isCollapsed(){return 0===this._ranges.length?this._document._getDefaultRange().isCollapsed:super.isCollapsed}get anchor(){return super.anchor||this._document._getDefaultRange().start}get focus(){return super.focus||this._document._getDefaultRange().end}get rangeCount(){return this._ranges.length?this._ranges.length:1}get hasOwnRange(){return this._ranges.length>0}get isGravityOverridden(){return!!this._overriddenGravityRegister.size}destroy(){for(let e=0;e<this._ranges.length;e++)this._ranges[e].detach();this.stopListening()}*getRanges(){this._ranges.length?yield*super.getRanges():yield this._document._getDefaultRange()}getFirstRange(){return super.getFirstRange()||this._document._getDefaultRange()}getLastRange(){return super.getLastRange()||this._document._getDefaultRange()}setTo(...e){super.setTo(...e),this._updateAttributes(!0),this.updateMarkers()}setFocus(e,t){super.setFocus(e,t),this._updateAttributes(!0),this.updateMarkers()}setAttribute(e,t){if(this._setAttribute(e,t)){const t=[e];this.fire("change:attribute",{attributeKeys:t,directChange:!0})}}removeAttribute(e){if(this._removeAttribute(e)){const t=[e];this.fire("change:attribute",{attributeKeys:t,directChange:!0})}}overrideGravity(){const e=(0,u.Z)();return this._overriddenGravityRegister.add(e),1===this._overriddenGravityRegister.size&&this._updateAttributes(!0),e}restoreGravity(e){if(!this._overriddenGravityRegister.has(e))throw new c.ZP("document-selection-gravity-wrong-restore",this,{uid:e});this._overriddenGravityRegister.delete(e),this.isGravityOverridden||this._updateAttributes(!0)}observeMarkers(e){this._observedMarkers.add(e),this.updateMarkers()}_replaceAllRanges(e){this._validateSelectionRanges(e),super._replaceAllRanges(e)}_popRange(){this._ranges.pop().detach()}_pushRange(e){const t=this._prepareRange(e);t&&this._ranges.push(t)}_validateSelectionRanges(e){for(const t of e)if(!this._document._validateSelectionRange(t))throw new c.ZP("document-selection-wrong-position",this,{range:t})}_prepareRange(e){if(this._checkRange(e),e.root==this._document.graveyard)return;const t=i.Z.fromRange(e);return t.on("change:range",((e,s,o)=>{if(this._hasChangedRange=!0,t.root==this._document.graveyard){this._selectionRestorePosition=o.deletionPosition;const e=this._ranges.indexOf(t);this._ranges.splice(e,1),t.detach()}})),t}updateMarkers(){if(!this._observedMarkers.size)return;const e=[];let t=!1;for(const t of this._model.markers){const s=t.name.split(":",1)[0];if(!this._observedMarkers.has(s))continue;const o=t.getRange();for(const s of this.getRanges())o.containsRange(s,!s.isCollapsed)&&e.push(t)}const s=Array.from(this.markers);for(const s of e)this.markers.has(s)||(this.markers.add(s),t=!0);for(const s of Array.from(this.markers))e.includes(s)||(this.markers.remove(s),t=!0);t&&this.fire("change:marker",{oldMarkers:s,directChange:!1})}_updateMarker(e,t){const s=e.name.split(":",1)[0];if(!this._observedMarkers.has(s))return;let o=!1;const i=Array.from(this.markers),r=this.markers.has(e);if(t){let s=!1;for(const e of this.getRanges())if(t.containsRange(e,!e.isCollapsed)){s=!0;break}s&&!r?(this.markers.add(e),o=!0):!s&&r&&(this.markers.remove(e),o=!0)}else r&&(this.markers.remove(e),o=!0);o&&this.fire("change:marker",{oldMarkers:i,directChange:!1})}_updateAttributes(e){const t=(0,h.Z)(this._getSurroundingAttributes()),s=(0,h.Z)(this.getAttributes());if(e)this._attributePriority=new Map,this._attrs=new Map;else for(const[e,t]of this._attributePriority)"low"==t&&(this._attrs.delete(e),this._attributePriority.delete(e));this._setAttributesTo(t);const o=[];for(const[e,t]of this.getAttributes())s.has(e)&&s.get(e)===t||o.push(e);for(const[e]of s)this.hasAttribute(e)||o.push(e);o.length>0&&this.fire("change:attribute",{attributeKeys:o,directChange:!1})}_setAttribute(e,t,s=!0){const o=s?"normal":"low";if("low"==o&&"normal"==this._attributePriority.get(e))return!1;return super.getAttribute(e)!==t&&(this._attrs.set(e,t),this._attributePriority.set(e,o),!0)}_removeAttribute(e,t=!0){const s=t?"normal":"low";return("low"!=s||"normal"!=this._attributePriority.get(e))&&(this._attributePriority.set(e,s),!!super.hasAttribute(e)&&(this._attrs.delete(e),!0))}_setAttributesTo(e){const t=new Set;for(const[t,s]of this.getAttributes())e.get(t)!==s&&this._removeAttribute(t,!1);for(const[s,o]of e){this._setAttribute(s,o,!1)&&t.add(s)}return t}*getStoredAttributes(){const e=this.getFirstPosition().parent;if(this.isCollapsed&&e.isEmpty)for(const t of e.getAttributeKeys())if(t.startsWith(p)){const s=t.substr(p.length);yield[s,e.getAttribute(t)]}}_getSurroundingAttributes(){const e=this.getFirstPosition(),t=this._model.schema;let s=null;if(this.isCollapsed){const o=e.textNode?e.textNode:e.nodeBefore,i=e.textNode?e.textNode:e.nodeAfter;if(this.isGravityOverridden||(s=m(o)),s||(s=m(i)),!this.isGravityOverridden&&!s){let e=o;for(;e&&!t.isInline(e)&&!s;)e=e.previousSibling,s=m(e)}if(!s){let e=i;for(;e&&!t.isInline(e)&&!s;)e=e.nextSibling,s=m(e)}s||(s=this.getStoredAttributes())}else{const e=this.getFirstRange();for(const o of e){if(o.item.is("element")&&t.isObject(o.item))break;if("text"==o.type){s=o.item.getAttributes();break}}}return s}_fixGraveyardSelection(e){const t=this._model.schema.getNearestSelectionRange(e);t&&this._pushRange(t)}}function m(e){return e instanceof a.Z||e instanceof n.Z?e.getAttributes():null}},"./packages/ckeditor5-engine/src/model/element.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/model/node.ts"),i=s("./packages/ckeditor5-engine/src/model/nodelist.ts"),r=s("./packages/ckeditor5-engine/src/model/text.ts"),n=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),a=s("./packages/ckeditor5-utils/src/isiterable.ts");class c extends o.Z{constructor(e,t,s){super(t),this.name=e,this._children=new i.Z,s&&this._insertChild(0,s)}get childCount(){return this._children.length}get maxOffset(){return this._children.maxOffset}get isEmpty(){return 0===this.childCount}getChild(e){return this._children.getNode(e)}getChildren(){return this._children[Symbol.iterator]()}getChildIndex(e){return this._children.getNodeIndex(e)}getChildStartOffset(e){return this._children.getNodeStartOffset(e)}offsetToIndex(e){return this._children.offsetToIndex(e)}getNodeByPath(e){let t=this;for(const s of e)t=t.getChild(t.offsetToIndex(s));return t}findAncestor(e,t={}){let s=t.includeSelf?this:this.parent;for(;s;){if(s.name===e)return s;s=s.parent}return null}toJSON(){const e=super.toJSON();if(e.name=this.name,this._children.length>0){e.children=[];for(const t of this._children)e.children.push(t.toJSON())}return e}_clone(e=!1){const t=e?Array.from(this._children).map((e=>e._clone(!0))):void 0;return new c(this.name,this.getAttributes(),t)}_appendChild(e){this._insertChild(this.childCount,e)}_insertChild(e,t){const s=function(e){if("string"==typeof e)return[new r.Z(e)];(0,a.Z)(e)||(e=[e]);return Array.from(e).map((e=>"string"==typeof e?new r.Z(e):e instanceof n.Z?new r.Z(e.data,e.getAttributes()):e))}(t);for(const e of s)null!==e.parent&&e._remove(),e.parent=this;this._children._insertNodes(e,s)}_removeChildren(e,t=1){const s=this._children._removeNodes(e,t);for(const e of s)e.parent=null;return s}static fromJSON(e){let t;if(e.children){t=[];for(const s of e.children)s.name?t.push(c.fromJSON(s)):t.push(r.Z.fromJSON(s))}return new c(e.name,e.attributes,t)}}c.prototype.is=function(e,t){return t?t===this.name&&("element"===e||"model:element"===e):"element"===e||"model:element"===e||"node"===e||"model:node"===e}},"./packages/ckeditor5-engine/src/model/history.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/index.ts");class i{constructor(){this._operations=[],this._undoPairs=new Map,this._undoneOperations=new Set,this._baseVersionToOperationIndex=new Map,this._version=0,this._gaps=new Map}get version(){return this._version}set version(e){this._operations.length&&e>this._version+1&&this._gaps.set(this._version,e),this._version=e}get lastOperation(){return this._operations[this._operations.length-1]}addOperation(e){if(e.baseVersion!==this.version)throw new o.Bb("model-document-history-addoperation-incorrect-version",this,{operation:e,historyVersion:this.version});this._operations.push(e),this._version++,this._baseVersionToOperationIndex.set(e.baseVersion,this._operations.length-1)}getOperations(e,t=this.version){if(!this._operations.length)return[];const s=this._operations[0];void 0===e&&(e=s.baseVersion);let o=t-1;for(const[t,s]of this._gaps)e>t&&e<s&&(e=s),o>t&&o<s&&(o=t-1);if(o<s.baseVersion||e>this.lastOperation.baseVersion)return[];let i=this._baseVersionToOperationIndex.get(e);void 0===i&&(i=0);let r=this._baseVersionToOperationIndex.get(o);return void 0===r&&(r=this._operations.length-1),this._operations.slice(i,r+1)}getOperation(e){const t=this._baseVersionToOperationIndex.get(e);if(void 0!==t)return this._operations[t]}setOperationAsUndone(e,t){this._undoPairs.set(t,e),this._undoneOperations.add(e)}isUndoingOperation(e){return this._undoPairs.has(e)}isUndoneOperation(e){return this._undoneOperations.has(e)}getUndoneOperation(e){return this._undoPairs.get(e)}reset(){this._version=0,this._undoPairs=new Map,this._operations=[],this._undoneOperations=new Set,this._gaps=new Map,this._baseVersionToOperationIndex=new Map}}},"./packages/ckeditor5-engine/src/model/liveposition.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/model/position.ts"),i=s("./packages/ckeditor5-utils/src/emittermixin.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class n extends((0,i.ZP)(o.ZP)){constructor(e,t,s="toNone"){if(super(e,t,s),!this.root.is("rootElement"))throw new r.ZP("model-liveposition-root-not-rootelement",e);a.call(this)}detach(){this.stopListening()}toPosition(){return new o.ZP(this.root,this.path.slice(),this.stickiness)}static fromPosition(e,t){return new this(e.root,e.path.slice(),t||e.stickiness)}}function a(){this.listenTo(this.root.document.model,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&c.call(this,s)}),{priority:"low"})}function c(e){const t=this.getTransformedByOperation(e);if(!this.isEqual(t)){const e=this.toPosition();this.path=t.path,this.root=t.root,this.fire("change",e)}}n.prototype.is=function(e){return"livePosition"===e||"model:livePosition"===e||"position"==e||"model:position"===e}},"./packages/ckeditor5-engine/src/model/liverange.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/range.ts"),i=s("./packages/ckeditor5-utils/src/emittermixin.ts");class r extends((0,i.ZP)(o.Z)){constructor(e,t){super(e,t),n.call(this)}detach(){this.stopListening()}toRange(){return new o.Z(this.start,this.end)}static fromRange(e){return new r(e.start,e.end)}}function n(){this.listenTo(this.root.document.model,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&a.call(this,s)}),{priority:"low"})}function a(e){const t=this.getTransformedByOperation(e),s=o.Z._createFromRanges(t),i=!s.isEqual(this),r=function(e,t){switch(t.type){case"insert":return e.containsPosition(t.position);case"move":case"remove":case"reinsert":case"merge":return e.containsPosition(t.sourcePosition)||e.start.isEqual(t.sourcePosition)||e.containsPosition(t.targetPosition);case"split":return e.containsPosition(t.splitPosition)||e.containsPosition(t.insertionPosition)}return!1}(this,e);let n=null;if(i){"$graveyard"==s.root.rootName&&(n="remove"==e.type?e.sourcePosition:e.deletionPosition);const t=this.toRange();this.start=s.start,this.end=s.end,this.fire("change:range",t,{deletionPosition:n})}else r&&this.fire("change:content",this.toRange(),{deletionPosition:n})}r.prototype.is=function(e){return"liveRange"===e||"model:liveRange"===e||"range"==e||"model:range"===e}},"./packages/ckeditor5-engine/src/model/model.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>ye});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class i{constructor(e={}){"string"==typeof e&&(e="transparent"===e?{isUndoable:!1}:{},(0,o.KE)("batch-constructor-deprecated-string-type"));const{isUndoable:t=!0,isLocal:s=!0,isUndo:i=!1,isTyping:r=!1}=e;this.operations=[],this.isUndoable=t,this.isLocal=s,this.isUndo=i,this.isTyping=r}get type(){return(0,o.KE)("batch-type-deprecated"),"default"}get baseVersion(){for(const e of this.operations)if(null!==e.baseVersion)return e.baseVersion;return null}addOperation(e){return e.batch=this,this.operations.push(e),e}}var r=s("./packages/ckeditor5-engine/src/model/position.ts"),n=s("./packages/ckeditor5-engine/src/model/range.ts");class a{constructor(e){this._markerCollection=e,this._changesInElement=new Map,this._elementSnapshots=new Map,this._changedMarkers=new Map,this._changeCount=0,this._cachedChanges=null,this._cachedChangesWithGraveyard=null,this._refreshedItems=new Set}get isEmpty(){return 0==this._changesInElement.size&&0==this._changedMarkers.size}bufferOperation(e){const t=e;switch(t.type){case"insert":if(this._isInInsertedElement(t.position.parent))return;this._markInsert(t.position.parent,t.position.offset,t.nodes.maxOffset);break;case"addAttribute":case"removeAttribute":case"changeAttribute":for(const e of t.range.getItems({shallow:!0}))this._isInInsertedElement(e.parent)||this._markAttribute(e);break;case"remove":case"move":case"reinsert":{if(t.sourcePosition.isEqual(t.targetPosition)||t.sourcePosition.getShiftedBy(t.howMany).isEqual(t.targetPosition))return;const e=this._isInInsertedElement(t.sourcePosition.parent),s=this._isInInsertedElement(t.targetPosition.parent);e||this._markRemove(t.sourcePosition.parent,t.sourcePosition.offset,t.howMany),s||this._markInsert(t.targetPosition.parent,t.getMovedRangeStart().offset,t.howMany);break}case"rename":{if(this._isInInsertedElement(t.position.parent))return;this._markRemove(t.position.parent,t.position.offset,1),this._markInsert(t.position.parent,t.position.offset,1);const e=n.Z._createFromPositionAndShift(t.position,1);for(const t of this._markerCollection.getMarkersIntersectingRange(e)){const e=t.getData();this.bufferMarkerChange(t.name,e,e)}break}case"split":{const e=t.splitPosition.parent;this._isInInsertedElement(e)||this._markRemove(e,t.splitPosition.offset,t.howMany),this._isInInsertedElement(t.insertionPosition.parent)||this._markInsert(t.insertionPosition.parent,t.insertionPosition.offset,1),t.graveyardPosition&&this._markRemove(t.graveyardPosition.parent,t.graveyardPosition.offset,1);break}case"merge":{const e=t.sourcePosition.parent;this._isInInsertedElement(e.parent)||this._markRemove(e.parent,e.startOffset,1);const s=t.graveyardPosition.parent;this._markInsert(s,t.graveyardPosition.offset,1);const o=t.targetPosition.parent;this._isInInsertedElement(o)||this._markInsert(o,t.targetPosition.offset,e.maxOffset);break}}this._cachedChanges=null}bufferMarkerChange(e,t,s){const o=this._changedMarkers.get(e);o?(o.newMarkerData=s,null==o.oldMarkerData.range&&null==s.range&&this._changedMarkers.delete(e)):this._changedMarkers.set(e,{newMarkerData:s,oldMarkerData:t})}getMarkersToRemove(){const e=[];for(const[t,s]of this._changedMarkers)null!=s.oldMarkerData.range&&e.push({name:t,range:s.oldMarkerData.range});return e}getMarkersToAdd(){const e=[];for(const[t,s]of this._changedMarkers)null!=s.newMarkerData.range&&e.push({name:t,range:s.newMarkerData.range});return e}getChangedMarkers(){return Array.from(this._changedMarkers).map((([e,t])=>({name:e,data:{oldRange:t.oldMarkerData.range,newRange:t.newMarkerData.range}})))}hasDataChanges(){if(this._changesInElement.size>0)return!0;for(const{newMarkerData:e,oldMarkerData:t}of this._changedMarkers.values()){if(e.affectsData!==t.affectsData)return!0;if(e.affectsData){const s=e.range&&!t.range,o=!e.range&&t.range,i=e.range&&t.range&&!e.range.isEqual(t.range);if(s||o||i)return!0}}return!1}getChanges(e={}){if(this._cachedChanges)return e.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice();let t=[];for(const e of this._changesInElement.keys()){const s=this._changesInElement.get(e).sort(((e,t)=>e.offset===t.offset?e.type!=t.type?"remove"==e.type?-1:1:0:e.offset<t.offset?-1:1)),o=this._elementSnapshots.get(e),i=c(e.getChildren()),a=l(o.length,s);let d=0,h=0;for(const s of a)if("i"===s)t.push(this._getInsertDiff(e,d,i[d])),d++;else if("r"===s)t.push(this._getRemoveDiff(e,d,o[h])),h++;else if("a"===s){const s=i[d].attributes,a=o[h].attributes;let c;if("$text"==i[d].name)c=new n.Z(r.ZP._createAt(e,d),r.ZP._createAt(e,d+1));else{const t=e.offsetToIndex(d);c=new n.Z(r.ZP._createAt(e,d),r.ZP._createAt(e.getChild(t),0))}t.push(...this._getAttributesDiff(c,a,s)),d++,h++}else d++,h++}t.sort(((e,t)=>e.position.root!=t.position.root?e.position.root.rootName<t.position.root.rootName?-1:1:e.position.isEqual(t.position)?e.changeCount-t.changeCount:e.position.isBefore(t.position)?-1:1));for(let e=1,s=0;e<t.length;e++){const o=t[s],i=t[e],r="remove"==o.type&&"remove"==i.type&&"$text"==o.name&&"$text"==i.name&&o.position.isEqual(i.position),n="insert"==o.type&&"insert"==i.type&&"$text"==o.name&&"$text"==i.name&&o.position.parent==i.position.parent&&o.position.offset+o.length==i.position.offset,a="attribute"==o.type&&"attribute"==i.type&&o.position.parent==i.position.parent&&o.range.isFlat&&i.range.isFlat&&o.position.offset+o.length==i.position.offset&&o.attributeKey==i.attributeKey&&o.attributeOldValue==i.attributeOldValue&&o.attributeNewValue==i.attributeNewValue;r||n||a?(o.length++,a&&(o.range.end=o.range.end.getShiftedBy(1)),t[e]=null):s=e}t=t.filter((e=>e));for(const e of t)delete e.changeCount,"attribute"==e.type&&(delete e.position,delete e.length);return this._changeCount=0,this._cachedChangesWithGraveyard=t,this._cachedChanges=t.filter(d),e.includeChangesInGraveyard?this._cachedChangesWithGraveyard.slice():this._cachedChanges.slice()}getRefreshedItems(){return new Set(this._refreshedItems)}reset(){this._changesInElement.clear(),this._elementSnapshots.clear(),this._changedMarkers.clear(),this._refreshedItems=new Set,this._cachedChanges=null}_refreshItem(e){if(this._isInInsertedElement(e.parent))return;this._markRemove(e.parent,e.startOffset,e.offsetSize),this._markInsert(e.parent,e.startOffset,e.offsetSize),this._refreshedItems.add(e);const t=n.Z._createOn(e);for(const e of this._markerCollection.getMarkersIntersectingRange(t)){const t=e.getData();this.bufferMarkerChange(e.name,t,t)}this._cachedChanges=null}_markInsert(e,t,s){const o={type:"insert",offset:t,howMany:s,count:this._changeCount++};this._markChange(e,o)}_markRemove(e,t,s){const o={type:"remove",offset:t,howMany:s,count:this._changeCount++};this._markChange(e,o),this._removeAllNestedChanges(e,t,s)}_markAttribute(e){const t={type:"attribute",offset:e.startOffset,howMany:e.offsetSize,count:this._changeCount++};this._markChange(e.parent,t)}_markChange(e,t){this._makeSnapshot(e);const s=this._getChangesForElement(e);this._handleChange(t,s),s.push(t);for(let e=0;e<s.length;e++)s[e].howMany<1&&(s.splice(e,1),e--)}_getChangesForElement(e){let t;return this._changesInElement.has(e)?t=this._changesInElement.get(e):(t=[],this._changesInElement.set(e,t)),t}_makeSnapshot(e){this._elementSnapshots.has(e)||this._elementSnapshots.set(e,c(e.getChildren()))}_handleChange(e,t){e.nodesToHandle=e.howMany;for(const s of t){const o=e.offset+e.howMany,i=s.offset+s.howMany;if("insert"==e.type&&("insert"==s.type&&(e.offset<=s.offset?s.offset+=e.howMany:e.offset<i&&(s.howMany+=e.nodesToHandle,e.nodesToHandle=0)),"remove"==s.type&&e.offset<s.offset&&(s.offset+=e.howMany),"attribute"==s.type))if(e.offset<=s.offset)s.offset+=e.howMany;else if(e.offset<i){const i=s.howMany;s.howMany=e.offset-s.offset,t.unshift({type:"attribute",offset:o,howMany:i-s.howMany,count:this._changeCount++})}if("remove"==e.type){if("insert"==s.type)if(o<=s.offset)s.offset-=e.howMany;else if(o<=i)if(e.offset<s.offset){const t=o-s.offset;s.offset=e.offset,s.howMany-=t,e.nodesToHandle-=t}else s.howMany-=e.nodesToHandle,e.nodesToHandle=0;else if(e.offset<=s.offset)e.nodesToHandle-=s.howMany,s.howMany=0;else if(e.offset<i){const t=i-e.offset;s.howMany-=t,e.nodesToHandle-=t}if("remove"==s.type&&(o<=s.offset?s.offset-=e.howMany:e.offset<s.offset&&(e.nodesToHandle+=s.howMany,s.howMany=0)),"attribute"==s.type)if(o<=s.offset)s.offset-=e.howMany;else if(e.offset<s.offset){const t=o-s.offset;s.offset=e.offset,s.howMany-=t}else if(e.offset<i)if(o<=i){const o=s.howMany;s.howMany=e.offset-s.offset;const i=o-s.howMany-e.nodesToHandle;t.unshift({type:"attribute",offset:e.offset,howMany:i,count:this._changeCount++})}else s.howMany-=i-e.offset}if("attribute"==e.type){if("insert"==s.type)if(e.offset<s.offset&&o>s.offset){if(o>i){const e={type:"attribute",offset:i,howMany:o-i,count:this._changeCount++};this._handleChange(e,t),t.push(e)}e.nodesToHandle=s.offset-e.offset,e.howMany=e.nodesToHandle}else e.offset>=s.offset&&e.offset<i&&(o>i?(e.nodesToHandle=o-i,e.offset=i):e.nodesToHandle=0);if("remove"==s.type&&e.offset<s.offset&&o>s.offset){const i={type:"attribute",offset:s.offset,howMany:o-s.offset,count:this._changeCount++};this._handleChange(i,t),t.push(i),e.nodesToHandle=s.offset-e.offset,e.howMany=e.nodesToHandle}"attribute"==s.type&&(e.offset>=s.offset&&o<=i?(e.nodesToHandle=0,e.howMany=0,e.offset=0):e.offset<=s.offset&&o>=i&&(s.howMany=0))}}e.howMany=e.nodesToHandle,delete e.nodesToHandle}_getInsertDiff(e,t,s){return{type:"insert",position:r.ZP._createAt(e,t),name:s.name,attributes:new Map(s.attributes),length:1,changeCount:this._changeCount++}}_getRemoveDiff(e,t,s){return{type:"remove",position:r.ZP._createAt(e,t),name:s.name,attributes:new Map(s.attributes),length:1,changeCount:this._changeCount++}}_getAttributesDiff(e,t,s){const o=[];s=new Map(s);for(const[i,r]of t){const t=s.has(i)?s.get(i):null;t!==r&&o.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:i,attributeOldValue:r,attributeNewValue:t,changeCount:this._changeCount++}),s.delete(i)}for(const[t,i]of s)o.push({type:"attribute",position:e.start,range:e.clone(),length:1,attributeKey:t,attributeOldValue:null,attributeNewValue:i,changeCount:this._changeCount++});return o}_isInInsertedElement(e){const t=e.parent;if(!t)return!1;const s=this._changesInElement.get(t),o=e.startOffset;if(s)for(const e of s)if("insert"==e.type&&o>=e.offset&&o<e.offset+e.howMany)return!0;return this._isInInsertedElement(t)}_removeAllNestedChanges(e,t,s){const o=new n.Z(r.ZP._createAt(e,t),r.ZP._createAt(e,t+s));for(const e of o.getItems({shallow:!0}))e.is("element")&&(this._elementSnapshots.delete(e),this._changesInElement.delete(e),this._removeAllNestedChanges(e,0,e.maxOffset))}}function c(e){const t=[];for(const s of e)if(s.is("$text"))for(let e=0;e<s.data.length;e++)t.push({name:"$text",attributes:new Map(s.getAttributes())});else t.push({name:s.name,attributes:new Map(s.getAttributes())});return t}function l(e,t){const s=[];let o=0,i=0;for(const e of t){if(e.offset>o){for(let t=0;t<e.offset-o;t++)s.push("e");i+=e.offset-o}if("insert"==e.type){for(let t=0;t<e.howMany;t++)s.push("i");o=e.offset+e.howMany}else if("remove"==e.type){for(let t=0;t<e.howMany;t++)s.push("r");o=e.offset,i+=e.howMany}else s.push(..."a".repeat(e.howMany).split("")),o=e.offset+e.howMany,i+=e.howMany}if(i<e)for(let t=0;t<e-i-o;t++)s.push("e");return s}function d(e){const t="position"in e&&"$graveyard"==e.position.root.rootName,s="range"in e&&"$graveyard"==e.range.root.rootName;return!t&&!s}var h=s("./packages/ckeditor5-engine/src/model/documentselection.ts"),u=s("./packages/ckeditor5-engine/src/model/history.ts"),p=s("./packages/ckeditor5-engine/src/model/element.ts");class g extends p.Z{constructor(e,t,s="main"){super(t),this._document=e,this.rootName=s}get document(){return this._document}toJSON(){return this.rootName}}g.prototype.is=function(e,t){return t?t===this.name&&("rootElement"===e||"model:rootElement"===e||"element"===e||"model:element"===e):"rootElement"===e||"model:rootElement"===e||"element"===e||"model:element"===e||"node"===e||"model:node"===e};var f=s("./packages/ckeditor5-utils/src/collection.ts"),m=s("./packages/ckeditor5-utils/src/emittermixin.ts");function k(e,t){return!!(s=e.charAt(t-1))&&1==s.length&&/[\ud800-\udbff]/.test(s)&&function(e){return!!e&&1==e.length&&/[\udc00-\udfff]/.test(e)}(e.charAt(t));var s}function b(e,t){return!!(s=e.charAt(t))&&1==s.length&&/[\u0300-\u036f\u1ab0-\u1aff\u1dc0-\u1dff\u20d0-\u20ff\ufe20-\ufe2f]/.test(s);var s}const _=function(){const e=/\p{Regional_Indicator}{2}/u.source,t="(?:"+[/\p{Emoji}[\u{E0020}-\u{E007E}]+\u{E007F}/u,/\p{Emoji}\u{FE0F}?\u{20E3}/u,/\p{Emoji}\u{FE0F}/u,/(?=\p{General_Category=Other_Symbol})\p{Emoji}\p{Emoji_Modifier}*/u].map((e=>e.source)).join("|")+")";return new RegExp(`${e}|${t}(?:${t})*`,"ug")}();function w(e,t){const s=String(e).matchAll(_);return Array.from(s).some((e=>e.index<t&&t<e.index+e[0].length))}var v=s("./node_modules/lodash-es/clone.js");const y="$graveyard";class Z extends m.Q5{constructor(e){super(),this.model=e,this.history=new u.Z,this.selection=new h.Z(this),this.roots=new f.Z({idProperty:"rootName"}),this.differ=new a(e.markers),this._postFixers=new Set,this._hasSelectionChangedFromTheLastChangeBlock=!1,this.createRoot("$root",y),this.listenTo(e,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&this.differ.bufferOperation(s)}),{priority:"high"}),this.listenTo(e,"applyOperation",((e,t)=>{const s=t[0];s.isDocumentOperation&&this.history.addOperation(s)}),{priority:"low"}),this.listenTo(this.selection,"change",(()=>{this._hasSelectionChangedFromTheLastChangeBlock=!0})),this.listenTo(e.markers,"update",((e,t,s,o,i)=>{const r={...t.getData(),range:o};this.differ.bufferMarkerChange(t.name,i,r),null===s&&t.on("change",((e,s)=>{const o=t.getData();this.differ.bufferMarkerChange(t.name,{...o,range:s},o)}))}))}get version(){return this.history.version}set version(e){this.history.version=e}get graveyard(){return this.getRoot(y)}createRoot(e="$root",t="main"){if(this.roots.get(t))throw new o.ZP("model-document-createroot-name-exists",this,{name:t});const s=new g(this,e,t);return this.roots.add(s),s}destroy(){this.selection.destroy(),this.stopListening()}getRoot(e="main"){return this.roots.get(e)}getRootNames(){return Array.from(this.roots,(e=>e.rootName)).filter((e=>e!=y))}registerPostFixer(e){this._postFixers.add(e)}toJSON(){const e=(0,v.Z)(this);return e.selection="[engine.model.DocumentSelection]",e.model="[engine.model.Model]",e}_handleChangeBlock(e){this._hasDocumentChangedFromTheLastChangeBlock()&&(this._callPostFixers(e),this.selection.refresh(),this.differ.hasDataChanges()?this.fire("change:data",e.batch):this.fire("change",e.batch),this.selection.refresh(),this.differ.reset()),this._hasSelectionChangedFromTheLastChangeBlock=!1}_hasDocumentChangedFromTheLastChangeBlock(){return!this.differ.isEmpty||this._hasSelectionChangedFromTheLastChangeBlock}_getDefaultRoot(){for(const e of this.roots)if(e!==this.graveyard)return e;return this.graveyard}_getDefaultRange(){const e=this._getDefaultRoot(),t=this.model,s=t.schema,o=t.createPositionFromPath(e,[0]);return s.getNearestSelectionRange(o)||t.createRange(o)}_validateSelectionRange(e){return P(e.start)&&P(e.end)}_callPostFixers(e){let t=!1;do{for(const s of this._postFixers)if(this.selection.refresh(),t=s(e),t)break}while(t)}}function P(e){const t=e.textNode;if(t){const s=t.data,o=e.offset-t.startOffset;return!k(s,o)&&!b(s,o)}return!0}var x=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),T=s("./packages/ckeditor5-engine/src/model/liverange.ts");class A extends m.Q5{constructor(){super(),this._markers=new Map}[Symbol.iterator](){return this._markers.values()}has(e){const t=e instanceof C?e.name:e;return this._markers.has(t)}get(e){return this._markers.get(e)||null}_set(e,t,s=!1,i=!1){const r=e instanceof C?e.name:e;if(r.includes(","))throw new o.ZP("markercollection-incorrect-marker-name",this);const n=this._markers.get(r);if(n){const e=n.getData(),o=n.getRange();let a=!1;return o.isEqual(t)||(n._attachLiveRange(T.Z.fromRange(t)),a=!0),s!=n.managedUsingOperations&&(n._managedUsingOperations=s,a=!0),"boolean"==typeof i&&i!=n.affectsData&&(n._affectsData=i,a=!0),a&&this.fire(`update:${r}`,n,o,t,e),n}const a=T.Z.fromRange(t),c=new C(r,a,s,i);return this._markers.set(r,c),this.fire(`update:${r}`,c,null,t,{...c.getData(),range:null}),c}_remove(e){const t=e instanceof C?e.name:e,s=this._markers.get(t);return!!s&&(this._markers.delete(t),this.fire(`update:${t}`,s,s.getRange(),null,s.getData()),this._destroyMarker(s),!0)}_refresh(e){const t=e instanceof C?e.name:e,s=this._markers.get(t);if(!s)throw new o.ZP("markercollection-refresh-marker-not-exists",this);const i=s.getRange();this.fire(`update:${t}`,s,i,i,s.getData())}*getMarkersAtPosition(e){for(const t of this)t.getRange().containsPosition(e)&&(yield t)}*getMarkersIntersectingRange(e){for(const t of this)null!==t.getRange().getIntersection(e)&&(yield t)}destroy(){for(const e of this._markers.values())this._destroyMarker(e);this._markers=null,this.stopListening()}*getMarkersGroup(e){for(const t of this._markers.values())t.name.startsWith(e+":")&&(yield t)}_destroyMarker(e){e.stopListening(),e._detachLiveRange()}}class C extends((0,m.ZP)(x.Z)){constructor(e,t,s,o){super(),this.name=e,this._liveRange=this._attachLiveRange(t),this._managedUsingOperations=s,this._affectsData=o}get managedUsingOperations(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._managedUsingOperations}get affectsData(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._affectsData}getData(){return{range:this.getRange(),affectsData:this.affectsData,managedUsingOperations:this.managedUsingOperations}}getStart(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._liveRange.start.clone()}getEnd(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._liveRange.end.clone()}getRange(){if(!this._liveRange)throw new o.ZP("marker-destroyed",this);return this._liveRange.toRange()}_attachLiveRange(e){return this._liveRange&&this._detachLiveRange(),e.delegate("change:range").to(this),e.delegate("change:content").to(this),this._liveRange=e,e}_detachLiveRange(){this._liveRange.stopDelegating("change:range",this),this._liveRange.stopDelegating("change:content",this),this._liveRange.detach(),this._liveRange=null}}C.prototype.is=function(e){return"marker"===e||"model:marker"===e};var E=s("./packages/ckeditor5-engine/src/model/selection.ts"),S=s("./packages/ckeditor5-engine/src/model/operation/operationfactory.ts"),j=s("./packages/ckeditor5-engine/src/model/schema.ts"),O=s("./packages/ckeditor5-engine/src/model/operation/attributeoperation.ts"),R=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),M=s("./packages/ckeditor5-engine/src/model/operation/utils.ts");class N extends R.Z{constructor(e,t){super(null),this.sourcePosition=e.clone(),this.howMany=t}get type(){return"detach"}toJSON(){const e=super.toJSON();return e.sourcePosition=this.sourcePosition.toJSON(),e}_validate(){if(this.sourcePosition.root.document)throw new o.ZP("detach-operation-on-document-node",this)}_execute(){(0,M.X9)(n.Z._createFromPositionAndShift(this.sourcePosition,this.howMany))}static get className(){return"DetachOperation"}}var V=s("./packages/ckeditor5-engine/src/model/operation/insertoperation.ts"),I=s("./packages/ckeditor5-engine/src/model/operation/markeroperation.ts"),D=s("./packages/ckeditor5-engine/src/model/operation/mergeoperation.ts"),z=s("./packages/ckeditor5-engine/src/model/operation/moveoperation.ts"),B=s("./packages/ckeditor5-engine/src/model/operation/renameoperation.ts"),F=s("./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.ts"),L=s("./packages/ckeditor5-engine/src/model/operation/splitoperation.ts"),W=s("./packages/ckeditor5-engine/src/model/documentfragment.ts"),$=s("./packages/ckeditor5-engine/src/model/text.ts"),q=s("./packages/ckeditor5-utils/src/tomap.ts");class H{constructor(e,t){this.model=e,this.batch=t}createText(e,t){return new $.Z(e,t)}createElement(e,t){return new p.Z(e,t)}createDocumentFragment(){return new W.Z}cloneElement(e,t=!0){return e._clone(t)}insert(e,t,s=0){if(this._assertWriterUsedCorrectly(),e instanceof $.Z&&""==e.data)return;const i=r.ZP._createAt(t,s);if(e.parent){if(Q(e.root,i.root))return void this.move(n.Z._createOn(e),i);if(e.root.document)throw new o.ZP("model-writer-insert-forbidden-move",this);this.remove(e)}const a=i.root.document?i.root.document.version:null,c=new V.Z(i,e,a);if(e instanceof $.Z&&(c.shouldReceiveAttributes=!0),this.batch.addOperation(c),this.model.applyOperation(c),e instanceof W.Z)for(const[t,s]of e.markers){const e=r.ZP._createAt(s.root,0),o={range:new n.Z(s.start._getCombined(e,i),s.end._getCombined(e,i)),usingOperation:!0,affectsData:!0};this.model.markers.has(t)?this.updateMarker(t,o):this.addMarker(t,o)}}insertText(e,t,s,o){t instanceof W.Z||t instanceof p.Z||t instanceof r.ZP?this.insert(this.createText(e),t,s):this.insert(this.createText(e,t),s,o)}insertElement(e,t,s,o){t instanceof W.Z||t instanceof p.Z||t instanceof r.ZP?this.insert(this.createElement(e),t,s):this.insert(this.createElement(e,t),s,o)}append(e,t){this.insert(e,t,"end")}appendText(e,t,s){t instanceof W.Z||t instanceof p.Z?this.insert(this.createText(e),t,"end"):this.insert(this.createText(e,t),s,"end")}appendElement(e,t,s){t instanceof W.Z||t instanceof p.Z?this.insert(this.createElement(e),t,"end"):this.insert(this.createElement(e,t),s,"end")}setAttribute(e,t,s){if(this._assertWriterUsedCorrectly(),s instanceof n.Z){const o=s.getMinimalFlatRanges();for(const s of o)U(this,e,t,s)}else K(this,e,t,s)}setAttributes(e,t){for(const[s,o]of(0,q.Z)(e))this.setAttribute(s,o,t)}removeAttribute(e,t){if(this._assertWriterUsedCorrectly(),t instanceof n.Z){const s=t.getMinimalFlatRanges();for(const t of s)U(this,e,null,t)}else K(this,e,null,t)}clearAttributes(e){this._assertWriterUsedCorrectly();const t=e=>{for(const t of e.getAttributeKeys())this.removeAttribute(t,e)};if(e instanceof n.Z)for(const s of e.getItems())t(s);else t(e)}move(e,t,s){if(this._assertWriterUsedCorrectly(),!(e instanceof n.Z))throw new o.ZP("writer-move-invalid-range",this);if(!e.isFlat)throw new o.ZP("writer-move-range-not-flat",this);const i=r.ZP._createAt(t,s);if(i.isEqual(e.start))return;if(this._addOperationForAffectedMarkers("move",e),!Q(e.root,i.root))throw new o.ZP("writer-move-different-document",this);const a=e.root.document?e.root.document.version:null,c=new z.Z(e.start,e.end.offset-e.start.offset,i,a);this.batch.addOperation(c),this.model.applyOperation(c)}remove(e){this._assertWriterUsedCorrectly();const t=(e instanceof n.Z?e:n.Z._createOn(e)).getMinimalFlatRanges().reverse();for(const e of t)this._addOperationForAffectedMarkers("move",e),J(e.start,e.end.offset-e.start.offset,this.batch,this.model)}merge(e){this._assertWriterUsedCorrectly();const t=e.nodeBefore,s=e.nodeAfter;if(this._addOperationForAffectedMarkers("merge",e),!(t instanceof p.Z))throw new o.ZP("writer-merge-no-element-before",this);if(!(s instanceof p.Z))throw new o.ZP("writer-merge-no-element-after",this);e.root.document?this._merge(e):this._mergeDetached(e)}createPositionFromPath(e,t,s){return this.model.createPositionFromPath(e,t,s)}createPositionAt(e,t){return this.model.createPositionAt(e,t)}createPositionAfter(e){return this.model.createPositionAfter(e)}createPositionBefore(e){return this.model.createPositionBefore(e)}createRange(e,t){return this.model.createRange(e,t)}createRangeIn(e){return this.model.createRangeIn(e)}createRangeOn(e){return this.model.createRangeOn(e)}createSelection(...e){return this.model.createSelection(...e)}_mergeDetached(e){const t=e.nodeBefore,s=e.nodeAfter;this.move(n.Z._createIn(s),r.ZP._createAt(t,"end")),this.remove(s)}_merge(e){const t=r.ZP._createAt(e.nodeBefore,"end"),s=r.ZP._createAt(e.nodeAfter,0),o=e.root.document.graveyard,i=new r.ZP(o,[0]),n=e.root.document.version,a=new D.Z(s,e.nodeAfter.maxOffset,t,i,n);this.batch.addOperation(a),this.model.applyOperation(a)}rename(e,t){if(this._assertWriterUsedCorrectly(),!(e instanceof p.Z))throw new o.ZP("writer-rename-not-element-instance",this);const s=e.root.document?e.root.document.version:null,i=new B.Z(r.ZP._createBefore(e),e.name,t,s);this.batch.addOperation(i),this.model.applyOperation(i)}split(e,t){this._assertWriterUsedCorrectly();let s,i,a=e.parent;if(!a.parent)throw new o.ZP("writer-split-element-no-parent",this);if(t||(t=a.parent),!e.parent.getAncestors({includeSelf:!0}).includes(t))throw new o.ZP("writer-split-invalid-limit-element",this);do{const t=a.root.document?a.root.document.version:null,o=a.maxOffset-e.offset,r=L.Z.getInsertionPosition(e),n=new L.Z(e,o,r,null,t);this.batch.addOperation(n),this.model.applyOperation(n),s||i||(s=a,i=e.parent.nextSibling),a=(e=this.createPositionAfter(e.parent)).parent}while(a!==t);return{position:e,range:new n.Z(r.ZP._createAt(s,"end"),r.ZP._createAt(i,0))}}wrap(e,t){if(this._assertWriterUsedCorrectly(),!e.isFlat)throw new o.ZP("writer-wrap-range-not-flat",this);const s=t instanceof p.Z?t:new p.Z(t);if(s.childCount>0)throw new o.ZP("writer-wrap-element-not-empty",this);if(null!==s.parent)throw new o.ZP("writer-wrap-element-attached",this);this.insert(s,e.start);const i=new n.Z(e.start.getShiftedBy(1),e.end.getShiftedBy(1));this.move(i,r.ZP._createAt(s,0))}unwrap(e){if(this._assertWriterUsedCorrectly(),null===e.parent)throw new o.ZP("writer-unwrap-element-no-parent",this);this.move(n.Z._createIn(e),this.createPositionAfter(e)),this.remove(e)}addMarker(e,t){if(this._assertWriterUsedCorrectly(),!t||"boolean"!=typeof t.usingOperation)throw new o.ZP("writer-addmarker-no-usingoperation",this);const s=t.usingOperation,i=t.range,r=void 0!==t.affectsData&&t.affectsData;if(this.model.markers.has(e))throw new o.ZP("writer-addmarker-marker-exists",this);if(!i)throw new o.ZP("writer-addmarker-no-range",this);return s?(G(this,e,null,i,r),this.model.markers.get(e)):this.model.markers._set(e,i,s,r)}updateMarker(e,t){this._assertWriterUsedCorrectly();const s="string"==typeof e?e:e.name,i=this.model.markers.get(s);if(!i)throw new o.ZP("writer-updatemarker-marker-not-exists",this);if(!t)return(0,o.KE)("writer-updatemarker-reconvert-using-editingcontroller",{markerName:s}),void this.model.markers._refresh(i);const r="boolean"==typeof t.usingOperation,n="boolean"==typeof t.affectsData,a=n?t.affectsData:i.affectsData;if(!r&&!t.range&&!n)throw new o.ZP("writer-updatemarker-wrong-options",this);const c=i.getRange(),l=t.range?t.range:c;r&&t.usingOperation!==i.managedUsingOperations?t.usingOperation?G(this,s,null,l,a):(G(this,s,c,null,a),this.model.markers._set(s,l,void 0,a)):i.managedUsingOperations?G(this,s,c,l,a):this.model.markers._set(s,l,void 0,a)}removeMarker(e){this._assertWriterUsedCorrectly();const t="string"==typeof e?e:e.name;if(!this.model.markers.has(t))throw new o.ZP("writer-removemarker-no-marker",this);const s=this.model.markers.get(t);if(!s.managedUsingOperations)return void this.model.markers._remove(t);G(this,t,s.getRange(),null,s.affectsData)}setSelection(...e){this._assertWriterUsedCorrectly(),this.model.document.selection._setTo(...e)}setSelectionFocus(e,t){this._assertWriterUsedCorrectly(),this.model.document.selection._setFocus(e,t)}setSelectionAttribute(e,t){if(this._assertWriterUsedCorrectly(),"string"==typeof e)this._setSelectionAttribute(e,t);else for(const[t,s]of(0,q.Z)(e))this._setSelectionAttribute(t,s)}removeSelectionAttribute(e){if(this._assertWriterUsedCorrectly(),"string"==typeof e)this._removeSelectionAttribute(e);else for(const t of e)this._removeSelectionAttribute(t)}overrideSelectionGravity(){return this.model.document.selection._overrideGravity()}restoreSelectionGravity(e){this.model.document.selection._restoreGravity(e)}_setSelectionAttribute(e,t){const s=this.model.document.selection;if(s.isCollapsed&&s.anchor.parent.isEmpty){const o=h.Z._getStoreAttributeKey(e);this.setAttribute(o,t,s.anchor.parent)}s._setAttribute(e,t)}_removeSelectionAttribute(e){const t=this.model.document.selection;if(t.isCollapsed&&t.anchor.parent.isEmpty){const s=h.Z._getStoreAttributeKey(e);this.removeAttribute(s,t.anchor.parent)}t._removeAttribute(e)}_assertWriterUsedCorrectly(){if(this.model._currentWriter!==this)throw new o.ZP("writer-incorrect-use",this)}_addOperationForAffectedMarkers(e,t){for(const s of this.model.markers){if(!s.managedUsingOperations)continue;const o=s.getRange();let i=!1;if("move"===e){const e=t;i=e.containsPosition(o.start)||e.start.isEqual(o.start)||e.containsPosition(o.end)||e.end.isEqual(o.end)}else{const e=t,s=e.nodeBefore,r=e.nodeAfter,n=o.start.parent==s&&o.start.isAtEnd,a=o.end.parent==r&&0==o.end.offset,c=o.end.nodeAfter==r,l=o.start.nodeAfter==r;i=n||a||c||l}i&&this.updateMarker(s.name,{range:o})}}}function U(e,t,s,o){const i=e.model,a=i.document;let c,l,d,h=o.start;for(const e of o.getWalker({shallow:!0}))d=e.item.getAttribute(t),c&&l!=d&&(l!=s&&u(),h=c),c=e.nextPosition,l=d;function u(){const o=new n.Z(h,c),r=o.root.document?a.version:null,d=new O.Z(o,t,l,s,r);e.batch.addOperation(d),i.applyOperation(d)}c instanceof r.ZP&&c!=h&&l!=s&&u()}function K(e,t,s,o){const i=e.model,a=i.document,c=o.getAttribute(t);let l,d;if(c!=s){if(o.root===o){const e=o.document?a.version:null;d=new F.Z(o,t,c,s,e)}else{l=new n.Z(r.ZP._createBefore(o),e.createPositionAfter(o));const i=l.root.document?a.version:null;d=new O.Z(l,t,c,s,i)}e.batch.addOperation(d),i.applyOperation(d)}}function G(e,t,s,o,i){const r=e.model,n=r.document,a=new I.Z(t,s,o,r.markers,!!i,n.version);e.batch.addOperation(a),r.applyOperation(a)}function J(e,t,s,o){let i;if(e.root.document){const s=o.document,n=new r.ZP(s.graveyard,[0]);i=new z.Z(e,t,n,s.version)}else i=new N(e,t);s.addOperation(i),o.applyOperation(i)}function Q(e,t){return e===t||e instanceof g&&t instanceof g}var X=s("./packages/ckeditor5-engine/src/model/utils/autoparagraphing.ts");function Y(e){e.document.registerPostFixer((t=>function(e,t){const s=t.document.selection,o=t.schema,i=[];let r=!1;for(const e of s.getRanges()){const t=ee(e,o);t&&!t.isEqual(e)?(i.push(t),r=!0):i.push(e)}r&&e.setSelection(function(e){const t=[...e],s=new Set;let o=1;for(;o<t.length;){const e=t[o],i=t.slice(0,o);for(const[r,n]of i.entries())if(!s.has(r))if(e.isEqual(n))s.add(r);else if(e.isIntersecting(n)){s.add(r),s.add(o);const i=e.getJoined(n);t.push(i)}o++}return t.filter(((e,t)=>!s.has(t)))}(i),{backward:s.isBackward});return!1}(t,e)))}function ee(e,t){return e.isCollapsed?function(e,t){const s=e.start,o=t.getNearestSelectionRange(s);if(!o){const e=s.getAncestors().reverse().find((e=>t.isObject(e)));return e?n.Z._createOn(e):null}if(!o.isCollapsed)return o;const i=o.start;if(s.isEqual(i))return null;return new n.Z(i)}(e,t):function(e,t){const{start:s,end:o}=e,i=t.checkChild(s,"$text"),a=t.checkChild(o,"$text"),c=t.getLimitElement(s),l=t.getLimitElement(o);if(c===l){if(i&&a)return null;if(function(e,t,s){const o=e.nodeAfter&&!s.isLimit(e.nodeAfter)||s.checkChild(e,"$text"),i=t.nodeBefore&&!s.isLimit(t.nodeBefore)||s.checkChild(t,"$text");return o||i}(s,o,t)){const e=s.nodeAfter&&t.isSelectable(s.nodeAfter)?null:t.getNearestSelectionRange(s,"forward"),i=o.nodeBefore&&t.isSelectable(o.nodeBefore)?null:t.getNearestSelectionRange(o,"backward"),r=e?e.start:s,a=i?i.end:o;return new n.Z(r,a)}}const d=c&&!c.is("rootElement"),h=l&&!l.is("rootElement");if(d||h){const e=s.nodeAfter&&o.nodeBefore&&s.nodeAfter.parent===o.nodeBefore.parent,i=d&&(!e||!se(s.nodeAfter,t)),a=h&&(!e||!se(o.nodeBefore,t));let u=s,p=o;return i&&(u=r.ZP._createBefore(te(c,t))),a&&(p=r.ZP._createAfter(te(l,t))),new n.Z(u,p)}return null}(e,t)}function te(e,t){let s=e,o=s;for(;t.isLimit(o)&&o.parent;)s=o,o=o.parent;return s}function se(e,t){return e&&t.isSelectable(e)}var oe=s("./packages/ckeditor5-engine/src/model/liveposition.ts");function ie(e,t,s={}){if(t.isCollapsed)return;const o=t.getFirstRange();if("$graveyard"==o.root.rootName)return;const i=e.schema;e.change((e=>{if(!s.doNotResetEntireContent&&function(e,t){const s=e.getLimitElement(t);if(!t.containsEntireContent(s))return!1;const o=t.getFirstRange();if(o.start.parent==o.end.parent)return!1;return e.checkChild(s,"paragraph")}(i,t))return void function(e,t){const s=e.model.schema.getLimitElement(t);e.remove(e.createRangeIn(s)),ce(e,e.createPositionAt(s,0),t)}(e,t);const r={};if(!s.doNotAutoparagraph){const e=t.getSelectedElement();e&&Object.assign(r,i.getAttributesWithProperty(e,"copyOnReplace",!0))}const[n,a]=function(e){const t=e.root.document.model,s=e.start;let o=e.end;if(t.hasContent(e,{ignoreMarkers:!0})){const s=function(e){const t=e.parent,s=t.root.document.model.schema,o=t.getAncestors({parentFirst:!0,includeSelf:!0});for(const e of o){if(s.isLimit(e))return null;if(s.isBlock(e))return e}}(o);if(s&&o.isTouching(t.createPositionAt(s,0))){const s=t.createSelection(e);t.modifySelection(s,{direction:"backward"});const i=s.getLastPosition(),r=t.createRange(i,o);t.hasContent(r,{ignoreMarkers:!0})||(o=i)}}return[oe.Z.fromPosition(s,"toPrevious"),oe.Z.fromPosition(o,"toNext")]}(o);n.isTouching(a)||e.remove(e.createRange(n,a)),s.leaveUnmerged||(!function(e,t,s){const o=e.model;if(!ae(e.model.schema,t,s))return;const[i,r]=function(e,t){const s=e.getAncestors(),o=t.getAncestors();let i=0;for(;s[i]&&s[i]==o[i];)i++;return[s[i],o[i]]}(t,s);if(!i||!r)return;!o.hasContent(i,{ignoreMarkers:!0})&&o.hasContent(r,{ignoreMarkers:!0})?ne(e,t,s,i.parent):re(e,t,s,i.parent)}(e,n,a),i.removeDisallowedAttributes(n.parent.getChildren(),e)),le(e,t,n),!s.doNotAutoparagraph&&function(e,t){const s=e.checkChild(t,"$text"),o=e.checkChild(t,"paragraph");return!s&&o}(i,n)&&ce(e,n,t,r),n.detach(),a.detach()}))}function re(e,t,s,o){const i=t.parent,r=s.parent;if(i!=o&&r!=o){for(t=e.createPositionAfter(i),(s=e.createPositionBefore(r)).isEqual(t)||e.insert(r,t),e.merge(t);s.parent.isEmpty;){const t=s.parent;s=e.createPositionBefore(t),e.remove(t)}ae(e.model.schema,t,s)&&re(e,t,s,o)}}function ne(e,t,s,o){const i=t.parent,r=s.parent;if(i!=o&&r!=o){for(t=e.createPositionAfter(i),(s=e.createPositionBefore(r)).isEqual(t)||e.insert(i,s);t.parent.isEmpty;){const s=t.parent;t=e.createPositionBefore(s),e.remove(s)}s=e.createPositionBefore(r),function(e,t){const s=t.nodeBefore,o=t.nodeAfter;s.name!=o.name&&e.rename(s,o.name);e.clearAttributes(s),e.setAttributes(Object.fromEntries(o.getAttributes()),s),e.merge(t)}(e,s),ae(e.model.schema,t,s)&&ne(e,t,s,o)}}function ae(e,t,s){const o=t.parent,i=s.parent;return o!=i&&(!e.isLimit(o)&&!e.isLimit(i)&&function(e,t,s){const o=new n.Z(e,t);for(const e of o.getWalker())if(s.isLimit(e.item))return!1;return!0}(t,s,e))}function ce(e,t,s,o={}){const i=e.createElement("paragraph");e.model.schema.setAllowedAttributes(i,o,e),e.insert(i,t),le(e,s,e.createPositionAt(i,0))}function le(e,t,s){t instanceof h.Z?e.setSelection(s):t.setTo(s)}function de(e,t){const s=[];Array.from(e.getItems({direction:"backward"})).map((e=>t.createRangeOn(e))).filter((t=>(t.start.isAfter(e.start)||t.start.isEqual(e.start))&&(t.end.isBefore(e.end)||t.end.isEqual(e.end)))).forEach((e=>{s.push(e.start.parent),t.remove(e)})),s.forEach((e=>{let s=e;for(;s.parent&&s.isEmpty;){const e=t.createRangeOn(s);s=s.parent,t.remove(e)}}))}class he{constructor(e,t,s){this.model=e,this.writer=t,this.position=s,this.canMergeWith=new Set([this.position.parent]),this.schema=e.schema,this._documentFragment=t.createDocumentFragment(),this._documentFragmentPosition=t.createPositionAt(this._documentFragment,0),this._firstNode=null,this._lastNode=null,this._lastAutoParagraph=null,this._filterAttributesOf=[],this._affectedStart=null,this._affectedEnd=null}handleNodes(e){for(const t of Array.from(e))this._handleNode(t);this._insertPartialFragment(),this._lastAutoParagraph&&this._updateLastNodeFromAutoParagraph(this._lastAutoParagraph),this._mergeOnRight(),this.schema.removeDisallowedAttributes(this._filterAttributesOf,this.writer),this._filterAttributesOf=[]}_updateLastNodeFromAutoParagraph(e){const t=this.writer.createPositionAfter(this._lastNode),s=this.writer.createPositionAfter(e);if(s.isAfter(t)){if(this._lastNode=e,this.position.parent!=e||!this.position.isAtEnd)throw new o.ZP("insertcontent-invalid-insertion-position",this);this.position=s,this._setAffectedBoundaries(this.position)}}getSelectionRange(){return this._nodeToSelect?n.Z._createOn(this._nodeToSelect):this.model.schema.getNearestSelectionRange(this.position)}getAffectedRange(){return this._affectedStart?new n.Z(this._affectedStart,this._affectedEnd):null}destroy(){this._affectedStart&&this._affectedStart.detach(),this._affectedEnd&&this._affectedEnd.detach()}_handleNode(e){if(this.schema.isObject(e))return void this._handleObject(e);let t=this._checkAndAutoParagraphToAllowedPosition(e);t||(t=this._checkAndSplitToAllowedPosition(e),t)?(this._appendToFragment(e),this._firstNode||(this._firstNode=e),this._lastNode=e):this._handleDisallowedNode(e)}_insertPartialFragment(){if(this._documentFragment.isEmpty)return;const e=oe.Z.fromPosition(this.position,"toNext");this._setAffectedBoundaries(this.position),this._documentFragment.getChild(0)==this._firstNode&&(this.writer.insert(this._firstNode,this.position),this._mergeOnLeft(),this.position=e.toPosition()),this._documentFragment.isEmpty||this.writer.insert(this._documentFragment,this.position),this._documentFragmentPosition=this.writer.createPositionAt(this._documentFragment,0),this.position=e.toPosition(),e.detach()}_handleObject(e){this._checkAndSplitToAllowedPosition(e)?this._appendToFragment(e):this._tryAutoparagraphing(e)}_handleDisallowedNode(e){e.is("element")?this.handleNodes(e.getChildren()):this._tryAutoparagraphing(e)}_appendToFragment(e){if(!this.schema.checkChild(this.position,e))throw new o.ZP("insertcontent-wrong-position",this,{node:e,position:this.position});this.writer.insert(e,this._documentFragmentPosition),this._documentFragmentPosition=this._documentFragmentPosition.getShiftedBy(e.offsetSize),this.schema.isObject(e)&&!this.schema.checkChild(this.position,"$text")?this._nodeToSelect=e:this._nodeToSelect=null,this._filterAttributesOf.push(e)}_setAffectedBoundaries(e){this._affectedStart||(this._affectedStart=oe.Z.fromPosition(e,"toPrevious")),this._affectedEnd&&!this._affectedEnd.isBefore(e)||(this._affectedEnd&&this._affectedEnd.detach(),this._affectedEnd=oe.Z.fromPosition(e,"toNext"))}_mergeOnLeft(){const e=this._firstNode;if(!(e instanceof p.Z))return;if(!this._canMergeLeft(e))return;const t=oe.Z._createBefore(e);t.stickiness="toNext";const s=oe.Z.fromPosition(this.position,"toNext");this._affectedStart.isEqual(t)&&(this._affectedStart.detach(),this._affectedStart=oe.Z._createAt(t.nodeBefore,"end","toPrevious")),this._firstNode===this._lastNode&&(this._firstNode=t.nodeBefore,this._lastNode=t.nodeBefore),this.writer.merge(t),t.isEqual(this._affectedEnd)&&this._firstNode===this._lastNode&&(this._affectedEnd.detach(),this._affectedEnd=oe.Z._createAt(t.nodeBefore,"end","toNext")),this.position=s.toPosition(),s.detach(),this._filterAttributesOf.push(this.position.parent),t.detach()}_mergeOnRight(){const e=this._lastNode;if(!(e instanceof p.Z))return;if(!this._canMergeRight(e))return;const t=oe.Z._createAfter(e);if(t.stickiness="toNext",!this.position.isEqual(t))throw new o.ZP("insertcontent-invalid-insertion-position",this);this.position=r.ZP._createAt(t.nodeBefore,"end");const s=oe.Z.fromPosition(this.position,"toPrevious");this._affectedEnd.isEqual(t)&&(this._affectedEnd.detach(),this._affectedEnd=oe.Z._createAt(t.nodeBefore,"end","toNext")),this._firstNode===this._lastNode&&(this._firstNode=t.nodeBefore,this._lastNode=t.nodeBefore),this.writer.merge(t),t.getShiftedBy(-1).isEqual(this._affectedStart)&&this._firstNode===this._lastNode&&(this._affectedStart.detach(),this._affectedStart=oe.Z._createAt(t.nodeBefore,0,"toPrevious")),this.position=s.toPosition(),s.detach(),this._filterAttributesOf.push(this.position.parent),t.detach()}_canMergeLeft(e){const t=e.previousSibling;return t instanceof p.Z&&this.canMergeWith.has(t)&&this.model.schema.checkMerge(t,e)}_canMergeRight(e){const t=e.nextSibling;return t instanceof p.Z&&this.canMergeWith.has(t)&&this.model.schema.checkMerge(e,t)}_tryAutoparagraphing(e){const t=this.writer.createElement("paragraph");this._getAllowedIn(this.position.parent,t)&&this.schema.checkChild(t,e)&&(t._appendChild(e),this._handleNode(t))}_checkAndAutoParagraphToAllowedPosition(e){if(this.schema.checkChild(this.position.parent,e))return!0;if(!this.schema.checkChild(this.position.parent,"paragraph")||!this.schema.checkChild("paragraph",e))return!1;this._insertPartialFragment();const t=this.writer.createElement("paragraph");return this.writer.insert(t,this.position),this._setAffectedBoundaries(this.position),this._lastAutoParagraph=t,this.position=this.writer.createPositionAt(t,0),!0}_checkAndSplitToAllowedPosition(e){const t=this._getAllowedIn(this.position.parent,e);if(!t)return!1;for(t!=this.position.parent&&this._insertPartialFragment();t!=this.position.parent;)if(this.position.isAtStart){const e=this.position.parent;this.position=this.writer.createPositionBefore(e),e.isEmpty&&e.parent===t&&this.writer.remove(e)}else if(this.position.isAtEnd)this.position=this.writer.createPositionAfter(this.position.parent);else{const e=this.writer.createPositionAfter(this.position.parent);this._setAffectedBoundaries(this.position),this.writer.split(this.position),this.position=e,this.canMergeWith.add(this.position.nodeAfter)}return!0}_getAllowedIn(e,t){return this.schema.checkChild(e,t)?e:this.schema.isLimit(e)?null:this._getAllowedIn(e.parent,t)}}var ue=s("./packages/ckeditor5-engine/src/model/utils/findoptimalinsertionrange.ts"),pe=s("./packages/ckeditor5-utils/src/first.ts");function ge(e,t,s,i,r={}){if(!e.schema.isObject(t))throw new o.ZP("insertobject-element-not-an-object",e,{object:t});let n;n=s?s instanceof E.Z||s instanceof h.Z?s:e.createSelection(s,i):e.document.selection;let a=n;r.findOptimalPosition&&e.schema.isBlock(t)&&(a=e.createSelection((0,ue.K)(n,e,r.findOptimalPosition)));const c=(0,pe.Z)(n.getSelectedBlocks()),l={};return c&&Object.assign(l,e.schema.getAttributesWithProperty(c,"copyOnReplace",!0)),e.change((s=>{a.isCollapsed||e.deleteContent(a,{doNotAutoparagraph:!0});let i=t;const n=a.anchor.parent;!e.schema.checkChild(n,t)&&e.schema.checkChild(n,"paragraph")&&e.schema.checkChild("paragraph",t)&&(i=s.createElement("paragraph"),s.insert(t,i)),e.schema.setAllowedAttributes(i,l,s);const c=e.insertContent(i,a);return c.isCollapsed||r.setSelection&&function(e,t,s,i){const r=e.model;if("after"==s){let s=t.nextSibling;!(s&&r.schema.checkChild(s,"$text"))&&r.schema.checkChild(t.parent,"paragraph")&&(s=e.createElement("paragraph"),r.schema.setAllowedAttributes(s,i,e),r.insertContent(s,e.createPositionAfter(t))),s&&e.setSelection(s,0)}else{if("on"!=s)throw new o.ZP("insertobject-invalid-place-parameter-value",r);e.setSelection(t,"on")}}(s,t,r.setSelection,l),c}))}var fe=s("./packages/ckeditor5-engine/src/model/treewalker.ts");const me=' ,.?!:;"-()';function ke(e,t){const{isForward:s,walker:o,unit:i,schema:n,treatEmojiAsSingleUnit:a}=e,{type:c,item:l,nextPosition:d}=t;if("text"==c)return"word"===e.unit?function(e,t){let s=e.position.textNode;if(s){let o=e.position.offset-s.startOffset;for(;!_e(s.data,o,t)&&!we(s,o,t);){e.next();const i=t?e.position.nodeAfter:e.position.nodeBefore;if(i&&i.is("$text")){const o=i.data.charAt(t?0:i.data.length-1);me.includes(o)||(e.next(),s=e.position.textNode)}o=e.position.offset-s.startOffset}}return e.position}(o,s):function(e,t,s){const o=e.position.textNode;if(o){const i=o.data;let r=e.position.offset-o.startOffset;for(;k(i,r)||"character"==t&&b(i,r)||s&&w(i,r);)e.next(),r=e.position.offset-o.startOffset}return e.position}(o,i,a);if(c==(s?"elementStart":"elementEnd")){if(n.isSelectable(l))return r.ZP._createAt(l,s?"after":"before");if(n.checkChild(d,"$text"))return d}else{if(n.isLimit(l))return void o.skip((()=>!0));if(n.checkChild(d,"$text"))return d}}function be(e,t){const s=e.root,o=r.ZP._createAt(s,t?"end":0);return t?new n.Z(e,o):new n.Z(o,e)}function _e(e,t,s){const o=t+(s?0:-1);return me.includes(e.charAt(o))}function we(e,t,s){return t===(s?e.endOffset:0)}var ve=s("./packages/ckeditor5-utils/src/observablemixin.ts");class ye extends ve.y{constructor(){super(),this.markers=new A,this.document=new Z(this),this.schema=new j.Z,this._pendingChanges=[],this._currentWriter=null,["insertContent","insertObject","deleteContent","modifySelection","getSelectedContent","applyOperation"].forEach((e=>this.decorate(e))),this.on("applyOperation",((e,t)=>{t[0]._validate()}),{priority:"highest"}),this.schema.register("$root",{isLimit:!0}),this.schema.register("$container",{allowIn:["$root","$container"]}),this.schema.register("$block",{allowIn:["$root","$container"],isBlock:!0}),this.schema.register("$blockObject",{allowWhere:"$block",isBlock:!0,isObject:!0}),this.schema.register("$inlineObject",{allowWhere:"$text",allowAttributesOf:"$text",isInline:!0,isObject:!0}),this.schema.register("$text",{allowIn:"$block",isInline:!0,isContent:!0}),this.schema.register("$clipboardHolder",{allowContentOf:"$root",allowChildren:"$text",isLimit:!0}),this.schema.register("$documentFragment",{allowContentOf:"$root",allowChildren:"$text",isLimit:!0}),this.schema.register("$marker"),this.schema.addChildCheck(((e,t)=>{if("$marker"===t.name)return!0})),Y(this),this.document.registerPostFixer(X._m)}change(e){try{return 0===this._pendingChanges.length?(this._pendingChanges.push({batch:new i,callback:e}),this._runPendingChanges()[0]):e(this._currentWriter)}catch(e){o.ZP.rethrowUnexpectedError(e,this)}}enqueueChange(e,t){try{e?"function"==typeof e?(t=e,e=new i):e instanceof i||(e=new i(e)):e=new i,this._pendingChanges.push({batch:e,callback:t}),1==this._pendingChanges.length&&this._runPendingChanges()}catch(e){o.ZP.rethrowUnexpectedError(e,this)}}applyOperation(e){e._execute()}insertContent(e,t,s){return function(e,t,s,o){return e.change((i=>{let r;r=s?s instanceof E.Z||s instanceof h.Z?s:i.createSelection(s,o):e.document.selection,r.isCollapsed||e.deleteContent(r,{doNotAutoparagraph:!0});const n=new he(e,i,r.anchor);let a;a=t.is("documentFragment")?t.getChildren():[t],n.handleNodes(a);const c=n.getSelectionRange();c&&(r instanceof h.Z?i.setSelection(c):r.setTo(c));const l=n.getAffectedRange()||e.createRange(r.anchor);return n.destroy(),l}))}(this,e,t,s)}insertObject(e,t,s,o){return ge(this,e,t,s,o)}deleteContent(e,t){ie(this,e,t)}modifySelection(e,t){!function(e,t,s={}){const o=e.schema,i="backward"!=s.direction,r=s.unit?s.unit:"character",n=!!s.treatEmojiAsSingleUnit,a=t.focus,c=new fe.Z({boundaries:be(a,i),singleCharacters:!0,direction:i?"forward":"backward"}),l={walker:c,schema:o,isForward:i,unit:r,treatEmojiAsSingleUnit:n};let d;for(;d=c.next();){if(d.done)return;const s=ke(l,d.value);if(s)return void(t instanceof h.Z?e.change((e=>{e.setSelectionFocus(s)})):t.setFocus(s))}}(this,e,t)}getSelectedContent(e){return function(e,t){return e.change((e=>{const s=e.createDocumentFragment(),o=t.getFirstRange();if(!o||o.isCollapsed)return s;const i=o.start.root,r=o.start.getCommonPath(o.end),n=i.getNodeByPath(r);let a;a=o.start.parent==o.end.parent?o:e.createRange(e.createPositionAt(n,o.start.path[r.length]),e.createPositionAt(n,o.end.path[r.length]+1));const c=a.end.offset-a.start.offset;for(const t of a.getItems({shallow:!0}))t.is("$textProxy")?e.appendText(t.data,t.getAttributes(),s):e.append(e.cloneElement(t,!0),s);if(a!=o){const t=o._getTransformedByMove(a.start,e.createPositionAt(s,0),c)[0],i=e.createRange(e.createPositionAt(s,0),t.start);de(e.createRange(t.end,e.createPositionAt(s,"end")),e),de(i,e)}return s}))}(this,e)}hasContent(e,t={}){const s=e instanceof n.Z?e:n.Z._createIn(e);if(s.isCollapsed)return!1;const{ignoreWhitespaces:o=!1,ignoreMarkers:i=!1}=t;if(!i)for(const e of this.markers.getMarkersIntersectingRange(s))if(e.affectsData)return!0;for(const e of s.getItems())if(this.schema.isContent(e)){if(!e.is("$textProxy"))return!0;if(!o)return!0;if(-1!==e.data.search(/\S/))return!0}return!1}createPositionFromPath(e,t,s){return new r.ZP(e,t,s)}createPositionAt(e,t){return r.ZP._createAt(e,t)}createPositionAfter(e){return r.ZP._createAfter(e)}createPositionBefore(e){return r.ZP._createBefore(e)}createRange(e,t){return new n.Z(e,t)}createRangeIn(e){return n.Z._createIn(e)}createRangeOn(e){return n.Z._createOn(e)}createSelection(...e){return new E.Z(...e)}createBatch(e){return new i(e)}createOperationFromJSON(e){return S.Z.fromJSON(e,this.document)}destroy(){this.document.destroy(),this.stopListening()}_runPendingChanges(){const e=[];this.fire("_beforeChanges");try{for(;this._pendingChanges.length;){const t=this._pendingChanges[0].batch;this._currentWriter=new H(this,t);const s=this._pendingChanges[0].callback(this._currentWriter);e.push(s),this.document._handleChangeBlock(this._currentWriter),this._pendingChanges.shift(),this._currentWriter=null}}finally{this._pendingChanges.length=0,this._currentWriter=null,this.fire("_afterChanges")}return e}}},"./packages/ckeditor5-engine/src/model/node.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-utils/src/tomap.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-utils/src/comparearrays.ts");s("./packages/ckeditor5-utils/src/version.ts");class a extends o.Z{constructor(e){super(),this.parent=null,this._attrs=(0,i.Z)(e)}get document(){return null}get index(){let e;if(!this.parent)return null;if(null===(e=this.parent.getChildIndex(this)))throw new r.ZP("model-node-not-found-in-parent",this);return e}get startOffset(){let e;if(!this.parent)return null;if(null===(e=this.parent.getChildStartOffset(this)))throw new r.ZP("model-node-not-found-in-parent",this);return e}get offsetSize(){return 1}get endOffset(){return this.parent?this.startOffset+this.offsetSize:null}get nextSibling(){const e=this.index;return null!==e&&this.parent.getChild(e+1)||null}get previousSibling(){const e=this.index;return null!==e&&this.parent.getChild(e-1)||null}get root(){let e=this;for(;e.parent;)e=e.parent;return e}isAttached(){return this.root.is("rootElement")}getPath(){const e=[];let t=this;for(;t.parent;)e.unshift(t.startOffset),t=t.parent;return e}getAncestors(e={}){const t=[];let s=e.includeSelf?this:this.parent;for(;s;)t[e.parentFirst?"push":"unshift"](s),s=s.parent;return t}getCommonAncestor(e,t={}){const s=this.getAncestors(t),o=e.getAncestors(t);let i=0;for(;s[i]==o[i]&&s[i];)i++;return 0===i?null:s[i-1]}isBefore(e){if(this==e)return!1;if(this.root!==e.root)return!1;const t=this.getPath(),s=e.getPath(),o=(0,n.Z)(t,s);switch(o){case"prefix":return!0;case"extension":return!1;default:return t[o]<s[o]}}isAfter(e){return this!=e&&(this.root===e.root&&!this.isBefore(e))}hasAttribute(e){return this._attrs.has(e)}getAttribute(e){return this._attrs.get(e)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}toJSON(){const e={};return this._attrs.size&&(e.attributes=Array.from(this._attrs).reduce(((e,t)=>(e[t[0]]=t[1],e)),{})),e}_clone(e){return new a(this._attrs)}_remove(){this.parent._removeChildren(this.index)}_setAttribute(e,t){this._attrs.set(e,t)}_setAttributesTo(e){this._attrs=(0,i.Z)(e)}_removeAttribute(e){return this._attrs.delete(e)}_clearAttributes(){this._attrs.clear()}}a.prototype.is=function(e){return"node"===e||"model:node"===e}},"./packages/ckeditor5-engine/src/model/nodelist.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/node.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r{constructor(e){this._nodes=[],e&&this._insertNodes(0,e)}[Symbol.iterator](){return this._nodes[Symbol.iterator]()}get length(){return this._nodes.length}get maxOffset(){return this._nodes.reduce(((e,t)=>e+t.offsetSize),0)}getNode(e){return this._nodes[e]||null}getNodeIndex(e){const t=this._nodes.indexOf(e);return-1==t?null:t}getNodeStartOffset(e){const t=this.getNodeIndex(e);return null===t?null:this._nodes.slice(0,t).reduce(((e,t)=>e+t.offsetSize),0)}indexToOffset(e){if(e==this._nodes.length)return this.maxOffset;const t=this._nodes[e];if(!t)throw new i.ZP("model-nodelist-index-out-of-bounds",this);return this.getNodeStartOffset(t)}offsetToIndex(e){let t=0;for(const s of this._nodes){if(e>=t&&e<t+s.offsetSize)return this.getNodeIndex(s);t+=s.offsetSize}if(t!=e)throw new i.ZP("model-nodelist-offset-out-of-bounds",this,{offset:e,nodeList:this});return this.length}_insertNodes(e,t){for(const e of t)if(!(e instanceof o.Z))throw new i.ZP("model-nodelist-insertnodes-not-node",this);this._nodes.splice(e,0,...t)}_removeNodes(e,t=1){return this._nodes.splice(e,t)}toJSON(){return this._nodes.map((e=>e.toJSON()))}}},"./packages/ckeditor5-engine/src/model/operation/attributeoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/operation/utils.ts"),r=s("./packages/ckeditor5-engine/src/model/range.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),a=s("./node_modules/lodash-es/_baseIsEqual.js");const c=function(e,t){return(0,a.Z)(e,t)};class l extends o.Z{constructor(e,t,s,o,i){super(i),this.range=e.clone(),this.key=t,this.oldValue=void 0===s?null:s,this.newValue=void 0===o?null:o}get type(){return null===this.oldValue?"addAttribute":null===this.newValue?"removeAttribute":"changeAttribute"}clone(){return new l(this.range,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new l(this.range,this.key,this.newValue,this.oldValue,this.baseVersion+1)}toJSON(){const e=super.toJSON();return e.range=this.range.toJSON(),e}_validate(){if(!this.range.isFlat)throw new n.ZP("attribute-operation-range-not-flat",this);for(const e of this.range.getItems({shallow:!0})){if(null!==this.oldValue&&!c(e.getAttribute(this.key),this.oldValue))throw new n.ZP("attribute-operation-wrong-old-value",this,{item:e,key:this.key,value:this.oldValue});if(null===this.oldValue&&null!==this.newValue&&e.hasAttribute(this.key))throw new n.ZP("attribute-operation-attribute-exists",this,{node:e,key:this.key})}}_execute(){c(this.oldValue,this.newValue)||(0,i.pX)(this.range,this.key,this.newValue)}static get className(){return"AttributeOperation"}static fromJSON(e,t){return new l(r.Z.fromJSON(e.range,t),e.key,e.oldValue,e.newValue,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/insertoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/position.ts"),r=s("./packages/ckeditor5-engine/src/model/nodelist.ts"),n=s("./packages/ckeditor5-engine/src/model/operation/moveoperation.ts"),a=s("./packages/ckeditor5-engine/src/model/operation/utils.ts"),c=s("./packages/ckeditor5-engine/src/model/text.ts"),l=s("./packages/ckeditor5-engine/src/model/element.ts"),d=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class h extends o.Z{constructor(e,t,s){super(s),this.position=e.clone(),this.position.stickiness="toNone",this.nodes=new r.Z((0,a.So)(t)),this.shouldReceiveAttributes=!1}get type(){return"insert"}get howMany(){return this.nodes.maxOffset}clone(){const e=new r.Z([...this.nodes].map((e=>e._clone(!0)))),t=new h(this.position,e,this.baseVersion);return t.shouldReceiveAttributes=this.shouldReceiveAttributes,t}getReversed(){const e=this.position.root.document.graveyard,t=new i.ZP(e,[0]);return new n.Z(this.position,this.nodes.maxOffset,t,this.baseVersion+1)}_validate(){const e=this.position.parent;if(!e||e.maxOffset<this.position.offset)throw new d.ZP("insert-operation-position-invalid",this)}_execute(){const e=this.nodes;this.nodes=new r.Z([...e].map((e=>e._clone(!0)))),(0,a.fj)(this.position,e)}toJSON(){const e=super.toJSON();return e.position=this.position.toJSON(),e.nodes=this.nodes.toJSON(),e}static get className(){return"InsertOperation"}static fromJSON(e,t){const s=[];for(const t of e.nodes)t.name?s.push(l.Z.fromJSON(t)):s.push(c.Z.fromJSON(t));const o=new h(i.ZP.fromJSON(e.position,t),s,e.baseVersion);return o.shouldReceiveAttributes=e.shouldReceiveAttributes,o}}},"./packages/ckeditor5-engine/src/model/operation/markeroperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/range.ts");class r extends o.Z{constructor(e,t,s,o,i,r){super(r),this.name=e,this.oldRange=t?t.clone():null,this.newRange=s?s.clone():null,this.affectsData=i,this._markers=o}get type(){return"marker"}clone(){return new r(this.name,this.oldRange,this.newRange,this._markers,this.affectsData,this.baseVersion)}getReversed(){return new r(this.name,this.newRange,this.oldRange,this._markers,this.affectsData,this.baseVersion+1)}_execute(){this.newRange?this._markers._set(this.name,this.newRange,!0,this.affectsData):this._markers._remove(this.name)}toJSON(){const e=super.toJSON();return this.oldRange&&(e.oldRange=this.oldRange.toJSON()),this.newRange&&(e.newRange=this.newRange.toJSON()),delete e._markers,e}static get className(){return"MarkerOperation"}static fromJSON(e,t){return new r(e.name,e.oldRange?i.Z.fromJSON(e.oldRange,t):null,e.newRange?i.Z.fromJSON(e.newRange,t):null,t.model.markers,e.affectsData,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/mergeoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/operation/splitoperation.ts"),r=s("./packages/ckeditor5-engine/src/model/position.ts"),n=s("./packages/ckeditor5-engine/src/model/range.ts"),a=s("./packages/ckeditor5-engine/src/model/operation/utils.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class l extends o.Z{constructor(e,t,s,o,i){super(i),this.sourcePosition=e.clone(),this.sourcePosition.stickiness="toPrevious",this.howMany=t,this.targetPosition=s.clone(),this.targetPosition.stickiness="toNext",this.graveyardPosition=o.clone()}get type(){return"merge"}get deletionPosition(){return new r.ZP(this.sourcePosition.root,this.sourcePosition.path.slice(0,-1))}get movedRange(){const e=this.sourcePosition.getShiftedBy(Number.POSITIVE_INFINITY);return new n.Z(this.sourcePosition,e)}clone(){return new l(this.sourcePosition,this.howMany,this.targetPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.targetPosition._getTransformedByMergeOperation(this),t=this.sourcePosition.path.slice(0,-1),s=new r.ZP(this.sourcePosition.root,t)._getTransformedByMergeOperation(this);return new i.Z(e,this.howMany,s,this.graveyardPosition,this.baseVersion+1)}_validate(){const e=this.sourcePosition.parent,t=this.targetPosition.parent;if(!e.parent)throw new c.ZP("merge-operation-source-position-invalid",this);if(!t.parent)throw new c.ZP("merge-operation-target-position-invalid",this);if(this.howMany!=e.maxOffset)throw new c.ZP("merge-operation-how-many-invalid",this)}_execute(){const e=this.sourcePosition.parent,t=n.Z._createIn(e);(0,a.XF)(t,this.targetPosition),(0,a.XF)(n.Z._createOn(e),this.graveyardPosition)}toJSON(){const e=super.toJSON();return e.sourcePosition=e.sourcePosition.toJSON(),e.targetPosition=e.targetPosition.toJSON(),e.graveyardPosition=e.graveyardPosition.toJSON(),e}static get className(){return"MergeOperation"}static fromJSON(e,t){const s=r.ZP.fromJSON(e.sourcePosition,t),o=r.ZP.fromJSON(e.targetPosition,t),i=r.ZP.fromJSON(e.graveyardPosition,t);return new this(s,e.howMany,o,i,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/moveoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/position.ts"),r=s("./packages/ckeditor5-engine/src/model/range.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),a=s("./packages/ckeditor5-utils/src/comparearrays.ts"),c=s("./packages/ckeditor5-engine/src/model/operation/utils.ts");class l extends o.Z{constructor(e,t,s,o){super(o),this.sourcePosition=e.clone(),this.sourcePosition.stickiness="toNext",this.howMany=t,this.targetPosition=s.clone(),this.targetPosition.stickiness="toNone"}get type(){return"$graveyard"==this.targetPosition.root.rootName?"remove":"$graveyard"==this.sourcePosition.root.rootName?"reinsert":"move"}clone(){return new l(this.sourcePosition,this.howMany,this.targetPosition,this.baseVersion)}getMovedRangeStart(){return this.targetPosition._getTransformedByDeletion(this.sourcePosition,this.howMany)}getReversed(){const e=this.sourcePosition._getTransformedByInsertion(this.targetPosition,this.howMany);return new l(this.getMovedRangeStart(),this.howMany,e,this.baseVersion+1)}_validate(){const e=this.sourcePosition.parent,t=this.targetPosition.parent,s=this.sourcePosition.offset,o=this.targetPosition.offset;if(s+this.howMany>e.maxOffset)throw new n.ZP("move-operation-nodes-do-not-exist",this);if(e===t&&s<o&&o<s+this.howMany)throw new n.ZP("move-operation-range-into-itself",this);if(this.sourcePosition.root==this.targetPosition.root&&"prefix"==(0,a.Z)(this.sourcePosition.getParentPath(),this.targetPosition.getParentPath())){const e=this.sourcePosition.path.length-1;if(this.targetPosition.path[e]>=s&&this.targetPosition.path[e]<s+this.howMany)throw new n.ZP("move-operation-node-into-itself",this)}}_execute(){(0,c.XF)(r.Z._createFromPositionAndShift(this.sourcePosition,this.howMany),this.targetPosition)}toJSON(){const e=super.toJSON();return e.sourcePosition=this.sourcePosition.toJSON(),e.targetPosition=this.targetPosition.toJSON(),e}static get className(){return"MoveOperation"}static fromJSON(e,t){const s=i.ZP.fromJSON(e.sourcePosition,t),o=i.ZP.fromJSON(e.targetPosition,t);return new this(s,e.howMany,o,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/nooperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts");class i extends o.Z{get type(){return"noop"}clone(){return new i(this.baseVersion)}getReversed(){return new i(this.baseVersion+1)}_execute(){}static get className(){return"NoOperation"}}},"./packages/ckeditor5-engine/src/model/operation/operation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{constructor(e){this.baseVersion=e,this.isDocumentOperation=null!==this.baseVersion,this.batch=null}_validate(){}toJSON(){const e=Object.assign({},this);return e.__className=this.constructor.className,delete e.batch,delete e.isDocumentOperation,e}static get className(){return"Operation"}static fromJSON(e,t){return new this(e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/operationfactory.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>g});var o=s("./packages/ckeditor5-engine/src/model/operation/attributeoperation.ts"),i=s("./packages/ckeditor5-engine/src/model/operation/insertoperation.ts"),r=s("./packages/ckeditor5-engine/src/model/operation/markeroperation.ts"),n=s("./packages/ckeditor5-engine/src/model/operation/moveoperation.ts"),a=s("./packages/ckeditor5-engine/src/model/operation/nooperation.ts"),c=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),l=s("./packages/ckeditor5-engine/src/model/operation/renameoperation.ts"),d=s("./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.ts"),h=s("./packages/ckeditor5-engine/src/model/operation/splitoperation.ts"),u=s("./packages/ckeditor5-engine/src/model/operation/mergeoperation.ts");const p={};p[o.Z.className]=o.Z,p[i.Z.className]=i.Z,p[r.Z.className]=r.Z,p[n.Z.className]=n.Z,p[a.Z.className]=a.Z,p[c.Z.className]=c.Z,p[l.Z.className]=l.Z,p[d.Z.className]=d.Z,p[h.Z.className]=h.Z,p[u.Z.className]=u.Z;class g{static fromJSON(e,t){return p[e.__className].fromJSON(e,t)}}},"./packages/ckeditor5-engine/src/model/operation/renameoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/element.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-engine/src/model/position.ts");class a extends o.Z{constructor(e,t,s,o){super(o),this.position=e,this.position.stickiness="toNext",this.oldName=t,this.newName=s}get type(){return"rename"}clone(){return new a(this.position.clone(),this.oldName,this.newName,this.baseVersion)}getReversed(){return new a(this.position.clone(),this.newName,this.oldName,this.baseVersion+1)}_validate(){const e=this.position.nodeAfter;if(!(e instanceof i.Z))throw new r.ZP("rename-operation-wrong-position",this);if(e.name!==this.oldName)throw new r.ZP("rename-operation-wrong-name",this)}_execute(){this.position.nodeAfter.name=this.newName}toJSON(){const e=super.toJSON();return e.position=this.position.toJSON(),e}static get className(){return"RenameOperation"}static fromJSON(e,t){return new a(n.ZP.fromJSON(e.position,t),e.oldName,e.newName,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(e,t,s,o,i){super(i),this.root=e,this.key=t,this.oldValue=s,this.newValue=o}get type(){return null===this.oldValue?"addRootAttribute":null===this.newValue?"removeRootAttribute":"changeRootAttribute"}clone(){return new r(this.root,this.key,this.oldValue,this.newValue,this.baseVersion)}getReversed(){return new r(this.root,this.key,this.newValue,this.oldValue,this.baseVersion+1)}_validate(){if(this.root!=this.root.root||this.root.is("documentFragment"))throw new i.ZP("rootattribute-operation-not-a-root",this,{root:this.root,key:this.key});if(null!==this.oldValue&&this.root.getAttribute(this.key)!==this.oldValue)throw new i.ZP("rootattribute-operation-wrong-old-value",this,{root:this.root,key:this.key});if(null===this.oldValue&&null!==this.newValue&&this.root.hasAttribute(this.key))throw new i.ZP("rootattribute-operation-attribute-exists",this,{root:this.root,key:this.key})}_execute(){null!==this.newValue?this.root._setAttribute(this.key,this.newValue):this.root._removeAttribute(this.key)}toJSON(){const e=super.toJSON();return e.root=this.root.toJSON(),e}static get className(){return"RootAttributeOperation"}static fromJSON(e,t){if(!t.getRoot(e.root))throw new i.ZP("rootattribute-operation-fromjson-no-root",this,{rootName:e.root});return new r(t.getRoot(e.root),e.key,e.oldValue,e.newValue,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/splitoperation.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-engine/src/model/operation/operation.ts"),i=s("./packages/ckeditor5-engine/src/model/operation/mergeoperation.ts"),r=s("./packages/ckeditor5-engine/src/model/position.ts"),n=s("./packages/ckeditor5-engine/src/model/range.ts"),a=s("./packages/ckeditor5-engine/src/model/operation/utils.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class l extends o.Z{constructor(e,t,s,o,i){super(i),this.splitPosition=e.clone(),this.splitPosition.stickiness="toNext",this.howMany=t,this.insertionPosition=s,this.graveyardPosition=o?o.clone():null,this.graveyardPosition&&(this.graveyardPosition.stickiness="toNext")}get type(){return"split"}get moveTargetPosition(){const e=this.insertionPosition.path.slice();return e.push(0),new r.ZP(this.insertionPosition.root,e)}get movedRange(){const e=this.splitPosition.getShiftedBy(Number.POSITIVE_INFINITY);return new n.Z(this.splitPosition,e)}clone(){return new l(this.splitPosition,this.howMany,this.insertionPosition,this.graveyardPosition,this.baseVersion)}getReversed(){const e=this.splitPosition.root.document.graveyard,t=new r.ZP(e,[0]);return new i.Z(this.moveTargetPosition,this.howMany,this.splitPosition,t,this.baseVersion+1)}_validate(){const e=this.splitPosition.parent,t=this.splitPosition.offset;if(!e||e.maxOffset<t)throw new c.ZP("split-operation-position-invalid",this);if(!e.parent)throw new c.ZP("split-operation-split-in-root",this);if(this.howMany!=e.maxOffset-this.splitPosition.offset)throw new c.ZP("split-operation-how-many-invalid",this);if(this.graveyardPosition&&!this.graveyardPosition.nodeAfter)throw new c.ZP("split-operation-graveyard-position-invalid",this)}_execute(){const e=this.splitPosition.parent;if(this.graveyardPosition)(0,a.XF)(n.Z._createFromPositionAndShift(this.graveyardPosition,1),this.insertionPosition);else{const t=e._clone();(0,a.fj)(this.insertionPosition,t)}const t=new n.Z(r.ZP._createAt(e,this.splitPosition.offset),r.ZP._createAt(e,e.maxOffset));(0,a.XF)(t,this.moveTargetPosition)}toJSON(){const e=super.toJSON();return e.splitPosition=this.splitPosition.toJSON(),e.insertionPosition=this.insertionPosition.toJSON(),this.graveyardPosition&&(e.graveyardPosition=this.graveyardPosition.toJSON()),e}static get className(){return"SplitOperation"}static getInsertionPosition(e){const t=e.path.slice(0,-1);return t[t.length-1]++,new r.ZP(e.root,t,"toPrevious")}static fromJSON(e,t){const s=r.ZP.fromJSON(e.splitPosition,t),o=r.ZP.fromJSON(e.insertionPosition,t),i=e.graveyardPosition?r.ZP.fromJSON(e.graveyardPosition,t):null;return new this(s,e.howMany,o,i,e.baseVersion)}}},"./packages/ckeditor5-engine/src/model/operation/transform.ts":(e,t,s)=>{"use strict";s.d(t,{R:()=>_});var o=s("./packages/ckeditor5-engine/src/model/operation/insertoperation.ts"),i=s("./packages/ckeditor5-engine/src/model/operation/attributeoperation.ts"),r=s("./packages/ckeditor5-engine/src/model/operation/renameoperation.ts"),n=s("./packages/ckeditor5-engine/src/model/operation/markeroperation.ts"),a=s("./packages/ckeditor5-engine/src/model/operation/moveoperation.ts"),c=s("./packages/ckeditor5-engine/src/model/operation/rootattributeoperation.ts"),l=s("./packages/ckeditor5-engine/src/model/operation/mergeoperation.ts"),d=s("./packages/ckeditor5-engine/src/model/operation/splitoperation.ts"),h=s("./packages/ckeditor5-engine/src/model/operation/nooperation.ts"),u=s("./packages/ckeditor5-engine/src/model/range.ts"),p=s("./packages/ckeditor5-engine/src/model/position.ts"),g=s("./packages/ckeditor5-utils/src/comparearrays.ts");const f=new Map;function m(e,t,s){let o=f.get(e);o||(o=new Map,f.set(e,o)),o.set(t,s)}function k(e){return[e]}function b(e,t,s={}){const o=function(e,t){const s=f.get(e);return s&&s.has(t)?s.get(t):k}(e.constructor,t.constructor);try{return o(e=e.clone(),t,s)}catch(e){throw e}}function _(e,t,s){e=e.slice(),t=t.slice();const o=new w(s.document,s.useRelations,s.forceWeakRemove);o.setOriginalOperations(e),o.setOriginalOperations(t);const i=o.originalOperations;if(0==e.length||0==t.length)return{operationsA:e,operationsB:t,originalOperations:i};const r=new WeakMap;for(const t of e)r.set(t,0);const n={nextBaseVersionA:e[e.length-1].baseVersion+1,nextBaseVersionB:t[t.length-1].baseVersion+1,originalOperationsACount:e.length,originalOperationsBCount:t.length};let a=0;for(;a<e.length;){const s=e[a],i=r.get(s);if(i==t.length){a++;continue}const n=t[i],c=b(s,n,o.getContext(s,n,!0)),l=b(n,s,o.getContext(n,s,!1));o.updateRelation(s,n),o.setOriginalOperations(c,s),o.setOriginalOperations(l,n);for(const e of c)r.set(e,i+l.length);e.splice(a,1,...c),t.splice(i,1,...l)}if(s.padWithNoOps){const s=e.length-n.originalOperationsACount,o=t.length-n.originalOperationsBCount;y(e,o-s),y(t,s-o)}return v(e,n.nextBaseVersionB),v(t,n.nextBaseVersionA),{operationsA:e,operationsB:t,originalOperations:i}}class w{constructor(e,t,s=!1){this.originalOperations=new Map,this._history=e.history,this._useRelations=t,this._forceWeakRemove=!!s,this._relations=new Map}setOriginalOperations(e,t=null){const s=t?this.originalOperations.get(t):null;for(const t of e)this.originalOperations.set(t,s||t)}updateRelation(e,t){if(e instanceof a.Z)t instanceof l.Z?e.targetPosition.isEqual(t.sourcePosition)||t.movedRange.containsPosition(e.targetPosition)?this._setRelation(e,t,"insertAtSource"):e.targetPosition.isEqual(t.deletionPosition)?this._setRelation(e,t,"insertBetween"):e.targetPosition.isAfter(t.sourcePosition)&&this._setRelation(e,t,"moveTargetAfter"):t instanceof a.Z&&(e.targetPosition.isEqual(t.sourcePosition)||e.targetPosition.isBefore(t.sourcePosition)?this._setRelation(e,t,"insertBefore"):this._setRelation(e,t,"insertAfter"));else if(e instanceof d.Z){if(t instanceof l.Z)e.splitPosition.isBefore(t.sourcePosition)&&this._setRelation(e,t,"splitBefore");else if(t instanceof a.Z)if(e.splitPosition.isEqual(t.sourcePosition)||e.splitPosition.isBefore(t.sourcePosition))this._setRelation(e,t,"splitBefore");else{const s=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.splitPosition.hasSameParentAs(t.sourcePosition)&&s.containsPosition(e.splitPosition)){const o=s.end.offset-e.splitPosition.offset,i=e.splitPosition.offset-s.start.offset;this._setRelation(e,t,{howMany:o,offset:i})}}}else if(e instanceof l.Z)t instanceof l.Z?(e.targetPosition.isEqual(t.sourcePosition)||this._setRelation(e,t,"mergeTargetNotMoved"),e.sourcePosition.isEqual(t.targetPosition)&&this._setRelation(e,t,"mergeSourceNotMoved"),e.sourcePosition.isEqual(t.sourcePosition)&&this._setRelation(e,t,"mergeSameElement")):t instanceof d.Z&&e.sourcePosition.isEqual(t.splitPosition)&&this._setRelation(e,t,"splitAtSource");else if(e instanceof n.Z){const s=e.newRange;if(!s)return;if(t instanceof a.Z){const o=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany),i=o.containsPosition(s.start)||o.start.isEqual(s.start),r=o.containsPosition(s.end)||o.end.isEqual(s.end);!i&&!r||o.containsRange(s)||this._setRelation(e,t,{side:i?"left":"right",path:i?s.start.path.slice():s.end.path.slice()})}else if(t instanceof l.Z){const o=s.start.isEqual(t.targetPosition),i=s.start.isEqual(t.deletionPosition),r=s.end.isEqual(t.deletionPosition),n=s.end.isEqual(t.sourcePosition);(o||i||r||n)&&this._setRelation(e,t,{wasInLeftElement:o,wasStartBeforeMergedElement:i,wasEndBeforeMergedElement:r,wasInRightElement:n})}}}getContext(e,t,s){return{aIsStrong:s,aWasUndone:this._wasUndone(e),bWasUndone:this._wasUndone(t),abRelation:this._useRelations?this._getRelation(e,t):null,baRelation:this._useRelations?this._getRelation(t,e):null,forceWeakRemove:this._forceWeakRemove}}_wasUndone(e){const t=this.originalOperations.get(e);return t.wasUndone||this._history.isUndoneOperation(t)}_getRelation(e,t){const s=this.originalOperations.get(t),o=this._history.getUndoneOperation(s);if(!o)return null;const i=this.originalOperations.get(e),r=this._relations.get(i);return r&&r.get(o)||null}_setRelation(e,t,s){const o=this.originalOperations.get(e),i=this.originalOperations.get(t);let r=this._relations.get(o);r||(r=new Map,this._relations.set(o,r)),r.set(i,s)}}function v(e,t){for(const s of e)s.baseVersion=t++}function y(e,t){for(let s=0;s<t;s++)e.push(new h.Z(0))}function Z(e,t,s){const o=e.nodes.getNode(0).getAttribute(t);if(o==s)return null;const r=new u.Z(e.position,e.position.getShiftedBy(e.howMany));return new i.Z(r,t,o,s,0)}function P(e,t){return null===e.targetPosition._getTransformedByDeletion(t.sourcePosition,t.howMany)}function x(e,t){const s=[];for(let o=0;o<e.length;o++){const i=e[o],r=new a.Z(i.start,i.end.offset-i.start.offset,t,0);s.push(r);for(let t=o+1;t<e.length;t++)e[t]=e[t]._getTransformedByMove(r.sourcePosition,r.targetPosition,r.howMany)[0];t=t._getTransformedByMove(r.sourcePosition,r.targetPosition,r.howMany)}return s}m(i.Z,i.Z,((e,t,s)=>{if(e.key===t.key&&e.range.start.hasSameParentAs(t.range.start)){const o=e.range.getDifference(t.range).map((t=>new i.Z(t,e.key,e.oldValue,e.newValue,0))),r=e.range.getIntersection(t.range);return r&&s.aIsStrong&&o.push(new i.Z(r,t.key,t.newValue,e.newValue,0)),0==o.length?[new h.Z(0)]:o}return[e]})),m(i.Z,o.Z,((e,t)=>{if(e.range.start.hasSameParentAs(t.position)&&e.range.containsPosition(t.position)){const s=e.range._getTransformedByInsertion(t.position,t.howMany,!t.shouldReceiveAttributes).map((t=>new i.Z(t,e.key,e.oldValue,e.newValue,e.baseVersion)));if(t.shouldReceiveAttributes){const o=Z(t,e.key,e.oldValue);o&&s.unshift(o)}return s}return e.range=e.range._getTransformedByInsertion(t.position,t.howMany,!1)[0],[e]})),m(i.Z,l.Z,((e,t)=>{const s=[];e.range.start.hasSameParentAs(t.deletionPosition)&&(e.range.containsPosition(t.deletionPosition)||e.range.start.isEqual(t.deletionPosition))&&s.push(u.Z._createFromPositionAndShift(t.graveyardPosition,1));const o=e.range._getTransformedByMergeOperation(t);return o.isCollapsed||s.push(o),s.map((t=>new i.Z(t,e.key,e.oldValue,e.newValue,e.baseVersion)))})),m(i.Z,a.Z,((e,t)=>function(e,t){const s=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);let o=null,i=[];s.containsRange(e,!0)?o=e:e.start.hasSameParentAs(s.start)?(i=e.getDifference(s),o=e.getIntersection(s)):i=[e];const r=[];for(let e of i){e=e._getTransformedByDeletion(t.sourcePosition,t.howMany);const s=t.getMovedRangeStart(),o=e.start.hasSameParentAs(s),i=e._getTransformedByInsertion(s,t.howMany,o);r.push(...i)}o&&r.push(o._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany,!1)[0]);return r}(e.range,t).map((t=>new i.Z(t,e.key,e.oldValue,e.newValue,e.baseVersion))))),m(i.Z,d.Z,((e,t)=>{if(e.range.end.isEqual(t.insertionPosition))return t.graveyardPosition||e.range.end.offset++,[e];if(e.range.start.hasSameParentAs(t.splitPosition)&&e.range.containsPosition(t.splitPosition)){const s=e.clone();return s.range=new u.Z(t.moveTargetPosition.clone(),e.range.end._getCombined(t.splitPosition,t.moveTargetPosition)),e.range.end=t.splitPosition.clone(),e.range.end.stickiness="toPrevious",[e,s]}return e.range=e.range._getTransformedBySplitOperation(t),[e]})),m(o.Z,i.Z,((e,t)=>{const s=[e];if(e.shouldReceiveAttributes&&e.position.hasSameParentAs(t.range.start)&&t.range.containsPosition(e.position)){const o=Z(e,t.key,t.newValue);o&&s.push(o)}return s})),m(o.Z,o.Z,((e,t,s)=>(e.position.isEqual(t.position)&&s.aIsStrong||(e.position=e.position._getTransformedByInsertOperation(t)),[e]))),m(o.Z,a.Z,((e,t)=>(e.position=e.position._getTransformedByMoveOperation(t),[e]))),m(o.Z,d.Z,((e,t)=>(e.position=e.position._getTransformedBySplitOperation(t),[e]))),m(o.Z,l.Z,((e,t)=>(e.position=e.position._getTransformedByMergeOperation(t),[e]))),m(n.Z,o.Z,((e,t)=>(e.oldRange&&(e.oldRange=e.oldRange._getTransformedByInsertOperation(t)[0]),e.newRange&&(e.newRange=e.newRange._getTransformedByInsertOperation(t)[0]),[e]))),m(n.Z,n.Z,((e,t,s)=>{if(e.name==t.name){if(!s.aIsStrong)return[new h.Z(0)];e.oldRange=t.newRange?t.newRange.clone():null}return[e]})),m(n.Z,l.Z,((e,t)=>(e.oldRange&&(e.oldRange=e.oldRange._getTransformedByMergeOperation(t)),e.newRange&&(e.newRange=e.newRange._getTransformedByMergeOperation(t)),[e]))),m(n.Z,a.Z,((e,t,s)=>{if(e.oldRange&&(e.oldRange=u.Z._createFromRanges(e.oldRange._getTransformedByMoveOperation(t))),e.newRange){if(s.abRelation){const o=u.Z._createFromRanges(e.newRange._getTransformedByMoveOperation(t));if("left"==s.abRelation.side&&t.targetPosition.isEqual(e.newRange.start))return e.newRange.end=o.end,e.newRange.start.path=s.abRelation.path,[e];if("right"==s.abRelation.side&&t.targetPosition.isEqual(e.newRange.end))return e.newRange.start=o.start,e.newRange.end.path=s.abRelation.path,[e]}e.newRange=u.Z._createFromRanges(e.newRange._getTransformedByMoveOperation(t))}return[e]})),m(n.Z,d.Z,((e,t,s)=>{if(e.oldRange&&(e.oldRange=e.oldRange._getTransformedBySplitOperation(t)),e.newRange){if(s.abRelation){const o=e.newRange._getTransformedBySplitOperation(t);return e.newRange.start.isEqual(t.splitPosition)&&s.abRelation.wasStartBeforeMergedElement?e.newRange.start=p.ZP._createAt(t.insertionPosition):e.newRange.start.isEqual(t.splitPosition)&&!s.abRelation.wasInLeftElement&&(e.newRange.start=p.ZP._createAt(t.moveTargetPosition)),e.newRange.end.isEqual(t.splitPosition)&&s.abRelation.wasInRightElement?e.newRange.end=p.ZP._createAt(t.moveTargetPosition):e.newRange.end.isEqual(t.splitPosition)&&s.abRelation.wasEndBeforeMergedElement?e.newRange.end=p.ZP._createAt(t.insertionPosition):e.newRange.end=o.end,[e]}e.newRange=e.newRange._getTransformedBySplitOperation(t)}return[e]})),m(l.Z,o.Z,((e,t)=>(e.sourcePosition.hasSameParentAs(t.position)&&(e.howMany+=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByInsertOperation(t),e.targetPosition=e.targetPosition._getTransformedByInsertOperation(t),[e]))),m(l.Z,l.Z,((e,t,s)=>{if(e.sourcePosition.isEqual(t.sourcePosition)&&e.targetPosition.isEqual(t.targetPosition)){if(s.bWasUndone){const s=t.graveyardPosition.path.slice();return s.push(0),e.sourcePosition=new p.ZP(t.graveyardPosition.root,s),e.howMany=0,[e]}return[new h.Z(0)]}if(e.sourcePosition.isEqual(t.sourcePosition)&&!e.targetPosition.isEqual(t.targetPosition)&&!s.bWasUndone&&"splitAtSource"!=s.abRelation){const o="$graveyard"==e.targetPosition.root.rootName,i="$graveyard"==t.targetPosition.root.rootName,r=o&&!i;if(i&&!o||!r&&s.aIsStrong){const s=t.targetPosition._getTransformedByMergeOperation(t),o=e.targetPosition._getTransformedByMergeOperation(t);return[new a.Z(s,e.howMany,o,0)]}return[new h.Z(0)]}return e.sourcePosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByMergeOperation(t),e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),e.graveyardPosition.isEqual(t.graveyardPosition)&&s.aIsStrong||(e.graveyardPosition=e.graveyardPosition._getTransformedByMergeOperation(t)),[e]})),m(l.Z,a.Z,((e,t,s)=>{const o=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);return"remove"==t.type&&!s.bWasUndone&&!s.forceWeakRemove&&e.deletionPosition.hasSameParentAs(t.sourcePosition)&&o.containsPosition(e.sourcePosition)?[new h.Z(0)]:(e.sourcePosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.sourcePosition.hasSameParentAs(t.sourcePosition)&&(e.howMany-=t.howMany),e.sourcePosition=e.sourcePosition._getTransformedByMoveOperation(t),e.targetPosition=e.targetPosition._getTransformedByMoveOperation(t),e.graveyardPosition.isEqual(t.targetPosition)||(e.graveyardPosition=e.graveyardPosition._getTransformedByMoveOperation(t)),[e])})),m(l.Z,d.Z,((e,t,s)=>{if(t.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedByDeletion(t.graveyardPosition,1),e.deletionPosition.isEqual(t.graveyardPosition)&&(e.howMany=t.howMany)),e.targetPosition.isEqual(t.splitPosition)){const o=0!=t.howMany,i=t.graveyardPosition&&e.deletionPosition.isEqual(t.graveyardPosition);if(o||i||"mergeTargetNotMoved"==s.abRelation)return e.sourcePosition=e.sourcePosition._getTransformedBySplitOperation(t),[e]}if(e.sourcePosition.isEqual(t.splitPosition)){if("mergeSourceNotMoved"==s.abRelation)return e.howMany=0,e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e];if("mergeSameElement"==s.abRelation||e.sourcePosition.offset>0)return e.sourcePosition=t.moveTargetPosition.clone(),e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e]}return e.sourcePosition.hasSameParentAs(t.splitPosition)&&(e.howMany=t.splitPosition.offset),e.sourcePosition=e.sourcePosition._getTransformedBySplitOperation(t),e.targetPosition=e.targetPosition._getTransformedBySplitOperation(t),[e]})),m(a.Z,o.Z,((e,t)=>{const s=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany)._getTransformedByInsertOperation(t,!1)[0];return e.sourcePosition=s.start,e.howMany=s.end.offset-s.start.offset,e.targetPosition.isEqual(t.position)||(e.targetPosition=e.targetPosition._getTransformedByInsertOperation(t)),[e]})),m(a.Z,a.Z,((e,t,s)=>{const o=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany),i=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);let r,n=s.aIsStrong,a=!s.aIsStrong;if("insertBefore"==s.abRelation||"insertAfter"==s.baRelation?a=!0:"insertAfter"!=s.abRelation&&"insertBefore"!=s.baRelation||(a=!1),r=e.targetPosition.isEqual(t.targetPosition)&&a?e.targetPosition._getTransformedByDeletion(t.sourcePosition,t.howMany):e.targetPosition._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),P(e,t)&&P(t,e))return[t.getReversed()];if(o.containsPosition(t.targetPosition)&&o.containsRange(i,!0))return o.start=o.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),o.end=o.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),x([o],r);if(i.containsPosition(e.targetPosition)&&i.containsRange(o,!0))return o.start=o.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),o.end=o.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),x([o],r);const c=(0,g.Z)(e.sourcePosition.getParentPath(),t.sourcePosition.getParentPath());if("prefix"==c||"extension"==c)return o.start=o.start._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),o.end=o.end._getTransformedByMove(t.sourcePosition,t.targetPosition,t.howMany),x([o],r);"remove"!=e.type||"remove"==t.type||s.aWasUndone||s.forceWeakRemove?"remove"==e.type||"remove"!=t.type||s.bWasUndone||s.forceWeakRemove||(n=!1):n=!0;const l=[],d=o.getDifference(i);for(const e of d){e.start=e.start._getTransformedByDeletion(t.sourcePosition,t.howMany),e.end=e.end._getTransformedByDeletion(t.sourcePosition,t.howMany);const s="same"==(0,g.Z)(e.start.getParentPath(),t.getMovedRangeStart().getParentPath()),o=e._getTransformedByInsertion(t.getMovedRangeStart(),t.howMany,s);l.push(...o)}const p=o.getIntersection(i);return null!==p&&n&&(p.start=p.start._getCombined(t.sourcePosition,t.getMovedRangeStart()),p.end=p.end._getCombined(t.sourcePosition,t.getMovedRangeStart()),0===l.length?l.push(p):1==l.length?i.start.isBefore(o.start)||i.start.isEqual(o.start)?l.unshift(p):l.push(p):l.splice(1,0,p)),0===l.length?[new h.Z(e.baseVersion)]:x(l,r)})),m(a.Z,d.Z,((e,t,s)=>{let o=e.targetPosition.clone();e.targetPosition.isEqual(t.insertionPosition)&&t.graveyardPosition&&"moveTargetAfter"!=s.abRelation||(o=e.targetPosition._getTransformedBySplitOperation(t));const i=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany);if(i.end.isEqual(t.insertionPosition))return t.graveyardPosition||e.howMany++,e.targetPosition=o,[e];if(i.start.hasSameParentAs(t.splitPosition)&&i.containsPosition(t.splitPosition)){let e=new u.Z(t.splitPosition,i.end);e=e._getTransformedBySplitOperation(t);return x([new u.Z(i.start,t.splitPosition),e],o)}e.targetPosition.isEqual(t.splitPosition)&&"insertAtSource"==s.abRelation&&(o=t.moveTargetPosition),e.targetPosition.isEqual(t.insertionPosition)&&"insertBetween"==s.abRelation&&(o=e.targetPosition);const r=[i._getTransformedBySplitOperation(t)];if(t.graveyardPosition){const o=i.start.isEqual(t.graveyardPosition)||i.containsPosition(t.graveyardPosition);e.howMany>1&&o&&!s.aWasUndone&&r.push(u.Z._createFromPositionAndShift(t.insertionPosition,1))}return x(r,o)})),m(a.Z,l.Z,((e,t,s)=>{const o=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany);if(t.deletionPosition.hasSameParentAs(e.sourcePosition)&&o.containsPosition(t.sourcePosition))if("remove"!=e.type||s.forceWeakRemove){if(1==e.howMany)return s.bWasUndone?(e.sourcePosition=t.graveyardPosition.clone(),e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),[e]):[new h.Z(0)]}else if(!s.aWasUndone){const s=[];let o=t.graveyardPosition.clone(),i=t.targetPosition._getTransformedByMergeOperation(t);e.howMany>1&&(s.push(new a.Z(e.sourcePosition,e.howMany-1,e.targetPosition,0)),o=o._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany-1),i=i._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany-1));const r=t.deletionPosition._getCombined(e.sourcePosition,e.targetPosition),n=new a.Z(o,1,r,0),c=n.getMovedRangeStart().path.slice();c.push(0);const l=new p.ZP(n.targetPosition.root,c);i=i._getTransformedByMove(o,r,1);const d=new a.Z(i,t.howMany,l,0);return s.push(n),s.push(d),s}const i=u.Z._createFromPositionAndShift(e.sourcePosition,e.howMany)._getTransformedByMergeOperation(t);return e.sourcePosition=i.start,e.howMany=i.end.offset-i.start.offset,e.targetPosition=e.targetPosition._getTransformedByMergeOperation(t),[e]})),m(r.Z,o.Z,((e,t)=>(e.position=e.position._getTransformedByInsertOperation(t),[e]))),m(r.Z,l.Z,((e,t)=>e.position.isEqual(t.deletionPosition)?(e.position=t.graveyardPosition.clone(),e.position.stickiness="toNext",[e]):(e.position=e.position._getTransformedByMergeOperation(t),[e]))),m(r.Z,a.Z,((e,t)=>(e.position=e.position._getTransformedByMoveOperation(t),[e]))),m(r.Z,r.Z,((e,t,s)=>{if(e.position.isEqual(t.position)){if(!s.aIsStrong)return[new h.Z(0)];e.oldName=t.newName}return[e]})),m(r.Z,d.Z,((e,t)=>{const s=e.position.path,o=t.splitPosition.getParentPath();if("same"==(0,g.Z)(s,o)&&!t.graveyardPosition){const t=new r.Z(e.position.getShiftedBy(1),e.oldName,e.newName,0);return[e,t]}return e.position=e.position._getTransformedBySplitOperation(t),[e]})),m(c.Z,c.Z,((e,t,s)=>{if(e.root===t.root&&e.key===t.key){if(!s.aIsStrong||e.newValue===t.newValue)return[new h.Z(0)];e.oldValue=t.newValue}return[e]})),m(d.Z,o.Z,((e,t)=>(e.splitPosition.hasSameParentAs(t.position)&&e.splitPosition.offset<t.position.offset&&(e.howMany+=t.howMany),e.splitPosition=e.splitPosition._getTransformedByInsertOperation(t),e.insertionPosition=e.insertionPosition._getTransformedByInsertOperation(t),[e]))),m(d.Z,l.Z,((e,t,s)=>{if(!e.graveyardPosition&&!s.bWasUndone&&e.splitPosition.hasSameParentAs(t.sourcePosition)){const s=t.graveyardPosition.path.slice();s.push(0);const o=new p.ZP(t.graveyardPosition.root,s),i=d.Z.getInsertionPosition(new p.ZP(t.graveyardPosition.root,s)),r=new d.Z(o,0,i,null,0);return e.splitPosition=e.splitPosition._getTransformedByMergeOperation(t),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),e.graveyardPosition=r.insertionPosition.clone(),e.graveyardPosition.stickiness="toNext",[r,e]}return e.splitPosition.hasSameParentAs(t.deletionPosition)&&!e.splitPosition.isAfter(t.deletionPosition)&&e.howMany--,e.splitPosition.hasSameParentAs(t.targetPosition)&&(e.howMany+=t.howMany),e.splitPosition=e.splitPosition._getTransformedByMergeOperation(t),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),e.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedByMergeOperation(t)),[e]})),m(d.Z,a.Z,((e,t,s)=>{const o=u.Z._createFromPositionAndShift(t.sourcePosition,t.howMany);if(e.graveyardPosition){const i=o.start.isEqual(e.graveyardPosition)||o.containsPosition(e.graveyardPosition);if(!s.bWasUndone&&i){const s=e.splitPosition._getTransformedByMoveOperation(t),o=e.graveyardPosition._getTransformedByMoveOperation(t),i=o.path.slice();i.push(0);const r=new p.ZP(o.root,i);return[new a.Z(s,e.howMany,r,0)]}e.graveyardPosition=e.graveyardPosition._getTransformedByMoveOperation(t)}const i=e.splitPosition.isEqual(t.targetPosition);if(i&&("insertAtSource"==s.baRelation||"splitBefore"==s.abRelation))return e.howMany+=t.howMany,e.splitPosition=e.splitPosition._getTransformedByDeletion(t.sourcePosition,t.howMany),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),[e];if(i&&s.abRelation&&s.abRelation.howMany){const{howMany:t,offset:o}=s.abRelation;return e.howMany+=t,e.splitPosition=e.splitPosition.getShiftedBy(o),[e]}if(e.splitPosition.hasSameParentAs(t.sourcePosition)&&o.containsPosition(e.splitPosition)){const s=t.howMany-(e.splitPosition.offset-t.sourcePosition.offset);return e.howMany-=s,e.splitPosition.hasSameParentAs(t.targetPosition)&&e.splitPosition.offset<t.targetPosition.offset&&(e.howMany+=t.howMany),e.splitPosition=t.sourcePosition.clone(),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),[e]}return t.sourcePosition.isEqual(t.targetPosition)||(e.splitPosition.hasSameParentAs(t.sourcePosition)&&e.splitPosition.offset<=t.sourcePosition.offset&&(e.howMany-=t.howMany),e.splitPosition.hasSameParentAs(t.targetPosition)&&e.splitPosition.offset<t.targetPosition.offset&&(e.howMany+=t.howMany)),e.splitPosition.stickiness="toNone",e.splitPosition=e.splitPosition._getTransformedByMoveOperation(t),e.splitPosition.stickiness="toNext",e.graveyardPosition?e.insertionPosition=e.insertionPosition._getTransformedByMoveOperation(t):e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),[e]})),m(d.Z,d.Z,((e,t,s)=>{if(e.splitPosition.isEqual(t.splitPosition)){if(!e.graveyardPosition&&!t.graveyardPosition)return[new h.Z(0)];if(e.graveyardPosition&&t.graveyardPosition&&e.graveyardPosition.isEqual(t.graveyardPosition))return[new h.Z(0)];if("splitBefore"==s.abRelation)return e.howMany=0,e.graveyardPosition=e.graveyardPosition._getTransformedBySplitOperation(t),[e]}if(e.graveyardPosition&&t.graveyardPosition&&e.graveyardPosition.isEqual(t.graveyardPosition)){const o="$graveyard"==e.splitPosition.root.rootName,i="$graveyard"==t.splitPosition.root.rootName,r=o&&!i;if(i&&!o||!r&&s.aIsStrong){const s=[];return t.howMany&&s.push(new a.Z(t.moveTargetPosition,t.howMany,t.splitPosition,0)),e.howMany&&s.push(new a.Z(e.splitPosition,e.howMany,e.moveTargetPosition,0)),s}return[new h.Z(0)]}if(e.graveyardPosition&&(e.graveyardPosition=e.graveyardPosition._getTransformedBySplitOperation(t)),e.splitPosition.isEqual(t.insertionPosition)&&"splitBefore"==s.abRelation)return e.howMany++,[e];if(t.splitPosition.isEqual(e.insertionPosition)&&"splitBefore"==s.baRelation){const s=t.insertionPosition.path.slice();s.push(0);const o=new p.ZP(t.insertionPosition.root,s);return[e,new a.Z(e.insertionPosition,1,o,0)]}return e.splitPosition.hasSameParentAs(t.splitPosition)&&e.splitPosition.offset<t.splitPosition.offset&&(e.howMany-=t.howMany),e.splitPosition=e.splitPosition._getTransformedBySplitOperation(t),e.insertionPosition=d.Z.getInsertionPosition(e.splitPosition),[e]}))},"./packages/ckeditor5-engine/src/model/operation/utils.ts":(e,t,s)=>{"use strict";s.d(t,{So:()=>p,X9:()=>d,XF:()=>h,fj:()=>l,pX:()=>u});var o=s("./packages/ckeditor5-engine/src/model/node.ts"),i=s("./packages/ckeditor5-engine/src/model/range.ts"),r=s("./packages/ckeditor5-engine/src/model/text.ts"),n=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),c=s("./packages/ckeditor5-utils/src/isiterable.ts");function l(e,t){const s=p(t),o=s.reduce(((e,t)=>e+t.offsetSize),0),r=e.parent;f(e);const n=e.index;return r._insertChild(n,s),g(r,n+s.length),g(r,n),new i.Z(e,e.getShiftedBy(o))}function d(e){if(!e.isFlat)throw new a.ZP("operation-utils-remove-range-not-flat",this);const t=e.start.parent;f(e.start),f(e.end);const s=t._removeChildren(e.start.index,e.end.index-e.start.index);return g(t,e.start.index),s}function h(e,t){if(!e.isFlat)throw new a.ZP("operation-utils-move-range-not-flat",this);const s=d(e);return l(t=t._getTransformedByDeletion(e.start,e.end.offset-e.start.offset),s)}function u(e,t,s){f(e.start),f(e.end);for(const o of e.getItems({shallow:!0})){const e=o.is("$textProxy")?o.textNode:o;null!==s?e._setAttribute(t,s):e._removeAttribute(t),g(e.parent,e.index)}g(e.end.parent,e.end.index)}function p(e){const t=[];!function e(s){if("string"==typeof s)t.push(new r.Z(s));else if(s instanceof n.Z)t.push(new r.Z(s.data,s.getAttributes()));else if(s instanceof o.Z)t.push(s);else if((0,c.Z)(s))for(const t of s)e(t)}(e);for(let e=1;e<t.length;e++){const s=t[e],o=t[e-1];s instanceof r.Z&&o instanceof r.Z&&m(s,o)&&(t.splice(e-1,2,new r.Z(o.data+s.data,o.getAttributes())),e--)}return t}function g(e,t){const s=e.getChild(t-1),o=e.getChild(t);if(s&&o&&s.is("$text")&&o.is("$text")&&m(s,o)){const i=new r.Z(s.data+o.data,s.getAttributes());e._removeChildren(t-1,2),e._insertChild(t-1,i)}}function f(e){const t=e.textNode,s=e.parent;if(t){const o=e.offset-t.startOffset,i=t.index;s._removeChildren(i,1);const n=new r.Z(t.data.substr(0,o),t.getAttributes()),a=new r.Z(t.data.substr(o),t.getAttributes());s._insertChild(i,[n,a])}}function m(e,t){const s=e.getAttributes(),o=t.getAttributes();for(const e of s){if(e[1]!==t.getAttribute(e[0]))return!1;o.next()}return o.next().done}},"./packages/ckeditor5-engine/src/model/position.ts":(e,t,s)=>{"use strict";s.d(t,{Rt:()=>c,Ux:()=>l,YV:()=>d,ZP:()=>a});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/model/treewalker.ts"),r=s("./packages/ckeditor5-utils/src/comparearrays.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");s("./packages/ckeditor5-utils/src/version.ts");class a extends o.Z{constructor(e,t,s="toNone"){if(super(),!e.is("element")&&!e.is("documentFragment"))throw new n.ZP("model-position-root-invalid",e);if(!(t instanceof Array)||0===t.length)throw new n.ZP("model-position-path-incorrect-format",e,{path:t});e.is("rootElement")?t=t.slice():(t=[...e.getPath(),...t],e=e.root),this.root=e,this.path=t,this.stickiness=s}get offset(){return this.path[this.path.length-1]}set offset(e){this.path[this.path.length-1]=e}get parent(){let e=this.root;for(let t=0;t<this.path.length-1;t++)if(e=e.getChild(e.offsetToIndex(this.path[t])),!e)throw new n.ZP("model-position-path-incorrect",this,{position:this});if(e.is("$text"))throw new n.ZP("model-position-path-incorrect",this,{position:this});return e}get index(){return this.parent.offsetToIndex(this.offset)}get textNode(){return c(this,this.parent)}get nodeAfter(){const e=this.parent;return l(this,e,c(this,e))}get nodeBefore(){const e=this.parent;return d(this,e,c(this,e))}get isAtStart(){return 0===this.offset}get isAtEnd(){return this.offset==this.parent.maxOffset}compareWith(e){if(this.root!=e.root)return"different";const t=(0,r.Z)(this.path,e.path);switch(t){case"same":return"same";case"prefix":return"before";case"extension":return"after";default:return this.path[t]<e.path[t]?"before":"after"}}getLastMatchingPosition(e,t={}){t.startPosition=this;const s=new i.Z(t);return s.skip(e),s.position}getParentPath(){return this.path.slice(0,-1)}getAncestors(){const e=this.parent;return e.is("documentFragment")?[e]:e.getAncestors({includeSelf:!0})}findAncestor(e){const t=this.parent;return t.is("element")?t.findAncestor(e,{includeSelf:!0}):null}getCommonPath(e){if(this.root!=e.root)return[];const t=(0,r.Z)(this.path,e.path),s="string"==typeof t?Math.min(this.path.length,e.path.length):t;return this.path.slice(0,s)}getCommonAncestor(e){const t=this.getAncestors(),s=e.getAncestors();let o=0;for(;t[o]==s[o]&&t[o];)o++;return 0===o?null:t[o-1]}getShiftedBy(e){const t=this.clone(),s=t.offset+e;return t.offset=s<0?0:s,t}isAfter(e){return"after"==this.compareWith(e)}isBefore(e){return"before"==this.compareWith(e)}isEqual(e){return"same"==this.compareWith(e)}isTouching(e){let t=null,s=null;switch(this.compareWith(e)){case"same":return!0;case"before":t=a._createAt(this),s=a._createAt(e);break;case"after":t=a._createAt(e),s=a._createAt(this);break;default:return!1}let o=t.parent;for(;t.path.length+s.path.length;){if(t.isEqual(s))return!0;if(t.path.length>s.path.length){if(t.offset!==o.maxOffset)return!1;t.path=t.path.slice(0,-1),o=o.parent,t.offset++}else{if(0!==s.offset)return!1;s.path=s.path.slice(0,-1)}}throw new Error("unreachable code")}hasSameParentAs(e){if(this.root!==e.root)return!1;const t=this.getParentPath(),s=e.getParentPath();return"same"==(0,r.Z)(t,s)}getTransformedByOperation(e){let t;switch(e.type){case"insert":t=this._getTransformedByInsertOperation(e);break;case"move":case"remove":case"reinsert":t=this._getTransformedByMoveOperation(e);break;case"split":t=this._getTransformedBySplitOperation(e);break;case"merge":t=this._getTransformedByMergeOperation(e);break;default:t=a._createAt(this)}return t}_getTransformedByInsertOperation(e){return this._getTransformedByInsertion(e.position,e.howMany)}_getTransformedByMoveOperation(e){return this._getTransformedByMove(e.sourcePosition,e.targetPosition,e.howMany)}_getTransformedBySplitOperation(e){const t=e.movedRange;return t.containsPosition(this)||t.start.isEqual(this)&&"toNext"==this.stickiness?this._getCombined(e.splitPosition,e.moveTargetPosition):e.graveyardPosition?this._getTransformedByMove(e.graveyardPosition,e.insertionPosition,1):this._getTransformedByInsertion(e.insertionPosition,1)}_getTransformedByMergeOperation(e){const t=e.movedRange;let s;return t.containsPosition(this)||t.start.isEqual(this)?(s=this._getCombined(e.sourcePosition,e.targetPosition),e.sourcePosition.isBefore(e.targetPosition)&&(s=s._getTransformedByDeletion(e.deletionPosition,1))):s=this.isEqual(e.deletionPosition)?a._createAt(e.deletionPosition):this._getTransformedByMove(e.deletionPosition,e.graveyardPosition,1),s}_getTransformedByDeletion(e,t){const s=a._createAt(this);if(this.root!=e.root)return s;if("same"==(0,r.Z)(e.getParentPath(),this.getParentPath())){if(e.offset<this.offset){if(e.offset+t>this.offset)return null;s.offset-=t}}else if("prefix"==(0,r.Z)(e.getParentPath(),this.getParentPath())){const o=e.path.length-1;if(e.offset<=this.path[o]){if(e.offset+t>this.path[o])return null;s.path[o]-=t}}return s}_getTransformedByInsertion(e,t){const s=a._createAt(this);if(this.root!=e.root)return s;if("same"==(0,r.Z)(e.getParentPath(),this.getParentPath()))(e.offset<this.offset||e.offset==this.offset&&"toPrevious"!=this.stickiness)&&(s.offset+=t);else if("prefix"==(0,r.Z)(e.getParentPath(),this.getParentPath())){const o=e.path.length-1;e.offset<=this.path[o]&&(s.path[o]+=t)}return s}_getTransformedByMove(e,t,s){if(t=t._getTransformedByDeletion(e,s),e.isEqual(t))return a._createAt(this);const o=this._getTransformedByDeletion(e,s);return null===o||e.isEqual(this)&&"toNext"==this.stickiness||e.getShiftedBy(s).isEqual(this)&&"toPrevious"==this.stickiness?this._getCombined(e,t):o._getTransformedByInsertion(t,s)}_getCombined(e,t){const s=e.path.length-1,o=a._createAt(t);return o.stickiness=this.stickiness,o.offset=o.offset+this.path[s]-e.offset,o.path=[...o.path,...this.path.slice(s+1)],o}toJSON(){return{root:this.root.toJSON(),path:Array.from(this.path),stickiness:this.stickiness}}clone(){return new this.constructor(this.root,this.path,this.stickiness)}static _createAt(e,t,s="toNone"){if(e instanceof a)return new a(e.root,e.path,e.stickiness);{const o=e;if("end"==t)t=o.maxOffset;else{if("before"==t)return this._createBefore(o,s);if("after"==t)return this._createAfter(o,s);if(0!==t&&!t)throw new n.ZP("model-createpositionat-offset-required",[this,e])}if(!o.is("element")&&!o.is("documentFragment"))throw new n.ZP("model-position-parent-incorrect",[this,e]);const i=o.getPath();return i.push(t),new this(o.root,i,s)}}static _createAfter(e,t){if(!e.parent)throw new n.ZP("model-position-after-root",[this,e],{root:e});return this._createAt(e.parent,e.endOffset,t)}static _createBefore(e,t){if(!e.parent)throw new n.ZP("model-position-before-root",e,{root:e});return this._createAt(e.parent,e.startOffset,t)}static fromJSON(e,t){if("$graveyard"===e.root){const s=new a(t.graveyard,e.path);return s.stickiness=e.stickiness,s}if(!t.getRoot(e.root))throw new n.ZP("model-position-fromjson-no-root",t,{rootName:e.root});return new a(t.getRoot(e.root),e.path,e.stickiness)}}function c(e,t){const s=t.getChild(t.offsetToIndex(e.offset));return s&&s.is("$text")&&s.startOffset<e.offset?s:null}function l(e,t,s){return null!==s?null:t.getChild(t.offsetToIndex(e.offset))}function d(e,t,s){return null!==s?null:t.getChild(t.offsetToIndex(e.offset)-1)}a.prototype.is=function(e){return"position"===e||"model:position"===e}},"./packages/ckeditor5-engine/src/model/range.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/model/position.ts"),r=s("./packages/ckeditor5-engine/src/model/treewalker.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),a=s("./packages/ckeditor5-utils/src/comparearrays.ts");class c extends o.Z{constructor(e,t){super(),this.start=i.ZP._createAt(e),this.end=t?i.ZP._createAt(t):i.ZP._createAt(e),this.start.stickiness=this.isCollapsed?"toNone":"toNext",this.end.stickiness=this.isCollapsed?"toNone":"toPrevious"}*[Symbol.iterator](){yield*new r.Z({boundaries:this,ignoreElementEnd:!0})}get isCollapsed(){return this.start.isEqual(this.end)}get isFlat(){const e=this.start.getParentPath(),t=this.end.getParentPath();return"same"==(0,a.Z)(e,t)}get root(){return this.start.root}containsPosition(e){return e.isAfter(this.start)&&e.isBefore(this.end)}containsRange(e,t=!1){e.isCollapsed&&(t=!1);const s=this.containsPosition(e.start)||t&&this.start.isEqual(e.start),o=this.containsPosition(e.end)||t&&this.end.isEqual(e.end);return s&&o}containsItem(e){const t=i.ZP._createBefore(e);return this.containsPosition(t)||this.start.isEqual(t)}isEqual(e){return this.start.isEqual(e.start)&&this.end.isEqual(e.end)}isIntersecting(e){return this.start.isBefore(e.end)&&this.end.isAfter(e.start)}getDifference(e){const t=[];return this.isIntersecting(e)?(this.containsPosition(e.start)&&t.push(new c(this.start,e.start)),this.containsPosition(e.end)&&t.push(new c(e.end,this.end))):t.push(new c(this.start,this.end)),t}getIntersection(e){if(this.isIntersecting(e)){let t=this.start,s=this.end;return this.containsPosition(e.start)&&(t=e.start),this.containsPosition(e.end)&&(s=e.end),new c(t,s)}return null}getJoined(e,t=!1){let s=this.isIntersecting(e);if(s||(s=this.start.isBefore(e.start)?t?this.end.isTouching(e.start):this.end.isEqual(e.start):t?e.end.isTouching(this.start):e.end.isEqual(this.start)),!s)return null;let o=this.start,i=this.end;return e.start.isBefore(o)&&(o=e.start),e.end.isAfter(i)&&(i=e.end),new c(o,i)}getMinimalFlatRanges(){const e=[],t=this.start.getCommonPath(this.end).length,s=i.ZP._createAt(this.start);let o=s.parent;for(;s.path.length>t+1;){const t=o.maxOffset-s.offset;0!==t&&e.push(new c(s,s.getShiftedBy(t))),s.path=s.path.slice(0,-1),s.offset++,o=o.parent}for(;s.path.length<=this.end.path.length;){const t=this.end.path[s.path.length-1],o=t-s.offset;0!==o&&e.push(new c(s,s.getShiftedBy(o))),s.offset=t,s.path.push(0)}return e}getWalker(e={}){return e.boundaries=this,new r.Z(e)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new r.Z(e);for(const e of t)yield e.item}*getPositions(e={}){e.boundaries=this;const t=new r.Z(e);yield t.position;for(const e of t)yield e.nextPosition}getTransformedByOperation(e){switch(e.type){case"insert":return this._getTransformedByInsertOperation(e);case"move":case"remove":case"reinsert":return this._getTransformedByMoveOperation(e);case"split":return[this._getTransformedBySplitOperation(e)];case"merge":return[this._getTransformedByMergeOperation(e)]}return[new c(this.start,this.end)]}getTransformedByOperations(e){const t=[new c(this.start,this.end)];for(const s of e)for(let e=0;e<t.length;e++){const o=t[e].getTransformedByOperation(s);t.splice(e,1,...o),e+=o.length-1}for(let e=0;e<t.length;e++){const s=t[e];for(let o=e+1;o<t.length;o++){const e=t[o];(s.containsRange(e)||e.containsRange(s)||s.isEqual(e))&&t.splice(o,1)}}return t}getCommonAncestor(){return this.start.getCommonAncestor(this.end)}getContainedElement(){if(this.isCollapsed)return null;const e=this.start.nodeAfter,t=this.end.nodeBefore;return e&&e.is("element")&&e===t?e:null}toJSON(){return{start:this.start.toJSON(),end:this.end.toJSON()}}clone(){return new this.constructor(this.start,this.end)}_getTransformedByInsertOperation(e,t=!1){return this._getTransformedByInsertion(e.position,e.howMany,t)}_getTransformedByMoveOperation(e,t=!1){const s=e.sourcePosition,o=e.howMany,i=e.targetPosition;return this._getTransformedByMove(s,i,o,t)}_getTransformedBySplitOperation(e){const t=this.start._getTransformedBySplitOperation(e);let s=this.end._getTransformedBySplitOperation(e);return this.end.isEqual(e.insertionPosition)&&(s=this.end.getShiftedBy(1)),t.root!=s.root&&(s=this.end.getShiftedBy(-1)),new c(t,s)}_getTransformedByMergeOperation(e){if(this.start.isEqual(e.targetPosition)&&this.end.isEqual(e.deletionPosition))return new c(this.start);let t=this.start._getTransformedByMergeOperation(e),s=this.end._getTransformedByMergeOperation(e);return t.root!=s.root&&(s=this.end.getShiftedBy(-1)),t.isAfter(s)?(e.sourcePosition.isBefore(e.targetPosition)?(t=i.ZP._createAt(s),t.offset=0):(e.deletionPosition.isEqual(t)||(s=e.deletionPosition),t=e.targetPosition),new c(t,s)):new c(t,s)}_getTransformedByInsertion(e,t,s=!1){if(s&&this.containsPosition(e))return[new c(this.start,e),new c(e.getShiftedBy(t),this.end._getTransformedByInsertion(e,t))];{const s=new c(this.start,this.end);return s.start=s.start._getTransformedByInsertion(e,t),s.end=s.end._getTransformedByInsertion(e,t),[s]}}_getTransformedByMove(e,t,s,o=!1){if(this.isCollapsed){const o=this.start._getTransformedByMove(e,t,s);return[new c(o)]}const i=c._createFromPositionAndShift(e,s),r=t._getTransformedByDeletion(e,s);if(this.containsPosition(t)&&!o&&(i.containsPosition(this.start)||i.containsPosition(this.end))){const o=this.start._getTransformedByMove(e,t,s),i=this.end._getTransformedByMove(e,t,s);return[new c(o,i)]}let n;const a=this.getDifference(i);let l=null;const d=this.getIntersection(i);if(1==a.length?l=new c(a[0].start._getTransformedByDeletion(e,s),a[0].end._getTransformedByDeletion(e,s)):2==a.length&&(l=new c(this.start,this.end._getTransformedByDeletion(e,s))),n=l?l._getTransformedByInsertion(r,s,null!==d||o):[],d){const e=new c(d.start._getCombined(i.start,r),d.end._getCombined(i.start,r));2==n.length?n.splice(1,0,e):n.push(e)}return n}_getTransformedByDeletion(e,t){let s=this.start._getTransformedByDeletion(e,t),o=this.end._getTransformedByDeletion(e,t);return null==s&&null==o?null:(null==s&&(s=e),null==o&&(o=e),new c(s,o))}static _createFromPositionAndShift(e,t){const s=e,o=e.getShiftedBy(t);return t>0?new this(s,o):new this(o,s)}static _createIn(e){return new this(i.ZP._createAt(e,0),i.ZP._createAt(e,e.maxOffset))}static _createOn(e){return this._createFromPositionAndShift(i.ZP._createBefore(e),e.offsetSize)}static _createFromRanges(e){if(0===e.length)throw new n.ZP("range-create-from-ranges-empty-array",null);if(1==e.length)return e[0].clone();const t=e[0];e.sort(((e,t)=>e.start.isAfter(t.start)?1:-1));const s=e.indexOf(t),o=new this(t.start,t.end);if(s>0)for(let t=s-1;e[t].end.isEqual(o.start);t++)o.start=i.ZP._createAt(e[t].start);for(let t=s+1;t<e.length&&e[t].start.isEqual(o.end);t++)o.end=i.ZP._createAt(e[t].end);return o}static fromJSON(e,t){return new this(i.ZP.fromJSON(e.start,t),i.ZP.fromJSON(e.end,t))}}c.prototype.is=function(e){return"range"===e||"model:range"===e}},"./packages/ckeditor5-engine/src/model/schema.ts":(e,t,s)=>{"use strict";s.d(t,{G:()=>h,Z:()=>d});var o=s("./packages/ckeditor5-engine/src/model/element.ts"),i=s("./packages/ckeditor5-engine/src/model/position.ts"),r=s("./packages/ckeditor5-engine/src/model/range.ts"),n=s("./packages/ckeditor5-engine/src/model/text.ts"),a=s("./packages/ckeditor5-engine/src/model/treewalker.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),l=s("./packages/ckeditor5-utils/src/observablemixin.ts");class d extends l.y{constructor(){super(),this._sourceDefinitions={},this._attributeProperties={},this.decorate("checkChild"),this.decorate("checkAttribute"),this.on("checkAttribute",((e,t)=>{t[0]=new h(t[0])}),{priority:"highest"}),this.on("checkChild",((e,t)=>{t[0]=new h(t[0]),t[1]=this.getDefinition(t[1])}),{priority:"highest"})}register(e,t){if(this._sourceDefinitions[e])throw new c.ZP("schema-cannot-register-item-twice",this,{itemName:e});this._sourceDefinitions[e]=[Object.assign({},t)],this._clearCache()}extend(e,t){if(!this._sourceDefinitions[e])throw new c.ZP("schema-cannot-extend-missing-item",this,{itemName:e});this._sourceDefinitions[e].push(Object.assign({},t)),this._clearCache()}getDefinitions(){return this._compiledDefinitions||this._compile(),this._compiledDefinitions}getDefinition(e){let t;return t="string"==typeof e?e:"is"in e&&(e.is("$text")||e.is("$textProxy"))?"$text":e.name,this.getDefinitions()[t]}isRegistered(e){return!!this.getDefinition(e)}isBlock(e){const t=this.getDefinition(e);return!(!t||!t.isBlock)}isLimit(e){const t=this.getDefinition(e);return!!t&&!(!t.isLimit&&!t.isObject)}isObject(e){const t=this.getDefinition(e);return!!t&&!!(t.isObject||t.isLimit&&t.isSelectable&&t.isContent)}isInline(e){const t=this.getDefinition(e);return!(!t||!t.isInline)}isSelectable(e){const t=this.getDefinition(e);return!!t&&!(!t.isSelectable&&!t.isObject)}isContent(e){const t=this.getDefinition(e);return!!t&&!(!t.isContent&&!t.isObject)}checkChild(e,t){return!!t&&this._checkContextMatch(t,e)}checkAttribute(e,t){const s=this.getDefinition(e.last);return!!s&&s.allowAttributes.includes(t)}checkMerge(e,t){if(e instanceof i.ZP){const t=e.nodeBefore,s=e.nodeAfter;if(!(t instanceof o.Z))throw new c.ZP("schema-check-merge-no-element-before",this);if(!(s instanceof o.Z))throw new c.ZP("schema-check-merge-no-element-after",this);return this.checkMerge(t,s)}for(const s of t.getChildren())if(!this.checkChild(e,s))return!1;return!0}addChildCheck(e){this.on("checkChild",((t,[s,o])=>{if(!o)return;const i=e(s,o);"boolean"==typeof i&&(t.stop(),t.return=i)}),{priority:"high"})}addAttributeCheck(e){this.on("checkAttribute",((t,[s,o])=>{const i=e(s,o);"boolean"==typeof i&&(t.stop(),t.return=i)}),{priority:"high"})}setAttributeProperties(e,t){this._attributeProperties[e]=Object.assign(this.getAttributeProperties(e),t)}getAttributeProperties(e){return this._attributeProperties[e]||{}}getLimitElement(e){let t;if(e instanceof i.ZP)t=e.parent;else{t=(e instanceof r.Z?[e]:Array.from(e.getRanges())).reduce(((e,t)=>{const s=t.getCommonAncestor();return e?e.getCommonAncestor(s,{includeSelf:!0}):s}),null)}for(;!this.isLimit(t)&&t.parent;)t=t.parent;return t}checkAttributeInSelection(e,t){if(e.isCollapsed){const s=[...e.getFirstPosition().getAncestors(),new n.Z("",e.getAttributes())];return this.checkAttribute(s,t)}{const s=e.getRanges();for(const e of s)for(const s of e)if(this.checkAttribute(s.item,t))return!0}return!1}*getValidRanges(e,t){e=function*(e){for(const t of e)yield*t.getMinimalFlatRanges()}(e);for(const s of e)yield*this._getValidRangesForRange(s,t)}getNearestSelectionRange(e,t="both"){if(this.checkChild(e,"$text"))return new r.Z(e);let s,o;const i=e.getAncestors().reverse().find((e=>this.isLimit(e)))||e.root;"both"!=t&&"backward"!=t||(s=new a.Z({boundaries:r.Z._createIn(i),startPosition:e,direction:"backward"})),"both"!=t&&"forward"!=t||(o=new a.Z({boundaries:r.Z._createIn(i),startPosition:e}));for(const e of function*(e,t){let s=!1;for(;!s;){if(s=!0,e){const t=e.next();t.done||(s=!1,yield{walker:e,value:t.value})}if(t){const e=t.next();e.done||(s=!1,yield{walker:t,value:e.value})}}}(s,o)){const t=e.walker==s?"elementEnd":"elementStart",o=e.value;if(o.type==t&&this.isObject(o.item))return r.Z._createOn(o.item);if(this.checkChild(o.nextPosition,"$text"))return new r.Z(o.nextPosition)}return null}findAllowedParent(e,t){let s=e.parent;for(;s;){if(this.checkChild(s,t))return s;if(this.isLimit(s))return null;s=s.parent}return null}setAllowedAttributes(e,t,s){const o=s.model;for(const[i,r]of Object.entries(t))o.schema.checkAttribute(e,i)&&s.setAttribute(i,r,e)}removeDisallowedAttributes(e,t){for(const s of e)if(s.is("$text"))P(this,s,t);else{const e=r.Z._createIn(s).getPositions();for(const s of e){P(this,s.nodeBefore||s.parent,t)}}}getAttributesWithProperty(e,t,s){const o={};for(const[i,r]of e.getAttributes()){const e=this.getAttributeProperties(i);void 0!==e[t]&&(void 0!==s&&s!==e[t]||(o[i]=r))}return o}createContext(e){return new h(e)}_clearCache(){this._compiledDefinitions=null}_compile(){const e={},t=this._sourceDefinitions,s=Object.keys(t);for(const o of s)e[o]=u(t[o],o);for(const t of s)p(e,t);for(const t of s)g(e,t);for(const t of s)f(e,t);for(const t of s)m(e,t),k(e,t);for(const t of s)b(e,t),_(e,t),w(e,t);this._compiledDefinitions=e}_checkContextMatch(e,t,s=t.length-1){const o=t.getItem(s);if(e.allowIn.includes(o.name)){if(0==s)return!0;{const e=this.getDefinition(o);return this._checkContextMatch(e,t,s-1)}}return!1}*_getValidRangesForRange(e,t){let s=e.start,o=e.start;for(const n of e.getItems({shallow:!0}))n.is("element")&&(yield*this._getValidRangesForRange(r.Z._createIn(n),t)),this.checkAttribute(n,t)||(s.isEqual(o)||(yield new r.Z(s,o)),s=i.ZP._createAfter(n)),o=i.ZP._createAfter(n);s.isEqual(o)||(yield new r.Z(s,o))}}class h{constructor(e){if(e instanceof h)return e;let t;t="string"==typeof e?[e]:Array.isArray(e)?e:e.getAncestors({includeSelf:!0}),this._items=t.map(Z)}get length(){return this._items.length}get last(){return this._items[this._items.length-1]}[Symbol.iterator](){return this._items[Symbol.iterator]()}push(e){const t=new h([e]);return t._items=[...this._items,...t._items],t}getItem(e){return this._items[e]}*getNames(){yield*this._items.map((e=>e.name))}endsWith(e){return Array.from(this.getNames()).join(" ").endsWith(e)}startsWith(e){return Array.from(this.getNames()).join(" ").startsWith(e)}}function u(e,t){const s={name:t,allowIn:[],allowContentOf:[],allowWhere:[],allowAttributes:[],allowAttributesOf:[],allowChildren:[],inheritTypesFrom:[]};return function(e,t){for(const s of e){const e=Object.keys(s).filter((e=>e.startsWith("is")));for(const o of e)t[o]=!!s[o]}}(e,s),v(e,s,"allowIn"),v(e,s,"allowContentOf"),v(e,s,"allowWhere"),v(e,s,"allowAttributes"),v(e,s,"allowAttributesOf"),v(e,s,"allowChildren"),v(e,s,"inheritTypesFrom"),function(e,t){for(const s of e){const e=s.inheritAllFrom;e&&(t.allowContentOf.push(e),t.allowWhere.push(e),t.allowAttributesOf.push(e),t.inheritTypesFrom.push(e))}}(e,s),s}function p(e,t){const s=e[t];for(const o of s.allowChildren){const s=e[o];s&&s.allowIn.push(t)}s.allowChildren.length=0}function g(e,t){for(const s of e[t].allowContentOf)if(e[s]){y(e,s).forEach((e=>{e.allowIn.push(t)}))}delete e[t].allowContentOf}function f(e,t){for(const s of e[t].allowWhere){const o=e[s];if(o){const s=o.allowIn;e[t].allowIn.push(...s)}}delete e[t].allowWhere}function m(e,t){for(const s of e[t].allowAttributesOf){const o=e[s];if(o){const s=o.allowAttributes;e[t].allowAttributes.push(...s)}}delete e[t].allowAttributesOf}function k(e,t){const s=e[t];for(const t of s.inheritTypesFrom){const o=e[t];if(o){const e=Object.keys(o).filter((e=>e.startsWith("is")));for(const t of e)t in s||(s[t]=o[t])}}delete s.inheritTypesFrom}function b(e,t){const s=e[t],o=s.allowIn.filter((t=>e[t]));s.allowIn=Array.from(new Set(o))}function _(e,t){const s=e[t];for(const o of s.allowIn){e[o].allowChildren.push(t)}}function w(e,t){const s=e[t];s.allowAttributes=Array.from(new Set(s.allowAttributes))}function v(e,t,s){for(const o of e){const e=o[s];"string"==typeof e?t[s].push(e):Array.isArray(e)&&t[s].push(...e)}}function y(e,t){const s=e[t];return(o=e,Object.keys(o).map((e=>o[e]))).filter((e=>e.allowIn.includes(s.name)));var o}function Z(e){return"string"==typeof e||e.is("documentFragment")?{name:"string"==typeof e?e:"$documentFragment",*getAttributeKeys(){},getAttribute(){}}:{name:e.is("element")?e.name:"$text",*getAttributeKeys(){yield*e.getAttributeKeys()},getAttribute:t=>e.getAttribute(t)}}function P(e,t,s){for(const o of t.getAttributeKeys())e.checkAttribute(t,o)||s.removeAttribute(o,t)}},"./packages/ckeditor5-engine/src/model/selection.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/model/node.ts"),r=s("./packages/ckeditor5-engine/src/model/position.ts"),n=s("./packages/ckeditor5-engine/src/model/range.ts"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),c=s("./packages/ckeditor5-utils/src/emittermixin.ts"),l=s("./packages/ckeditor5-utils/src/isiterable.ts");class d extends((0,c.ZP)(o.Z)){constructor(...e){super(),this._lastRangeBackward=!1,this._ranges=[],this._attrs=new Map,e.length&&this.setTo(...e)}get anchor(){if(this._ranges.length>0){const e=this._ranges[this._ranges.length-1];return this._lastRangeBackward?e.end:e.start}return null}get focus(){if(this._ranges.length>0){const e=this._ranges[this._ranges.length-1];return this._lastRangeBackward?e.start:e.end}return null}get isCollapsed(){return 1===this._ranges.length&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}isEqual(e){if(this.rangeCount!=e.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(e.anchor)||!this.focus.isEqual(e.focus))return!1;for(const t of this._ranges){let s=!1;for(const o of e._ranges)if(t.isEqual(o)){s=!0;break}if(!s)return!1}return!0}*getRanges(){for(const e of this._ranges)yield new n.Z(e.start,e.end)}getFirstRange(){let e=null;for(const t of this._ranges)e&&!t.start.isBefore(e.start)||(e=t);return e?new n.Z(e.start,e.end):null}getLastRange(){let e=null;for(const t of this._ranges)e&&!t.end.isAfter(e.end)||(e=t);return e?new n.Z(e.start,e.end):null}getFirstPosition(){const e=this.getFirstRange();return e?e.start.clone():null}getLastPosition(){const e=this.getLastRange();return e?e.end.clone():null}setTo(...e){let[t,s,o]=e;if("object"==typeof s&&(o=s,s=void 0),null===t)this._setRanges([]);else if(t instanceof d)this._setRanges(t.getRanges(),t.isBackward);else if(t&&"function"==typeof t.getRanges)this._setRanges(t.getRanges(),t.isBackward);else if(t instanceof n.Z)this._setRanges([t],!!o&&!!o.backward);else if(t instanceof r.ZP)this._setRanges([new n.Z(t)]);else if(t instanceof i.Z){const e=!!o&&!!o.backward;let i;if("in"==s)i=n.Z._createIn(t);else if("on"==s)i=n.Z._createOn(t);else{if(void 0===s)throw new a.ZP("model-selection-setto-required-second-parameter",[this,t]);i=new n.Z(r.ZP._createAt(t,s))}this._setRanges([i],e)}else{if(!(0,l.Z)(t))throw new a.ZP("model-selection-setto-not-selectable",[this,t]);this._setRanges(t,o&&!!o.backward)}}_setRanges(e,t=!1){const s=Array.from(e),o=s.some((t=>{if(!(t instanceof n.Z))throw new a.ZP("model-selection-set-ranges-not-range",[this,e]);return this._ranges.every((e=>!e.isEqual(t)))}));(s.length!==this._ranges.length||o)&&(this._replaceAllRanges(s),this._lastRangeBackward=!!t,this.fire("change:range",{directChange:!0}))}setFocus(e,t){if(null===this.anchor)throw new a.ZP("model-selection-setfocus-no-ranges",[this,e]);const s=r.ZP._createAt(e,t);if("same"==s.compareWith(this.focus))return;const o=this.anchor;this._ranges.length&&this._popRange(),"before"==s.compareWith(o)?(this._pushRange(new n.Z(s,o)),this._lastRangeBackward=!0):(this._pushRange(new n.Z(o,s)),this._lastRangeBackward=!1),this.fire("change:range",{directChange:!0})}getAttribute(e){return this._attrs.get(e)}getAttributes(){return this._attrs.entries()}getAttributeKeys(){return this._attrs.keys()}hasAttribute(e){return this._attrs.has(e)}removeAttribute(e){this.hasAttribute(e)&&(this._attrs.delete(e),this.fire("change:attribute",{attributeKeys:[e],directChange:!0}))}setAttribute(e,t){this.getAttribute(e)!==t&&(this._attrs.set(e,t),this.fire("change:attribute",{attributeKeys:[e],directChange:!0}))}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}*getSelectedBlocks(){const e=new WeakSet;for(const t of this.getRanges()){const s=p(t.start,e);s&&g(s,t)&&(yield s);for(const s of t.getWalker()){const o=s.item;"elementEnd"==s.type&&u(o,e,t)&&(yield o)}const o=p(t.end,e);o&&!t.end.isTouching(r.ZP._createAt(o,0))&&g(o,t)&&(yield o)}}containsEntireContent(e=this.anchor.root){const t=r.ZP._createAt(e,0),s=r.ZP._createAt(e,"end");return t.isTouching(this.getFirstPosition())&&s.isTouching(this.getLastPosition())}_pushRange(e){this._checkRange(e),this._ranges.push(new n.Z(e.start,e.end))}_checkRange(e){for(let t=0;t<this._ranges.length;t++)if(e.isIntersecting(this._ranges[t]))throw new a.ZP("model-selection-range-intersects",[this,e],{addedRange:e,intersectingRange:this._ranges[t]})}_replaceAllRanges(e){this._removeAllRanges();for(const t of e)this._pushRange(t)}_removeAllRanges(){for(;this._ranges.length>0;)this._popRange()}_popRange(){this._ranges.pop()}}function h(e,t){return!t.has(e)&&(t.add(e),e.root.document.model.schema.isBlock(e)&&e.parent)}function u(e,t,s){return h(e,t)&&g(e,s)}function p(e,t){const s=e.parent.root.document.model.schema,o=e.parent.getAncestors({parentFirst:!0,includeSelf:!0});let i=!1;const r=o.find((e=>!i&&(i=s.isLimit(e),!i&&h(e,t))));return o.forEach((e=>t.add(e))),r}function g(e,t){const s=function(e){const t=e.root.document.model.schema;let s=e.parent;for(;s;){if(t.isBlock(s))return s;s=s.parent}}(e);if(!s)return!0;return!t.containsRange(n.Z._createOn(s),!0)}d.prototype.is=function(e){return"selection"===e||"model:selection"===e}},"./packages/ckeditor5-engine/src/model/text.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-engine/src/model/node.ts");class i extends o.Z{constructor(e,t){super(t),this._data=e||""}get offsetSize(){return this.data.length}get data(){return this._data}toJSON(){const e=super.toJSON();return e.data=this.data,e}_clone(){return new i(this.data,this.getAttributes())}static fromJSON(e){return new i(e.data,e.attributes)}}i.prototype.is=function(e){return"$text"===e||"model:$text"===e||"text"===e||"model:text"===e||"node"===e||"model:node"===e}},"./packages/ckeditor5-engine/src/model/textproxy.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/model/typecheckable.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(e,t,s){if(super(),this.textNode=e,t<0||t>e.offsetSize)throw new i.ZP("model-textproxy-wrong-offsetintext",this);if(s<0||t+s>e.offsetSize)throw new i.ZP("model-textproxy-wrong-length",this);this.data=e.data.substring(t,t+s),this.offsetInText=t}get startOffset(){return null!==this.textNode.startOffset?this.textNode.startOffset+this.offsetInText:null}get offsetSize(){return this.data.length}get endOffset(){return null!==this.startOffset?this.startOffset+this.offsetSize:null}get isPartial(){return this.offsetSize!==this.textNode.offsetSize}get parent(){return this.textNode.parent}get root(){return this.textNode.root}getPath(){const e=this.textNode.getPath();return e.length>0&&(e[e.length-1]+=this.offsetInText),e}getAncestors(e={}){const t=[];let s=e.includeSelf?this:this.parent;for(;s;)t[e.parentFirst?"push":"unshift"](s),s=s.parent;return t}hasAttribute(e){return this.textNode.hasAttribute(e)}getAttribute(e){return this.textNode.getAttribute(e)}getAttributes(){return this.textNode.getAttributes()}getAttributeKeys(){return this.textNode.getAttributeKeys()}}r.prototype.is=function(e){return"$textProxy"===e||"model:$textProxy"===e||"textProxy"===e||"model:textProxy"===e}},"./packages/ckeditor5-engine/src/model/treewalker.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/model/element.ts"),i=s("./packages/ckeditor5-engine/src/model/position.ts"),r=s("./packages/ckeditor5-engine/src/model/text.ts"),n=s("./packages/ckeditor5-engine/src/model/textproxy.ts"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class c{constructor(e={}){if(!e.boundaries&&!e.startPosition)throw new a.ZP("model-tree-walker-no-start-position",null);const t=e.direction||"forward";if("forward"!=t&&"backward"!=t)throw new a.ZP("model-tree-walker-unknown-direction",e,{direction:t});this.direction=t,this.boundaries=e.boundaries||null,e.startPosition?this.position=e.startPosition.clone():this.position=i.ZP._createAt(this.boundaries["backward"==this.direction?"end":"start"]),this.position.stickiness="toNone",this.singleCharacters=!!e.singleCharacters,this.shallow=!!e.shallow,this.ignoreElementEnd=!!e.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null,this._visitedParent=this.position.parent}[Symbol.iterator](){return this}skip(e){let t,s,o,i;do{o=this.position,i=this._visitedParent,({done:t,value:s}=this.next())}while(!t&&e(s));t||(this.position=o,this._visitedParent=i)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){const e=this.position,t=this.position.clone(),s=this._visitedParent;if(null===s.parent&&t.offset===s.maxOffset)return{done:!0,value:void 0};if(s===this._boundaryEndParent&&t.offset==this.boundaries.end.offset)return{done:!0,value:void 0};const a=(0,i.Rt)(t,s),c=a||(0,i.Ux)(t,s,a);if(c instanceof o.Z)return this.shallow?t.offset++:(t.path.push(0),this._visitedParent=c),this.position=t,l("elementStart",c,e,t,1);if(c instanceof r.Z){let o;if(this.singleCharacters)o=1;else{let e=c.endOffset;this._boundaryEndParent==s&&this.boundaries.end.offset<e&&(e=this.boundaries.end.offset),o=e-t.offset}const i=t.offset-c.startOffset,r=new n.Z(c,i,o);return t.offset+=o,this.position=t,l("text",r,e,t,o)}return t.path.pop(),t.offset++,this.position=t,this._visitedParent=s.parent,this.ignoreElementEnd?this._next():l("elementEnd",s,e,t)}_previous(){const e=this.position,t=this.position.clone(),s=this._visitedParent;if(null===s.parent&&0===t.offset)return{done:!0,value:void 0};if(s==this._boundaryStartParent&&t.offset==this.boundaries.start.offset)return{done:!0,value:void 0};const a=t.parent,c=(0,i.Rt)(t,a),d=c||(0,i.YV)(t,a,c);if(d instanceof o.Z)return t.offset--,this.shallow?(this.position=t,l("elementStart",d,e,t,1)):(t.path.push(d.maxOffset),this.position=t,this._visitedParent=d,this.ignoreElementEnd?this._previous():l("elementEnd",d,e,t));if(d instanceof r.Z){let o;if(this.singleCharacters)o=1;else{let e=d.startOffset;this._boundaryStartParent==s&&this.boundaries.start.offset>e&&(e=this.boundaries.start.offset),o=t.offset-e}const i=t.offset-d.startOffset,r=new n.Z(d,i-o,o);return t.offset-=o,this.position=t,l("text",r,e,t,o)}return t.path.pop(),this.position=t,this._visitedParent=s.parent,l("elementStart",s,e,t,1)}}function l(e,t,s,o,i){return{done:!1,value:{type:e,item:t,previousPosition:s,nextPosition:o,length:i}}}},"./packages/ckeditor5-engine/src/model/typecheckable.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{is(){throw new Error("is() method is abstract")}}},"./packages/ckeditor5-engine/src/model/utils/autoparagraphing.ts":(e,t,s)=>{"use strict";function o(e){const{schema:t,document:s}=e.model;for(const o of s.getRootNames()){const i=s.getRoot(o);if(i.isEmpty&&!t.checkChild(i,"$text")&&t.checkChild(i,"paragraph"))return e.insertElement("paragraph",i),!0}return!1}function i(e,t,s){const o=s.createContext(e);return!!s.checkChild(o,"paragraph")&&!!s.checkChild(o.push("paragraph"),t)}function r(e,t){const s=t.createElement("paragraph");return t.insert(s,e),t.createPositionAt(s,0)}s.d(t,{_m:()=>o,gg:()=>i,zX:()=>r})},"./packages/ckeditor5-engine/src/model/utils/findoptimalinsertionrange.ts":(e,t,s)=>{"use strict";s.d(t,{K:()=>i});var o=s("./packages/ckeditor5-utils/src/first.ts");function i(e,t,s="auto"){const i=e.getSelectedElement();if(i&&t.schema.isObject(i)&&!t.schema.isInline(i))return"before"==s||"after"==s?t.createRange(t.createPositionAt(i,s)):t.createRangeOn(i);const r=(0,o.Z)(e.getSelectedBlocks());if(!r)return t.createRange(e.focus);if(r.isEmpty)return t.createRange(t.createPositionAt(r,0));const n=t.createPositionAfter(r);return e.focus.isTouching(n)?t.createRange(n):t.createRange(t.createPositionBefore(r))}},"./packages/ckeditor5-engine/src/view/attributeelement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/view/element.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(...e){super(...e),this.getFillerOffset=n,this._priority=10,this._id=null,this._clonesGroup=null}get priority(){return this._priority}get id(){return this._id}getElementsWithSameId(){if(null===this.id)throw new i.ZP("attribute-element-get-elements-with-same-id-no-id",this);return new Set(this._clonesGroup)}isSimilar(e){return null!==this.id||null!==e.id?this.id===e.id:super.isSimilar(e)&&this.priority==e.priority}_clone(e=!1){const t=super._clone(e);return t._priority=this._priority,t._id=this._id,t}}function n(){if(a(this))return null;let e=this.parent;for(;e&&e.is("attributeElement");){if(a(e)>1)return null;e=e.parent}return!e||a(e)>1?null:this.childCount}function a(e){return Array.from(e.getChildren()).filter((e=>!e.is("uiElement"))).length}r.DEFAULT_PRIORITY=10,r.prototype.is=function(e,t){return t?t===this.name&&("attributeElement"===e||"view:attributeElement"===e||"element"===e||"view:element"===e):"attributeElement"===e||"view:attributeElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/containerelement.ts":(e,t,s)=>{"use strict";s.d(t,{Y:()=>r,Z:()=>i});var o=s("./packages/ckeditor5-engine/src/view/element.ts");class i extends o.Z{constructor(...e){super(...e),this.getFillerOffset=r}}function r(){const e=[...this.getChildren()],t=e[this.childCount-1];if(t&&t.is("element","br"))return this.childCount;for(const t of e)if(!t.is("uiElement"))return null;return this.childCount}i.prototype.is=function(e,t){return t?t===this.name&&("containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/document.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>k});var o=s("./packages/ckeditor5-engine/src/view/documentselection.ts"),i=s("./packages/ckeditor5-utils/src/collection.ts"),r=s("./packages/ckeditor5-utils/src/eventinfo.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),a=s("./packages/ckeditor5-utils/src/emittermixin.ts"),c=s("./packages/ckeditor5-utils/src/toarray.ts"),l=s("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.ts");const d=Symbol("bubbling contexts");function h(e){return class extends e{fire(e,...t){try{const s=e instanceof r.Z?e:new r.Z(this,e),o=f(this);if(!o.size)return;if(u(s,"capturing",this),p(o,"$capture",s,...t))return s.return;const i=s.startRange||this.selection.getFirstRange(),n=i?i.getContainedElement():null,a=!!n&&Boolean(g(o,n));let c=n||function(e){if(!e)return null;const t=e.start.parent,s=e.end.parent,o=t.getPath(),i=s.getPath();return o.length>i.length?t:s}(i);if(u(s,"atTarget",c),!a){if(p(o,"$text",s,...t))return s.return;u(s,"bubbling",c)}for(;c;){if(c.is("rootElement")){if(p(o,"$root",s,...t))return s.return}else if(c.is("element")&&p(o,c.name,s,...t))return s.return;if(p(o,c,s,...t))return s.return;c=c.parent,u(s,"bubbling",c)}return u(s,"bubbling",this),p(o,"$document",s,...t),s.return}catch(e){n.ZP.rethrowUnexpectedError(e,this)}}_addEventListener(e,t,s){const o=(0,c.Z)(s.context||"$document"),i=f(this);for(const r of o){let o=i.get(r);o||(o=new a.Q5,i.set(r,o)),this.listenTo(o,e,t,s)}}_removeEventListener(e,t){const s=f(this);for(const o of s.values())this.stopListening(o,e,t)}}}{const e=h(Object);["fire","_addEventListener","_removeEventListener"].forEach((t=>{h[t]=e.prototype[t]}))}function u(e,t,s){e instanceof l.Z&&(e._eventPhase=t,e._currentTarget=s)}function p(e,t,s,...o){const i="string"==typeof t?e.get(t):g(e,t);return!!i&&(i.fire(s,...o),s.stop.called)}function g(e,t){for(const[s,o]of e)if("function"==typeof s&&s(t))return o;return null}function f(e){return e[d]||(e[d]=new Map),e[d]}var m=s("./packages/ckeditor5-utils/src/observablemixin.ts");class k extends(h(m.y)){constructor(e){super(),this.selection=new o.Z,this.roots=new i.Z({idProperty:"rootName"}),this.stylesProcessor=e,this.set("isReadOnly",!1),this.set("isFocused",!1),this.set("isSelecting",!1),this.set("isComposing",!1),this._postFixers=new Set}getRoot(e="main"){return this.roots.get(e)}registerPostFixer(e){this._postFixers.add(e)}destroy(){this.roots.map((e=>e.destroy())),this.stopListening()}_callPostFixers(e){let t=!1;do{for(const s of this._postFixers)if(t=s(e),t)break}while(t)}}},"./packages/ckeditor5-engine/src/view/documentfragment.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/view/text.ts"),r=s("./packages/ckeditor5-engine/src/view/textproxy.ts"),n=s("./packages/ckeditor5-utils/src/isiterable.ts"),a=s("./packages/ckeditor5-utils/src/emittermixin.ts");class c extends((0,a.ZP)(o.Z)){constructor(e,t){super(),this.document=e,this._children=[],t&&this._insertChild(0,t)}[Symbol.iterator](){return this._children[Symbol.iterator]()}get childCount(){return this._children.length}get isEmpty(){return 0===this.childCount}get root(){return this}get parent(){return null}_appendChild(e){return this._insertChild(this.childCount,e)}getChild(e){return this._children[e]}getChildIndex(e){return this._children.indexOf(e)}getChildren(){return this._children[Symbol.iterator]()}_insertChild(e,t){this._fireChange("children",this);let s=0;const o=function(e,t){if("string"==typeof t)return[new i.Z(e,t)];(0,n.Z)(t)||(t=[t]);return Array.from(t).map((t=>"string"==typeof t?new i.Z(e,t):t instanceof r.Z?new i.Z(e,t.data):t))}(this.document,t);for(const t of o)null!==t.parent&&t._remove(),t.parent=this,this._children.splice(e,0,t),e++,s++;return s}_removeChildren(e,t=1){this._fireChange("children",this);for(let s=e;s<e+t;s++)this._children[s].parent=null;return this._children.splice(e,t)}_fireChange(e,t){this.fire("change:"+e,t)}}c.prototype.is=function(e){return"documentFragment"===e||"view:documentFragment"===e}},"./packages/ckeditor5-engine/src/view/documentselection.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/view/selection.ts"),r=s("./packages/ckeditor5-utils/src/emittermixin.ts");class n extends((0,r.ZP)(o.Z)){constructor(...e){super(),this._selection=new i.Z,this._selection.delegate("change").to(this),e.length&&this._selection.setTo(...e)}get isFake(){return this._selection.isFake}get fakeSelectionLabel(){return this._selection.fakeSelectionLabel}get anchor(){return this._selection.anchor}get focus(){return this._selection.focus}get isCollapsed(){return this._selection.isCollapsed}get rangeCount(){return this._selection.rangeCount}get isBackward(){return this._selection.isBackward}get editableElement(){return this._selection.editableElement}get _ranges(){return this._selection._ranges}*getRanges(){yield*this._selection.getRanges()}getFirstRange(){return this._selection.getFirstRange()}getLastRange(){return this._selection.getLastRange()}getFirstPosition(){return this._selection.getFirstPosition()}getLastPosition(){return this._selection.getLastPosition()}getSelectedElement(){return this._selection.getSelectedElement()}isEqual(e){return this._selection.isEqual(e)}isSimilar(e){return this._selection.isSimilar(e)}_setTo(...e){this._selection.setTo(...e)}_setFocus(e,t){this._selection.setFocus(e,t)}}n.prototype.is=function(e){return"selection"===e||"documentSelection"==e||"view:selection"==e||"view:documentSelection"==e}},"./packages/ckeditor5-engine/src/view/domconverter.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>P});var o=s("./packages/ckeditor5-engine/src/view/text.ts"),i=s("./packages/ckeditor5-engine/src/view/element.ts"),r=s("./packages/ckeditor5-engine/src/view/uielement.ts"),n=s("./packages/ckeditor5-engine/src/view/position.ts"),a=s("./packages/ckeditor5-engine/src/view/range.ts"),c=s("./packages/ckeditor5-engine/src/view/selection.ts"),l=s("./packages/ckeditor5-engine/src/view/documentfragment.ts"),d=s("./packages/ckeditor5-engine/src/view/treewalker.ts"),h=s("./packages/ckeditor5-engine/src/view/matcher.ts"),u=s("./packages/ckeditor5-engine/src/view/filler.ts"),p=s("./packages/ckeditor5-utils/src/dom/global.ts"),g=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");function f(e){let t=0;for(;e.previousSibling;)e=e.previousSibling,t++;return t}function m(e){const t=[];let s=e;for(;s&&s.nodeType!=Node.DOCUMENT_NODE;)t.unshift(s),s=s.parentNode;return t}var k=s("./packages/ckeditor5-utils/src/dom/istext.ts"),b=s("./packages/ckeditor5-utils/src/dom/iscomment.ts");const _=(0,u.yl)(p.Z.document),w=(0,u.N3)(p.Z.document),v=(0,u.PQ)(p.Z.document),y="data-ck-unsafe-attribute-",Z="data-ck-unsafe-element";class P{constructor(e,t={}){this.document=e,this.renderingMode=t.renderingMode||"editing",this.blockFillerMode=t.blockFillerMode||("editing"===this.renderingMode?"br":"nbsp"),this.preElements=["pre"],this.blockElements=["address","article","aside","blockquote","caption","center","dd","details","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","h1","h2","h3","h4","h5","h6","header","hgroup","legend","li","main","menu","nav","ol","p","pre","section","summary","table","tbody","td","tfoot","th","thead","tr","ul"],this.inlineObjectElements=["object","iframe","input","button","textarea","select","option","video","embed","audio","img","canvas"],this.unsafeElements=["script","style"],this._domDocument="editing"===this.renderingMode?p.Z.document:p.Z.document.implementation.createHTMLDocument(""),this._domToViewMapping=new WeakMap,this._viewToDomMapping=new WeakMap,this._fakeSelectionMapping=new WeakMap,this._rawContentElementMatcher=new h.Z,this._encounteredRawContentDomNodes=new WeakSet}bindFakeSelection(e,t){this._fakeSelectionMapping.set(e,new c.Z(t))}fakeSelectionToView(e){return this._fakeSelectionMapping.get(e)}bindElements(e,t){this._domToViewMapping.set(e,t),this._viewToDomMapping.set(t,e)}unbindDomElement(e){const t=this._domToViewMapping.get(e);if(t){this._domToViewMapping.delete(e),this._viewToDomMapping.delete(t);for(const t of Array.from(e.children))this.unbindDomElement(t)}}bindDocumentFragments(e,t){this._domToViewMapping.set(e,t),this._viewToDomMapping.set(t,e)}shouldRenderAttribute(e,t,s){return"data"===this.renderingMode||!(e=e.toLowerCase()).startsWith("on")&&(("srcdoc"!==e||!t.match(/\bon\S+\s*=|javascript:|<\s*\/*script/i))&&("img"===s&&("src"===e||"srcset"===e)||("source"===s&&"srcset"===e||!t.match(/^\s*(javascript:|data:(image\/svg|text\/x?html))/i))))}setContentOf(e,t){if("data"===this.renderingMode)return void(e.innerHTML=t);const s=(new DOMParser).parseFromString(t,"text/html"),o=s.createDocumentFragment(),i=s.body.childNodes;for(;i.length>0;)o.appendChild(i[0]);const r=s.createTreeWalker(o,NodeFilter.SHOW_ELEMENT),n=[];let a;for(;a=r.nextNode();)n.push(a);for(const e of n){for(const t of e.getAttributeNames())this.setDomElementAttribute(e,t,e.getAttribute(t));const t=e.tagName.toLowerCase();this._shouldRenameElement(t)&&(A(t),e.replaceWith(this._createReplacementDomElement(t,e)))}for(;e.firstChild;)e.firstChild.remove();e.append(o)}viewToDom(e,t={}){if(e.is("$text")){const t=this._processDataFromViewText(e);return this._domDocument.createTextNode(t)}{if(this.mapViewToDom(e))return this.mapViewToDom(e);let s;if(e.is("documentFragment"))s=this._domDocument.createDocumentFragment(),t.bind&&this.bindDocumentFragments(s,e);else{if(e.is("uiElement"))return s="$comment"===e.name?this._domDocument.createComment(e.getCustomProperty("$rawContent")):e.render(this._domDocument,this),t.bind&&this.bindElements(s,e),s;this._shouldRenameElement(e.name)?(A(e.name),s=this._createReplacementDomElement(e.name)):s=e.hasAttribute("xmlns")?this._domDocument.createElementNS(e.getAttribute("xmlns"),e.name):this._domDocument.createElement(e.name),e.is("rawElement")&&e.render(s,this),t.bind&&this.bindElements(s,e);for(const t of e.getAttributeKeys())this.setDomElementAttribute(s,t,e.getAttribute(t),e)}if(!1!==t.withChildren)for(const o of this.viewChildrenToDom(e,t))s.appendChild(o);return s}}setDomElementAttribute(e,t,s,o){const i=this.shouldRenderAttribute(t,s,e.tagName.toLowerCase())||o&&o.shouldRenderUnsafeAttribute(t);i||(0,g.KE)("domconverter-unsafe-attribute-detected",{domElement:e,key:t,value:s}),e.hasAttribute(t)&&!i?e.removeAttribute(t):e.hasAttribute(y+t)&&i&&e.removeAttribute(y+t),e.setAttribute(i?t:y+t,s)}removeDomElementAttribute(e,t){t!=Z&&(e.removeAttribute(t),e.removeAttribute(y+t))}*viewChildrenToDom(e,t={}){const s=e.getFillerOffset&&e.getFillerOffset();let o=0;for(const i of e.getChildren()){s===o&&(yield this._getBlockFiller());const e=i.is("element")&&i.getCustomProperty("dataPipeline:transparentRendering");e&&"data"==this.renderingMode?yield*this.viewChildrenToDom(i,t):(e&&(0,g.KE)("domconverter-transparent-rendering-unsupported-in-editing-pipeline",{viewElement:i}),yield this.viewToDom(i,t)),o++}s===o&&(yield this._getBlockFiller())}viewRangeToDom(e){const t=this.viewPositionToDom(e.start),s=this.viewPositionToDom(e.end),o=this._domDocument.createRange();return o.setStart(t.parent,t.offset),o.setEnd(s.parent,s.offset),o}viewPositionToDom(e){const t=e.parent;if(t.is("$text")){const s=this.findCorrespondingDomText(t);if(!s)return null;let o=e.offset;return(0,u.Sw)(s)&&(o+=u.b_),{parent:s,offset:o}}{let s,o,i;if(0===e.offset){if(s=this.mapViewToDom(t),!s)return null;i=s.childNodes[0]}else{const t=e.nodeBefore;if(o=t.is("$text")?this.findCorrespondingDomText(t):this.mapViewToDom(t),!o)return null;s=o.parentNode,i=o.nextSibling}if((0,k.Z)(i)&&(0,u.Sw)(i))return{parent:i,offset:u.b_};return{parent:s,offset:o?f(o)+1:0}}}domToView(e,t={}){if(this.isBlockFiller(e))return null;const s=this.getHostViewElement(e);if(s)return s;if((0,b.Z)(e)&&t.skipComments)return null;if((0,k.Z)(e)){if((0,u.Qh)(e))return null;{const t=this._processDataFromDomText(e);return""===t?null:new o.Z(this.document,t)}}{if(this.mapDomToView(e))return this.mapDomToView(e);let s;if(this.isDocumentFragment(e))s=new l.Z(this.document),t.bind&&this.bindDocumentFragments(e,s);else{s=this._createViewElement(e,t),t.bind&&this.bindElements(e,s);const o=e.attributes;if(o)for(let e=o.length,t=0;t<e;t++)s._setAttribute(o[t].name,o[t].value);if(this._isViewElementWithRawContent(s,t)||(0,b.Z)(e)){const t=(0,b.Z)(e)?e.data:e.innerHTML;return s._setCustomProperty("$rawContent",t),this._encounteredRawContentDomNodes.add(e),s}}if(!1!==t.withChildren)for(const o of this.domChildrenToView(e,t))s._appendChild(o);return s}}*domChildrenToView(e,t){for(let s=0;s<e.childNodes.length;s++){const o=e.childNodes[s],i=this.domToView(o,t);null!==i&&(yield i)}}domSelectionToView(e){if(1===e.rangeCount){let t=e.getRangeAt(0).startContainer;(0,k.Z)(t)&&(t=t.parentNode);const s=this.fakeSelectionToView(t);if(s)return s}const t=this.isDomSelectionBackward(e),s=[];for(let t=0;t<e.rangeCount;t++){const o=e.getRangeAt(t),i=this.domRangeToView(o);i&&s.push(i)}return new c.Z(s,{backward:t})}domRangeToView(e){const t=this.domPositionToView(e.startContainer,e.startOffset),s=this.domPositionToView(e.endContainer,e.endOffset);return t&&s?new a.Z(t,s):null}domPositionToView(e,t=0){if(this.isBlockFiller(e))return this.domPositionToView(e.parentNode,f(e));const s=this.mapDomToView(e);if(s&&(s.is("uiElement")||s.is("rawElement")))return n.Z._createBefore(s);if((0,k.Z)(e)){if((0,u.Qh)(e))return this.domPositionToView(e.parentNode,f(e));const s=this.findCorrespondingViewText(e);let o=t;return s?((0,u.Sw)(e)&&(o-=u.b_,o=o<0?0:o),new n.Z(s,o)):null}if(0===t){const t=this.mapDomToView(e);if(t)return new n.Z(t,0)}else{const s=e.childNodes[t-1],o=(0,k.Z)(s)?this.findCorrespondingViewText(s):this.mapDomToView(s);if(o&&o.parent)return new n.Z(o.parent,o.index+1)}return null}mapDomToView(e){return this.getHostViewElement(e)||this._domToViewMapping.get(e)}findCorrespondingViewText(e){if((0,u.Qh)(e))return null;const t=this.getHostViewElement(e);if(t)return t;const s=e.previousSibling;if(s){if(!this.isElement(s))return null;const e=this.mapDomToView(s);if(e){const t=e.nextSibling;return t instanceof o.Z?t:null}}else{const t=this.mapDomToView(e.parentNode);if(t){const e=t.getChild(0);return e instanceof o.Z?e:null}}return null}mapViewToDom(e){return this._viewToDomMapping.get(e)}findCorrespondingDomText(e){const t=e.previousSibling;return t&&this.mapViewToDom(t)?this.mapViewToDom(t).nextSibling:!t&&e.parent&&this.mapViewToDom(e.parent)?this.mapViewToDom(e.parent).childNodes[0]:null}focus(e){const t=this.mapViewToDom(e);if(t&&t.ownerDocument.activeElement!==t){const{scrollX:e,scrollY:s}=p.Z.window,o=[];x(t,(e=>{const{scrollLeft:t,scrollTop:s}=e;o.push([t,s])})),t.focus(),x(t,(e=>{const[t,s]=o.shift();e.scrollLeft=t,e.scrollTop=s})),p.Z.window.scrollTo(e,s)}}isElement(e){return e&&e.nodeType==Node.ELEMENT_NODE}isDocumentFragment(e){return e&&e.nodeType==Node.DOCUMENT_FRAGMENT_NODE}isBlockFiller(e){return"br"==this.blockFillerMode?e.isEqualNode(_):!("BR"!==e.tagName||!T(e,this.blockElements)||1!==e.parentNode.childNodes.length)||(e.isEqualNode(v)||function(e,t){return e.isEqualNode(w)&&T(e,t)&&1===e.parentNode.childNodes.length}(e,this.blockElements))}isDomSelectionBackward(e){if(e.isCollapsed)return!1;const t=this._domDocument.createRange();t.setStart(e.anchorNode,e.anchorOffset),t.setEnd(e.focusNode,e.focusOffset);const s=t.collapsed;return t.detach(),s}getHostViewElement(e){const t=m(e);for(t.pop();t.length;){const e=t.pop(),s=this._domToViewMapping.get(e);if(s&&(s.is("uiElement")||s.is("rawElement")))return s}return null}isDomSelectionCorrect(e){return this._isDomSelectionPositionCorrect(e.anchorNode,e.anchorOffset)&&this._isDomSelectionPositionCorrect(e.focusNode,e.focusOffset)}registerRawContentMatcher(e){this._rawContentElementMatcher.add(e)}_getBlockFiller(){switch(this.blockFillerMode){case"nbsp":return(0,u.N3)(this._domDocument);case"markedNbsp":return(0,u.PQ)(this._domDocument);case"br":return(0,u.yl)(this._domDocument)}}_isDomSelectionPositionCorrect(e,t){if((0,k.Z)(e)&&(0,u.Sw)(e)&&t<u.b_)return!1;if(this.isElement(e)&&(0,u.Sw)(e.childNodes[t]))return!1;const s=this.mapDomToView(e);return!s||!s.is("uiElement")&&!s.is("rawElement")}_processDataFromViewText(e){let t=e.data;if(e.getAncestors().some((e=>this.preElements.includes(e.name))))return t;if(" "==t.charAt(0)){const s=this._getTouchingInlineViewNode(e,!1);!(s&&s.is("$textProxy")&&this._nodeEndsWithSpace(s))&&s||(t=" "+t.substr(1))}if(" "==t.charAt(t.length-1)){const s=this._getTouchingInlineViewNode(e,!0),o=s&&s.is("$textProxy")&&" "==s.data.charAt(0);" "!=t.charAt(t.length-2)&&s&&!o||(t=t.substr(0,t.length-1)+" ")}return t.replace(/ {2}/g," ")}_nodeEndsWithSpace(e){if(e.getAncestors().some((e=>this.preElements.includes(e.name))))return!1;const t=this._processDataFromViewText(e);return" "==t.charAt(t.length-1)}_processDataFromDomText(e){let t=e.data;if(function(e,t){return m(e).some((e=>e.tagName&&t.includes(e.tagName.toLowerCase())))}(e,this.preElements))return(0,u.th)(e);t=t.replace(/[ \n\t\r]{1,}/g," ");const s=this._getTouchingInlineDomNode(e,!1),o=this._getTouchingInlineDomNode(e,!0),i=this._checkShouldLeftTrimDomText(e,s),r=this._checkShouldRightTrimDomText(e,o);i&&(t=t.replace(/^ /,"")),r&&(t=t.replace(/ $/,"")),t=(0,u.th)(new Text(t)),t=t.replace(/ \u00A0/g," ");const n=o&&this.isElement(o)&&"BR"!=o.tagName,a=o&&(0,k.Z)(o)&&" "==o.data.charAt(0);return(/( |\u00A0)\u00A0$/.test(t)||!o||n||a)&&(t=t.replace(/\u00A0$/," ")),(i||s&&this.isElement(s)&&"BR"!=s.tagName)&&(t=t.replace(/^\u00A0/," ")),t}_checkShouldLeftTrimDomText(e,t){return!t||(this.isElement(t)?"BR"===t.tagName:!this._encounteredRawContentDomNodes.has(e.previousSibling)&&/[^\S\u00A0]/.test(t.data.charAt(t.data.length-1)))}_checkShouldRightTrimDomText(e,t){return!t&&!(0,u.Sw)(e)}_getTouchingInlineViewNode(e,t){const s=new d.Z({startPosition:t?n.Z._createAfter(e):n.Z._createBefore(e),direction:t?"forward":"backward"});for(const e of s){if(e.item.is("element")&&this.inlineObjectElements.includes(e.item.name))return e.item;if(e.item.is("containerElement"))return null;if(e.item.is("element","br"))return null;if(e.item.is("$textProxy"))return e.item}return null}_getTouchingInlineDomNode(e,t){if(!e.parentNode)return null;const s=t?"firstChild":"lastChild",o=t?"nextSibling":"previousSibling";let i=!0,r=e;do{if(!i&&r[s]?r=r[s]:r[o]?(r=r[o],i=!1):(r=r.parentNode,i=!0),!r||this._isBlockElement(r))return null}while(!(0,k.Z)(r)&&"BR"!=r.tagName&&!this._isInlineObjectElement(r));return r}_isBlockElement(e){return this.isElement(e)&&this.blockElements.includes(e.tagName.toLowerCase())}_isInlineObjectElement(e){return this.isElement(e)&&this.inlineObjectElements.includes(e.tagName.toLowerCase())}_createViewElement(e,t){if((0,b.Z)(e))return new r.Z(this.document,"$comment");const s=t.keepOriginalCase?e.tagName:e.tagName.toLowerCase();return new i.Z(this.document,s)}_isViewElementWithRawContent(e,t){return!1!==t.withChildren&&!!this._rawContentElementMatcher.match(e)}_shouldRenameElement(e){const t=e.toLowerCase();return"editing"===this.renderingMode&&this.unsafeElements.includes(t)}_createReplacementDomElement(e,t){const s=this._domDocument.createElement("span");if(s.setAttribute(Z,e),t){for(;t.firstChild;)s.appendChild(t.firstChild);for(const e of t.getAttributeNames())s.setAttribute(e,t.getAttribute(e))}return s}}function x(e,t){let s=e;for(;s;)t(s),s=s.parentElement}function T(e,t){const s=e.parentNode;return!!s&&!!s.tagName&&t.includes(s.tagName.toLowerCase())}function A(e){"script"===e&&(0,g.KE)("domconverter-unsafe-script-element-detected"),"style"===e&&(0,g.KE)("domconverter-unsafe-style-element-detected")}},"./packages/ckeditor5-engine/src/view/downcastwriter.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>k});var o=s("./packages/ckeditor5-engine/src/view/position.ts"),i=s("./packages/ckeditor5-engine/src/view/range.ts"),r=s("./packages/ckeditor5-engine/src/view/selection.ts"),n=s("./packages/ckeditor5-engine/src/view/containerelement.ts"),a=s("./packages/ckeditor5-engine/src/view/attributeelement.ts"),c=s("./packages/ckeditor5-engine/src/view/emptyelement.ts"),l=s("./packages/ckeditor5-engine/src/view/uielement.ts"),d=s("./packages/ckeditor5-engine/src/view/rawelement.ts"),h=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),u=s("./packages/ckeditor5-engine/src/view/documentfragment.ts"),p=s("./packages/ckeditor5-utils/src/isiterable.ts"),g=s("./packages/ckeditor5-engine/src/view/text.ts"),f=s("./packages/ckeditor5-engine/src/view/editableelement.ts"),m=s("./node_modules/lodash-es/isPlainObject.js");class k{constructor(e){this.document=e,this._cloneGroups=new Map,this._slotFactory=null}setSelection(...e){this.document.selection._setTo(...e)}setSelectionFocus(...e){this.document.selection._setFocus(...e)}createDocumentFragment(e){return new u.Z(this.document,e)}createText(e){return new g.Z(this.document,e)}createAttributeElement(e,t,s={}){const o=new a.Z(this.document,e,t);return"number"==typeof s.priority&&(o._priority=s.priority),s.id&&(o._id=s.id),s.renderUnsafeAttributes&&o._unsafeAttributesToRender.push(...s.renderUnsafeAttributes),o}createContainerElement(e,t,s={},o={}){let i=null;(0,m.Z)(s)?o=s:i=s;const r=new n.Z(this.document,e,t,i);return o.renderUnsafeAttributes&&r._unsafeAttributesToRender.push(...o.renderUnsafeAttributes),r}createEditableElement(e,t,s={}){const o=new f.Z(this.document,e,t);return s.renderUnsafeAttributes&&o._unsafeAttributesToRender.push(...s.renderUnsafeAttributes),o}createEmptyElement(e,t,s={}){const o=new c.Z(this.document,e,t);return s.renderUnsafeAttributes&&o._unsafeAttributesToRender.push(...s.renderUnsafeAttributes),o}createUIElement(e,t,s){const o=new l.Z(this.document,e,t);return s&&(o.render=s),o}createRawElement(e,t,s,o={}){const i=new d.Z(this.document,e,t);return s&&(i.render=s),o.renderUnsafeAttributes&&i._unsafeAttributesToRender.push(...o.renderUnsafeAttributes),i}setAttribute(e,t,s){s._setAttribute(e,t)}removeAttribute(e,t){t._removeAttribute(e)}addClass(e,t){t._addClass(e)}removeClass(e,t){t._removeClass(e)}setStyle(e,t,s){(0,m.Z)(e)&&void 0===s?t._setStyle(e):s._setStyle(e,t)}removeStyle(e,t){t._removeStyle(e)}setCustomProperty(e,t,s){s._setCustomProperty(e,t)}removeCustomProperty(e,t){return t._removeCustomProperty(e)}breakAttributes(e){return e instanceof o.Z?this._breakAttributes(e):this._breakAttributesRange(e)}breakContainer(e){const t=e.parent;if(!t.is("containerElement"))throw new h.ZP("view-writer-break-non-container-element",this.document);if(!t.parent)throw new h.ZP("view-writer-break-root",this.document);if(e.isAtStart)return o.Z._createBefore(t);if(!e.isAtEnd){const s=t._clone(!1);this.insert(o.Z._createAfter(t),s);const r=new i.Z(e,o.Z._createAt(t,"end")),n=new o.Z(s,0);this.move(r,n)}return o.Z._createAfter(t)}mergeAttributes(e){const t=e.offset,s=e.parent;if(s.is("$text"))return e;if(s.is("attributeElement")&&0===s.childCount){const e=s.parent,t=s.index;return s._remove(),this._removeFromClonedElementsGroup(s),this.mergeAttributes(new o.Z(e,t))}const i=s.getChild(t-1),r=s.getChild(t);if(!i||!r)return e;if(i.is("$text")&&r.is("$text"))return y(i,r);if(i.is("attributeElement")&&r.is("attributeElement")&&i.isSimilar(r)){const e=i.childCount;return i._appendChild(r.getChildren()),r._remove(),this._removeFromClonedElementsGroup(r),this.mergeAttributes(new o.Z(i,e))}return e}mergeContainers(e){const t=e.nodeBefore,s=e.nodeAfter;if(!(t&&s&&t.is("containerElement")&&s.is("containerElement")))throw new h.ZP("view-writer-merge-containers-invalid-position",this.document);const r=t.getChild(t.childCount-1),n=r instanceof g.Z?o.Z._createAt(r,"end"):o.Z._createAt(t,"end");return this.move(i.Z._createIn(s),o.Z._createAt(t,"end")),this.remove(i.Z._createOn(s)),n}insert(e,t){P(t=(0,p.Z)(t)?[...t]:[t],this.document);const s=t.reduce(((e,t)=>{const s=e[e.length-1],o=!t.is("uiElement");return s&&s.breakAttributes==o?s.nodes.push(t):e.push({breakAttributes:o,nodes:[t]}),e}),[]);let o=null,r=e;for(const{nodes:e,breakAttributes:t}of s){const s=this._insertNodes(r,e,t);o||(o=s.start),r=s.end}return o?new i.Z(o,r):new i.Z(e)}remove(e){const t=e instanceof i.Z?e:i.Z._createOn(e);if(T(t,this.document),t.isCollapsed)return new u.Z(this.document);const{start:s,end:o}=this._breakAttributesRange(t,!0),r=s.parent,n=o.offset-s.offset,a=r._removeChildren(s.offset,n);for(const e of a)this._removeFromClonedElementsGroup(e);const c=this.mergeAttributes(s);return t.start=c,t.end=c.clone(),new u.Z(this.document,a)}clear(e,t){T(e,this.document);const s=e.getWalker({direction:"backward",ignoreElementEnd:!0});for(const o of s){const s=o.item;let r;if(s.is("element")&&t.isSimilar(s))r=i.Z._createOn(s);else if(!o.nextPosition.isAfter(e.start)&&s.is("$textProxy")){const e=s.getAncestors().find((e=>e.is("element")&&t.isSimilar(e)));e&&(r=i.Z._createIn(e))}r&&(r.end.isAfter(e.end)&&(r.end=e.end),r.start.isBefore(e.start)&&(r.start=e.start),this.remove(r))}}move(e,t){let s;if(t.isAfter(e.end)){const o=(t=this._breakAttributes(t,!0)).parent,i=o.childCount;e=this._breakAttributesRange(e,!0),s=this.remove(e),t.offset+=o.childCount-i}else s=this.remove(e);return this.insert(t,s)}wrap(e,t){if(!(t instanceof a.Z))throw new h.ZP("view-writer-wrap-invalid-attribute",this.document);if(T(e,this.document),e.isCollapsed){let o=e.start;o.parent.is("element")&&(s=o.parent,!Array.from(s.getChildren()).some((e=>!e.is("uiElement"))))&&(o=o.getLastMatchingPosition((e=>e.item.is("uiElement")))),o=this._wrapPosition(o,t);const r=this.document.selection;return r.isCollapsed&&r.getFirstPosition().isEqual(e.start)&&this.setSelection(o),new i.Z(o)}return this._wrapRange(e,t);var s}unwrap(e,t){if(!(t instanceof a.Z))throw new h.ZP("view-writer-unwrap-invalid-attribute",this.document);if(T(e,this.document),e.isCollapsed)return e;const{start:s,end:o}=this._breakAttributesRange(e,!0),r=s.parent,n=this._unwrapChildren(r,s.offset,o.offset,t),c=this.mergeAttributes(n.start);c.isEqual(n.start)||n.end.offset--;const l=this.mergeAttributes(n.end);return new i.Z(c,l)}rename(e,t){const s=new n.Z(this.document,e,t.getAttributes());return this.insert(o.Z._createAfter(t),s),this.move(i.Z._createIn(t),o.Z._createAt(s,0)),this.remove(i.Z._createOn(t)),s}clearClonedElementsGroup(e){this._cloneGroups.delete(e)}createPositionAt(e,t){return o.Z._createAt(e,t)}createPositionAfter(e){return o.Z._createAfter(e)}createPositionBefore(e){return o.Z._createBefore(e)}createRange(...e){return new i.Z(...e)}createRangeOn(e){return i.Z._createOn(e)}createRangeIn(e){return i.Z._createIn(e)}createSelection(...e){return new r.Z(...e)}createSlot(e){if(!this._slotFactory)throw new h.ZP("view-writer-invalid-create-slot-context",this.document);return this._slotFactory(this,e)}_registerSlotFactory(e){this._slotFactory=e}_clearSlotFactory(){this._slotFactory=null}_insertNodes(e,t,s){let o,r;if(o=s?b(e):e.parent.is("$text")?e.parent.parent:e.parent,!o)throw new h.ZP("view-writer-invalid-position-container",this.document);r=s?this._breakAttributes(e,!0):e.parent.is("$text")?v(e):e;const n=o._insertChild(r.offset,t);for(const e of t)this._addToClonedElementsGroup(e);const a=r.getShiftedBy(n),c=this.mergeAttributes(r);c.isEqual(r)||a.offset--;const l=this.mergeAttributes(a);return new i.Z(c,l)}_wrapChildren(e,t,s,r){let n=t;const a=[];for(;n<s;){const t=e.getChild(n),s=t.is("$text"),i=t.is("attributeElement");if(i&&this._wrapAttributeElement(r,t))a.push(new o.Z(e,n));else if(s||!i||_(r,t)){const s=r._clone();t._remove(),s._appendChild(t),e._insertChild(n,s),this._addToClonedElementsGroup(s),a.push(new o.Z(e,n))}else this._wrapChildren(t,0,t.childCount,r);n++}let c=0;for(const e of a){if(e.offset-=c,e.offset==t)continue;this.mergeAttributes(e).isEqual(e)||(c++,s--)}return i.Z._createFromParentsAndOffsets(e,t,e,s)}_unwrapChildren(e,t,s,r){let n=t;const a=[];for(;n<s;){const t=e.getChild(n);if(t.is("attributeElement"))if(t.isSimilar(r)){const i=t.getChildren(),r=t.childCount;t._remove(),e._insertChild(n,i),this._removeFromClonedElementsGroup(t),a.push(new o.Z(e,n),new o.Z(e,n+r)),n+=r,s+=r-1}else this._unwrapAttributeElement(r,t)?(a.push(new o.Z(e,n),new o.Z(e,n+1)),n++):(this._unwrapChildren(t,0,t.childCount,r),n++);else n++}let c=0;for(const e of a){if(e.offset-=c,e.offset==t||e.offset==s)continue;this.mergeAttributes(e).isEqual(e)||(c++,s--)}return i.Z._createFromParentsAndOffsets(e,t,e,s)}_wrapRange(e,t){const{start:s,end:o}=this._breakAttributesRange(e,!0),r=s.parent,n=this._wrapChildren(r,s.offset,o.offset,t),a=this.mergeAttributes(n.start);a.isEqual(n.start)||n.end.offset--;const c=this.mergeAttributes(n.end);return new i.Z(a,c)}_wrapPosition(e,t){if(t.isSimilar(e.parent))return w(e.clone());e.parent.is("$text")&&(e=v(e));const s=this.createAttributeElement("_wrapPosition-fake-element");s._priority=Number.POSITIVE_INFINITY,s.isSimilar=()=>!1,e.parent._insertChild(e.offset,s);const r=new i.Z(e,e.getShiftedBy(1));this.wrap(r,t);const n=new o.Z(s.parent,s.index);s._remove();const a=n.nodeBefore,c=n.nodeAfter;return a instanceof g.Z&&c instanceof g.Z?y(a,c):w(n)}_wrapAttributeElement(e,t){if(!A(e,t))return!1;if(e.name!==t.name||e.priority!==t.priority)return!1;for(const s of e.getAttributeKeys())if("class"!==s&&"style"!==s&&t.hasAttribute(s)&&t.getAttribute(s)!==e.getAttribute(s))return!1;for(const s of e.getStyleNames())if(t.hasStyle(s)&&t.getStyle(s)!==e.getStyle(s))return!1;for(const s of e.getAttributeKeys())"class"!==s&&"style"!==s&&(t.hasAttribute(s)||this.setAttribute(s,e.getAttribute(s),t));for(const s of e.getStyleNames())t.hasStyle(s)||this.setStyle(s,e.getStyle(s),t);for(const s of e.getClassNames())t.hasClass(s)||this.addClass(s,t);return!0}_unwrapAttributeElement(e,t){if(!A(e,t))return!1;if(e.name!==t.name||e.priority!==t.priority)return!1;for(const s of e.getAttributeKeys())if("class"!==s&&"style"!==s&&(!t.hasAttribute(s)||t.getAttribute(s)!==e.getAttribute(s)))return!1;if(!t.hasClass(...e.getClassNames()))return!1;for(const s of e.getStyleNames())if(!t.hasStyle(s)||t.getStyle(s)!==e.getStyle(s))return!1;for(const s of e.getAttributeKeys())"class"!==s&&"style"!==s&&this.removeAttribute(s,t);return this.removeClass(Array.from(e.getClassNames()),t),this.removeStyle(Array.from(e.getStyleNames()),t),!0}_breakAttributesRange(e,t=!1){const s=e.start,o=e.end;if(T(e,this.document),e.isCollapsed){const s=this._breakAttributes(e.start,t);return new i.Z(s,s)}const r=this._breakAttributes(o,t),n=r.parent.childCount,a=this._breakAttributes(s,t);return r.offset+=r.parent.childCount-n,new i.Z(a,r)}_breakAttributes(e,t=!1){const s=e.offset,i=e.parent;if(e.parent.is("emptyElement"))throw new h.ZP("view-writer-cannot-break-empty-element",this.document);if(e.parent.is("uiElement"))throw new h.ZP("view-writer-cannot-break-ui-element",this.document);if(e.parent.is("rawElement"))throw new h.ZP("view-writer-cannot-break-raw-element",this.document);if(!t&&i.is("$text")&&x(i.parent))return e.clone();if(x(i))return e.clone();if(i.is("$text"))return this._breakAttributes(v(e),t);if(s==i.childCount){const e=new o.Z(i.parent,i.index+1);return this._breakAttributes(e,t)}if(0===s){const e=new o.Z(i.parent,i.index);return this._breakAttributes(e,t)}{const e=i.index+1,r=i._clone();i.parent._insertChild(e,r),this._addToClonedElementsGroup(r);const n=i.childCount-s,a=i._removeChildren(s,n);r._appendChild(a);const c=new o.Z(i.parent,e);return this._breakAttributes(c,t)}}_addToClonedElementsGroup(e){if(!e.root.is("rootElement"))return;if(e.is("element"))for(const t of e.getChildren())this._addToClonedElementsGroup(t);const t=e.id;if(!t)return;let s=this._cloneGroups.get(t);s||(s=new Set,this._cloneGroups.set(t,s)),s.add(e),e._clonesGroup=s}_removeFromClonedElementsGroup(e){if(e.is("element"))for(const t of e.getChildren())this._removeFromClonedElementsGroup(t);const t=e.id;if(!t)return;const s=this._cloneGroups.get(t);s&&s.delete(e)}}function b(e){let t=e.parent;for(;!x(t);){if(!t)return;t=t.parent}return t}function _(e,t){return e.priority<t.priority||!(e.priority>t.priority)&&e.getIdentity()<t.getIdentity()}function w(e){const t=e.nodeBefore;if(t&&t.is("$text"))return new o.Z(t,t.data.length);const s=e.nodeAfter;return s&&s.is("$text")?new o.Z(s,0):e}function v(e){if(e.offset==e.parent.data.length)return new o.Z(e.parent.parent,e.parent.index+1);if(0===e.offset)return new o.Z(e.parent.parent,e.parent.index);const t=e.parent.data.slice(e.offset);return e.parent._data=e.parent.data.slice(0,e.offset),e.parent.parent._insertChild(e.parent.index+1,new g.Z(e.root.document,t)),new o.Z(e.parent.parent,e.parent.index+1)}function y(e,t){const s=e.data.length;return e._data+=t.data,t._remove(),new o.Z(e,s)}const Z=[g.Z,a.Z,n.Z,c.Z,d.Z,l.Z];function P(e,t){for(const s of e){if(!Z.some((e=>s instanceof e)))throw new h.ZP("view-writer-insert-invalid-node-type",t);s.is("$text")||P(s.getChildren(),t)}}function x(e){return e&&(e.is("containerElement")||e.is("documentFragment"))}function T(e,t){const s=b(e.start),o=b(e.end);if(!s||!o||s!==o)throw new h.ZP("view-writer-invalid-range-container",t)}function A(e,t){return null===e.id&&null===t.id}},"./packages/ckeditor5-engine/src/view/editableelement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/view/containerelement.ts"),i=s("./packages/ckeditor5-utils/src/observablemixin.ts");class r extends((0,i.Z)(o.Z)){constructor(...e){super(...e);const t=e[0];this.set("isReadOnly",!1),this.set("isFocused",!1),this.bind("isReadOnly").to(t),this.bind("isFocused").to(t,"isFocused",(e=>e&&t.selection.editableElement==this)),this.listenTo(t.selection,"change",(()=>{this.isFocused=t.isFocused&&t.selection.editableElement==this}))}destroy(){this.stopListening()}}r.prototype.is=function(e,t){return t?t===this.name&&("editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e):"editableElement"===e||"view:editableElement"===e||"containerElement"===e||"view:containerElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/element.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./packages/ckeditor5-engine/src/view/node.ts"),i=s("./packages/ckeditor5-engine/src/view/text.ts"),r=s("./packages/ckeditor5-engine/src/view/textproxy.ts"),n=s("./packages/ckeditor5-utils/src/tomap.ts"),a=s("./packages/ckeditor5-utils/src/toarray.ts"),c=s("./packages/ckeditor5-utils/src/isiterable.ts"),l=s("./packages/ckeditor5-engine/src/view/matcher.ts"),d=s("./packages/ckeditor5-engine/src/view/stylesmap.ts"),h=s("./node_modules/lodash-es/isPlainObject.js");class u extends o.Z{constructor(e,t,s,o){if(super(e),this.name=t,this._attrs=function(e){const t=(0,n.Z)(e);for(const[e,s]of t)null===s?t.delete(e):"string"!=typeof s&&t.set(e,String(s));return t}(s),this._children=[],o&&this._insertChild(0,o),this._classes=new Set,this._attrs.has("class")){const e=this._attrs.get("class");p(this._classes,e),this._attrs.delete("class")}this._styles=new d.Z(this.document.stylesProcessor),this._attrs.has("style")&&(this._styles.setTo(this._attrs.get("style")),this._attrs.delete("style")),this._customProperties=new Map,this._unsafeAttributesToRender=[]}get childCount(){return this._children.length}get isEmpty(){return 0===this._children.length}getChild(e){return this._children[e]}getChildIndex(e){return this._children.indexOf(e)}getChildren(){return this._children[Symbol.iterator]()}*getAttributeKeys(){this._classes.size>0&&(yield"class"),this._styles.isEmpty||(yield"style"),yield*this._attrs.keys()}*getAttributes(){yield*this._attrs.entries(),this._classes.size>0&&(yield["class",this.getAttribute("class")]),this._styles.isEmpty||(yield["style",this.getAttribute("style")])}getAttribute(e){if("class"==e)return this._classes.size>0?[...this._classes].join(" "):void 0;if("style"==e){const e=this._styles.toString();return""==e?void 0:e}return this._attrs.get(e)}hasAttribute(e){return"class"==e?this._classes.size>0:"style"==e?!this._styles.isEmpty:this._attrs.has(e)}isSimilar(e){if(!(e instanceof u))return!1;if(this===e)return!0;if(this.name!=e.name)return!1;if(this._attrs.size!==e._attrs.size||this._classes.size!==e._classes.size||this._styles.size!==e._styles.size)return!1;for(const[t,s]of this._attrs)if(!e._attrs.has(t)||e._attrs.get(t)!==s)return!1;for(const t of this._classes)if(!e._classes.has(t))return!1;for(const t of this._styles.getStyleNames())if(!e._styles.has(t)||e._styles.getAsString(t)!==this._styles.getAsString(t))return!1;return!0}hasClass(...e){for(const t of e)if(!this._classes.has(t))return!1;return!0}getClassNames(){return this._classes.keys()}getStyle(e){return this._styles.getAsString(e)}getNormalizedStyle(e){return this._styles.getNormalized(e)}getStyleNames(e){return this._styles.getStyleNames(e)}hasStyle(...e){for(const t of e)if(!this._styles.has(t))return!1;return!0}findAncestor(...e){const t=new l.Z(...e);let s=this.parent;for(;s&&!s.is("documentFragment");){if(t.match(s))return s;s=s.parent}return null}getCustomProperty(e){return this._customProperties.get(e)}*getCustomProperties(){yield*this._customProperties.entries()}getIdentity(){const e=Array.from(this._classes).sort().join(","),t=this._styles.toString(),s=Array.from(this._attrs).map((e=>`${e[0]}="${e[1]}"`)).sort().join(" ");return this.name+(""==e?"":` class="${e}"`)+(t?` style="${t}"`:"")+(""==s?"":` ${s}`)}shouldRenderUnsafeAttribute(e){return this._unsafeAttributesToRender.includes(e)}_clone(e=!1){const t=[];if(e)for(const s of this.getChildren())t.push(s._clone(e));const s=new this.constructor(this.document,this.name,this._attrs,t);return s._classes=new Set(this._classes),s._styles.set(this._styles.getNormalized()),s._customProperties=new Map(this._customProperties),s.getFillerOffset=this.getFillerOffset,s._unsafeAttributesToRender=this._unsafeAttributesToRender,s}_appendChild(e){return this._insertChild(this.childCount,e)}_insertChild(e,t){this._fireChange("children",this);let s=0;const o=function(e,t){if("string"==typeof t)return[new i.Z(e,t)];(0,c.Z)(t)||(t=[t]);return Array.from(t).map((t=>"string"==typeof t?new i.Z(e,t):t instanceof r.Z?new i.Z(e,t.data):t))}(this.document,t);for(const t of o)null!==t.parent&&t._remove(),t.parent=this,t.document=this.document,this._children.splice(e,0,t),e++,s++;return s}_removeChildren(e,t=1){this._fireChange("children",this);for(let s=e;s<e+t;s++)this._children[s].parent=null;return this._children.splice(e,t)}_setAttribute(e,t){t=String(t),this._fireChange("attributes",this),"class"==e?p(this._classes,t):"style"==e?this._styles.setTo(t):this._attrs.set(e,t)}_removeAttribute(e){return this._fireChange("attributes",this),"class"==e?this._classes.size>0&&(this._classes.clear(),!0):"style"==e?!this._styles.isEmpty&&(this._styles.clear(),!0):this._attrs.delete(e)}_addClass(e){this._fireChange("attributes",this);for(const t of(0,a.Z)(e))this._classes.add(t)}_removeClass(e){this._fireChange("attributes",this);for(const t of(0,a.Z)(e))this._classes.delete(t)}_setStyle(e,t){this._fireChange("attributes",this),(0,h.Z)(e)?this._styles.set(e):this._styles.set(e,t)}_removeStyle(e){this._fireChange("attributes",this);for(const t of(0,a.Z)(e))this._styles.remove(t)}_setCustomProperty(e,t){this._customProperties.set(e,t)}_removeCustomProperty(e){return this._customProperties.delete(e)}}function p(e,t){const s=t.split(/\s+/);e.clear(),s.forEach((t=>e.add(t)))}u.prototype.is=function(e,t){return t?t===this.name&&("element"===e||"view:element"===e):"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/emptyelement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/view/element.ts"),i=s("./packages/ckeditor5-engine/src/view/node.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class n extends o.Z{constructor(e,t,s,o){super(e,t,s,o),this.getFillerOffset=a}_insertChild(e,t){if(t&&(t instanceof i.Z||Array.from(t).length>0))throw new r.ZP("view-emptyelement-cannot-add",[this,t]);return 0}}function a(){return null}n.prototype.is=function(e,t){return t?t===this.name&&("emptyElement"===e||"view:emptyElement"===e||"element"===e||"view:element"===e):"emptyElement"===e||"view:emptyElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/filler.ts":(e,t,s)=>{"use strict";s.d(t,{N3:()=>r,PQ:()=>n,Pj:()=>l,Qh:()=>h,Sw:()=>d,b_:()=>c,mm:()=>p,th:()=>u,yl:()=>a});var o=s("./packages/ckeditor5-utils/src/keyboard.ts"),i=s("./packages/ckeditor5-utils/src/dom/istext.ts");const r=e=>e.createTextNode(" "),n=e=>{const t=e.createElement("span");return t.dataset.ckeFiller="true",t.innerText=" ",t},a=e=>{const t=e.createElement("br");return t.dataset.ckeFiller="true",t},c=7,l="".repeat(c);function d(e){return(0,i.Z)(e)&&e.data.substr(0,c)===l}function h(e){return e.data.length==c&&d(e)}function u(e){return d(e)?e.data.slice(c):e.data}function p(e){e.document.on("arrowKey",g,{priority:"low"})}function g(e,t){if(t.keyCode==o.Do.arrowleft){const e=t.domTarget.ownerDocument.defaultView.getSelection();if(1==e.rangeCount&&e.getRangeAt(0).collapsed){const t=e.getRangeAt(0).startContainer,s=e.getRangeAt(0).startOffset;d(t)&&s<=c&&e.collapse(t,0)}}}},"./packages/ckeditor5-engine/src/view/matcher.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/isPlainObject.js"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r{constructor(...e){this._patterns=[],this.add(...e)}add(...e){for(let t of e)("string"==typeof t||t instanceof RegExp)&&(t={name:t}),this._patterns.push(t)}match(...e){for(const t of e)for(const e of this._patterns){const s=n(t,e);if(s)return{element:t,pattern:e,match:s}}return null}matchAll(...e){const t=[];for(const s of e)for(const e of this._patterns){const o=n(s,e);o&&t.push({element:s,pattern:e,match:o})}return t.length>0?t:null}getElementName(){if(1!==this._patterns.length)return null;const e=this._patterns[0],t=e.name;return"function"==typeof e||!t||t instanceof RegExp?null:t}}function n(e,t){if("function"==typeof t)return t(e);const s={};return t.name&&(s.name=function(e,t){if(e instanceof RegExp)return!!t.match(e);return e===t}(t.name,e.name),!s.name)||t.attributes&&(s.attributes=function(e,t){const s=new Set(t.getAttributeKeys());(0,o.Z)(e)?(void 0!==e.style&&(0,i.KE)("matcher-pattern-deprecated-attributes-style-key",e),void 0!==e.class&&(0,i.KE)("matcher-pattern-deprecated-attributes-class-key",e)):(s.delete("style"),s.delete("class"));return a(e,s,(e=>t.getAttribute(e)))}(t.attributes,e),!s.attributes)||t.classes&&(s.classes=function(e,t){return a(e,t.getClassNames(),(()=>{}))}(t.classes,e),!s.classes)||t.styles&&(s.styles=function(e,t){return a(e,t.getStyleNames(!0),(e=>t.getStyle(e)))}(t.styles,e),!s.styles)?null:s}function a(e,t,s){const r=function(e){if(Array.isArray(e))return e.map((e=>(0,o.Z)(e)?(void 0!==e.key&&void 0!==e.value||(0,i.KE)("matcher-pattern-missing-key-or-value",e),[e.key,e.value]):[e,!0]));if((0,o.Z)(e))return Object.entries(e);return[[e,!0]]}(e),n=Array.from(t),a=[];if(r.forEach((([e,t])=>{n.forEach((o=>{(function(e,t){return!0===e||e===t||e instanceof RegExp&&t.match(e)})(e,o)&&function(e,t,s){if(!0===e)return!0;const o=s(t);return e===o||e instanceof RegExp&&!!String(o).match(e)}(t,o,s)&&a.push(o)}))})),r.length&&!(a.length<r.length))return a}},"./packages/ckeditor5-engine/src/view/node.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-utils/src/emittermixin.ts"),n=s("./packages/ckeditor5-utils/src/comparearrays.ts"),a=s("./node_modules/lodash-es/clone.js");s("./packages/ckeditor5-utils/src/version.ts");class c extends((0,r.ZP)(o.Z)){constructor(e){super(),this.document=e,this.parent=null}get index(){let e;if(!this.parent)return null;if(-1==(e=this.parent.getChildIndex(this)))throw new i.ZP("view-node-not-found-in-parent",this);return e}get nextSibling(){const e=this.index;return null!==e&&this.parent.getChild(e+1)||null}get previousSibling(){const e=this.index;return null!==e&&this.parent.getChild(e-1)||null}get root(){let e=this;for(;e.parent;)e=e.parent;return e}isAttached(){return this.root.is("rootElement")}getPath(){const e=[];let t=this;for(;t.parent;)e.unshift(t.index),t=t.parent;return e}getAncestors(e={}){const t=[];let s=e.includeSelf?this:this.parent;for(;s;)t[e.parentFirst?"push":"unshift"](s),s=s.parent;return t}getCommonAncestor(e,t={}){const s=this.getAncestors(t),o=e.getAncestors(t);let i=0;for(;s[i]==o[i]&&s[i];)i++;return 0===i?null:s[i-1]}isBefore(e){if(this==e)return!1;if(this.root!==e.root)return!1;const t=this.getPath(),s=e.getPath(),o=(0,n.Z)(t,s);switch(o){case"prefix":return!0;case"extension":return!1;default:return t[o]<s[o]}}isAfter(e){return this!=e&&(this.root===e.root&&!this.isBefore(e))}_remove(){this.parent._removeChildren(this.index)}_fireChange(e,t){this.fire(`change:${e}`,t),this.parent&&this.parent._fireChange(e,t)}toJSON(){const e=(0,a.Z)(this);return delete e.parent,e}}c.prototype.is=function(e){return"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/eventinfo.ts");class i extends o.Z{constructor(e,t,s){super(e,t),this.startRange=s,this._eventPhase="none",this._currentTarget=null}get eventPhase(){return this._eventPhase}get currentTarget(){return this._currentTarget}}},"./packages/ckeditor5-engine/src/view/observer/domeventdata.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/assignIn.js");class i{constructor(e,t,s){this.view=e,this.document=e.document,this.domEvent=t,this.domTarget=t.target,(0,o.Z)(this,s)}get target(){return this.view.domConverter.mapDomToView(this.domTarget)}preventDefault(){this.domEvent.preventDefault()}stopPropagation(){this.domEvent.stopPropagation()}}},"./packages/ckeditor5-engine/src/view/observer/domeventobserver.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/view/observer/observer.ts"),i=s("./packages/ckeditor5-engine/src/view/observer/domeventdata.ts");class r extends o.Z{constructor(e){super(e),this.useCapture=!1}observe(e){("string"==typeof this.domEventType?[this.domEventType]:this.domEventType).forEach((t=>{this.listenTo(e,t,((e,t)=>{this.isEnabled&&!this.checkShouldIgnoreEventFromTarget(t.target)&&this.onDomEvent(t)}),{useCapture:this.useCapture})}))}fire(e,t,s){this.isEnabled&&this.document.fire(e,new i.Z(this.view,t,s))}}},"./packages/ckeditor5-engine/src/view/observer/mouseobserver.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-engine/src/view/observer/domeventobserver.ts");class i extends o.Z{constructor(e){super(e),this.domEventType=["mousedown","mouseup","mouseover","mouseout"]}onDomEvent(e){this.fire(e.type,e)}}},"./packages/ckeditor5-engine/src/view/observer/observer.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts");class i extends o.Q{constructor(e){super(),this.view=e,this.document=e.document,this.isEnabled=!1}enable(){this.isEnabled=!0}disable(){this.isEnabled=!1}destroy(){this.disable(),this.stopListening()}checkShouldIgnoreEventFromTarget(e){return e&&3===e.nodeType&&(e=e.parentNode),!(!e||1!==e.nodeType)&&e.matches("[data-cke-ignore-events], [data-cke-ignore-events] *")}}},"./packages/ckeditor5-engine/src/view/position.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-utils/src/comparearrays.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-engine/src/view/editableelement.ts"),a=(s("./packages/ckeditor5-utils/src/version.ts"),s("./packages/ckeditor5-engine/src/view/treewalker.ts"));class c extends o.Z{constructor(e,t){super(),this.parent=e,this.offset=t}get nodeAfter(){return this.parent.is("$text")?null:this.parent.getChild(this.offset)||null}get nodeBefore(){return this.parent.is("$text")?null:this.parent.getChild(this.offset-1)||null}get isAtStart(){return 0===this.offset}get isAtEnd(){const e=this.parent.is("$text")?this.parent.data.length:this.parent.childCount;return this.offset===e}get root(){return this.parent.root}get editableElement(){let e=this.parent;for(;!(e instanceof n.Z);){if(!e.parent)return null;e=e.parent}return e}getShiftedBy(e){const t=c._createAt(this),s=t.offset+e;return t.offset=s<0?0:s,t}getLastMatchingPosition(e,t={}){t.startPosition=this;const s=new a.Z(t);return s.skip(e),s.position}getAncestors(){return this.parent.is("documentFragment")?[this.parent]:this.parent.getAncestors({includeSelf:!0})}getCommonAncestor(e){const t=this.getAncestors(),s=e.getAncestors();let o=0;for(;t[o]==s[o]&&t[o];)o++;return 0===o?null:t[o-1]}isEqual(e){return this.parent==e.parent&&this.offset==e.offset}isBefore(e){return"before"==this.compareWith(e)}isAfter(e){return"after"==this.compareWith(e)}compareWith(e){if(this.root!==e.root)return"different";if(this.isEqual(e))return"same";const t=this.parent.is("node")?this.parent.getPath():[],s=e.parent.is("node")?e.parent.getPath():[];t.push(this.offset),s.push(e.offset);const o=(0,i.Z)(t,s);switch(o){case"prefix":return"before";case"extension":return"after";default:return t[o]<s[o]?"before":"after"}}getWalker(e={}){return e.startPosition=this,new a.Z(e)}clone(){return new c(this.parent,this.offset)}static _createAt(e,t){if(e instanceof c)return new this(e.parent,e.offset);{const s=e;if("end"==t)t=s.is("$text")?s.data.length:s.childCount;else{if("before"==t)return this._createBefore(s);if("after"==t)return this._createAfter(s);if(0!==t&&!t)throw new r.ZP("view-createpositionat-offset-required",s)}return new c(s,t)}}static _createAfter(e){if(e.is("$textProxy"))return new c(e.textNode,e.offsetInText+e.data.length);if(!e.parent)throw new r.ZP("view-position-after-root",e,{root:e});return new c(e.parent,e.index+1)}static _createBefore(e){if(e.is("$textProxy"))return new c(e.textNode,e.offsetInText);if(!e.parent)throw new r.ZP("view-position-before-root",e,{root:e});return new c(e.parent,e.index)}}c.prototype.is=function(e){return"position"===e||"view:position"===e}},"./packages/ckeditor5-engine/src/view/range.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/view/position.ts"),r=s("./packages/ckeditor5-engine/src/view/treewalker.ts");class n extends o.Z{constructor(e,t=null){super(),this.start=e.clone(),this.end=t?t.clone():e.clone()}*[Symbol.iterator](){yield*new r.Z({boundaries:this,ignoreElementEnd:!0})}get isCollapsed(){return this.start.isEqual(this.end)}get isFlat(){return this.start.parent===this.end.parent}get root(){return this.start.root}getEnlarged(){let e=this.start.getLastMatchingPosition(a,{direction:"backward"}),t=this.end.getLastMatchingPosition(a);return e.parent.is("$text")&&e.isAtStart&&(e=i.Z._createBefore(e.parent)),t.parent.is("$text")&&t.isAtEnd&&(t=i.Z._createAfter(t.parent)),new n(e,t)}getTrimmed(){let e=this.start.getLastMatchingPosition(a);if(e.isAfter(this.end)||e.isEqual(this.end))return new n(e,e);let t=this.end.getLastMatchingPosition(a,{direction:"backward"});const s=e.nodeAfter,o=t.nodeBefore;return s&&s.is("$text")&&(e=new i.Z(s,0)),o&&o.is("$text")&&(t=new i.Z(o,o.data.length)),new n(e,t)}isEqual(e){return this==e||this.start.isEqual(e.start)&&this.end.isEqual(e.end)}containsPosition(e){return e.isAfter(this.start)&&e.isBefore(this.end)}containsRange(e,t=!1){e.isCollapsed&&(t=!1);const s=this.containsPosition(e.start)||t&&this.start.isEqual(e.start),o=this.containsPosition(e.end)||t&&this.end.isEqual(e.end);return s&&o}getDifference(e){const t=[];return this.isIntersecting(e)?(this.containsPosition(e.start)&&t.push(new n(this.start,e.start)),this.containsPosition(e.end)&&t.push(new n(e.end,this.end))):t.push(this.clone()),t}getIntersection(e){if(this.isIntersecting(e)){let t=this.start,s=this.end;return this.containsPosition(e.start)&&(t=e.start),this.containsPosition(e.end)&&(s=e.end),new n(t,s)}return null}getWalker(e={}){return e.boundaries=this,new r.Z(e)}getCommonAncestor(){return this.start.getCommonAncestor(this.end)}getContainedElement(){if(this.isCollapsed)return null;let e=this.start.nodeAfter,t=this.end.nodeBefore;return this.start.parent.is("$text")&&this.start.isAtEnd&&this.start.parent.nextSibling&&(e=this.start.parent.nextSibling),this.end.parent.is("$text")&&this.end.isAtStart&&this.end.parent.previousSibling&&(t=this.end.parent.previousSibling),e&&e.is("element")&&e===t?e:null}clone(){return new n(this.start,this.end)}*getItems(e={}){e.boundaries=this,e.ignoreElementEnd=!0;const t=new r.Z(e);for(const e of t)yield e.item}*getPositions(e={}){e.boundaries=this;const t=new r.Z(e);yield t.position;for(const e of t)yield e.nextPosition}isIntersecting(e){return this.start.isBefore(e.end)&&this.end.isAfter(e.start)}static _createFromParentsAndOffsets(e,t,s,o){return new this(new i.Z(e,t),new i.Z(s,o))}static _createFromPositionAndShift(e,t){const s=e,o=e.getShiftedBy(t);return t>0?new this(s,o):new this(o,s)}static _createIn(e){return this._createFromParentsAndOffsets(e,0,e,e.childCount)}static _createOn(e){const t=e.is("$textProxy")?e.offsetSize:1;return this._createFromPositionAndShift(i.Z._createBefore(e),t)}}function a(e){return!(!e.item.is("attributeElement")&&!e.item.is("uiElement"))}n.prototype.is=function(e){return"range"===e||"view:range"===e}},"./packages/ckeditor5-engine/src/view/rawelement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-engine/src/view/element.ts"),i=s("./packages/ckeditor5-engine/src/view/node.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class n extends o.Z{constructor(...e){super(...e),this.getFillerOffset=a}_insertChild(e,t){if(t&&(t instanceof i.Z||Array.from(t).length>0))throw new r.ZP("view-rawelement-cannot-add",[this,t]);return 0}render(){}}function a(){return null}n.prototype.is=function(e,t){return t?t===this.name&&("rawElement"===e||"view:rawElement"===e||"element"===e||"view:element"===e):"rawElement"===e||"view:rawElement"===e||e===this.name||e==="view:"+this.name||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/renderer.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>w});var o=s("./packages/ckeditor5-engine/src/view/text.ts"),i=s("./packages/ckeditor5-engine/src/view/position.ts"),r=s("./packages/ckeditor5-engine/src/view/filler.ts"),n=s("./packages/ckeditor5-utils/src/diff.ts");function a(e,t,s){e.insertBefore(s,e.childNodes[t]||null)}function c(e){const t=e.parentNode;t&&t.removeChild(e)}var l=s("./packages/ckeditor5-utils/src/observablemixin.ts"),d=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),h=s("./packages/ckeditor5-utils/src/dom/istext.ts"),u=s("./packages/ckeditor5-utils/src/dom/iscomment.ts"),p=s("./packages/ckeditor5-utils/src/dom/isnode.ts"),g=s("./packages/ckeditor5-utils/src/fastdiff.ts"),f=s("./packages/ckeditor5-utils/src/env.ts"),m=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),k=s.n(m),b=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-engine/theme/renderer.css"),_={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};k()(b.Z,_);b.Z.locals;class w extends l.y{constructor(e,t){super(),this.domDocuments=new Set,this.domConverter=e,this.markedAttributes=new Set,this.markedChildren=new Set,this.markedTexts=new Set,this.selection=t,this.set("isFocused",!1),this.set("isSelecting",!1),f.ZP.isBlink&&!f.ZP.isAndroid&&this.on("change:isSelecting",(()=>{this.isSelecting||this.render()})),this._inlineFiller=null,this._fakeSelectionContainer=null}markToSync(e,t){if("text"===e)this.domConverter.mapViewToDom(t.parent)&&this.markedTexts.add(t);else{if(!this.domConverter.mapViewToDom(t))return;if("attributes"===e)this.markedAttributes.add(t);else{if("children"!==e)throw new d.ZP("view-renderer-unknown-type",this);this.markedChildren.add(t)}}}render(){let e=null;const t=!(f.ZP.isBlink&&!f.ZP.isAndroid)||!this.isSelecting;for(const e of this.markedChildren)this._updateChildrenMappings(e);t?(this._inlineFiller&&!this._isSelectionInInlineFiller()&&this._removeInlineFiller(),this._inlineFiller?e=this._getInlineFillerPosition():this._needsInlineFillerAtSelection()&&(e=this.selection.getFirstPosition(),this.markedChildren.add(e.parent))):this._inlineFiller&&this._inlineFiller.parentNode&&(e=this.domConverter.domPositionToView(this._inlineFiller),e&&e.parent.is("$text")&&(e=i.Z._createBefore(e.parent)));for(const e of this.markedAttributes)this._updateAttrs(e);for(const t of this.markedChildren)this._updateChildren(t,{inlineFillerPosition:e});for(const t of this.markedTexts)!this.markedChildren.has(t.parent)&&this.domConverter.mapViewToDom(t.parent)&&this._updateText(t,{inlineFillerPosition:e});if(t)if(e){const t=this.domConverter.viewPositionToDom(e),s=t.parent.ownerDocument;(0,r.Sw)(t.parent)?this._inlineFiller=t.parent:this._inlineFiller=v(s,t.parent,t.offset)}else this._inlineFiller=null;this._updateFocus(),this._updateSelection(),this.markedTexts.clear(),this.markedAttributes.clear(),this.markedChildren.clear()}_updateChildrenMappings(e){if(!this.domConverter.mapViewToDom(e))return;const t=Array.from(this.domConverter.mapViewToDom(e).childNodes),s=Array.from(this.domConverter.viewChildrenToDom(e,{withChildren:!1})),o=this._diffNodeLists(t,s),i=this._findReplaceActions(o,t,s);if(-1!==i.indexOf("replace")){const o={equal:0,insert:0,delete:0};for(const r of i)if("replace"===r){const i=o.equal+o.insert,r=o.equal+o.delete,n=e.getChild(i);!n||n.is("uiElement")||n.is("rawElement")||this._updateElementMappings(n,t[r]),c(s[i]),o.equal++}else o[r]++}}_updateElementMappings(e,t){this.domConverter.unbindDomElement(t),this.domConverter.bindElements(t,e),this.markedChildren.add(e),this.markedAttributes.add(e)}_getInlineFillerPosition(){const e=this.selection.getFirstPosition();return e.parent.is("$text")?i.Z._createBefore(e.parent):e}_isSelectionInInlineFiller(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const e=this.selection.getFirstPosition(),t=this.domConverter.viewPositionToDom(e);return!!(t&&(0,h.Z)(t.parent)&&(0,r.Sw)(t.parent))}_removeInlineFiller(){const e=this._inlineFiller;if(!(0,r.Sw)(e))throw new d.ZP("view-renderer-filler-was-lost",this);(0,r.Qh)(e)?e.remove():e.data=e.data.substr(r.b_),this._inlineFiller=null}_needsInlineFillerAtSelection(){if(1!=this.selection.rangeCount||!this.selection.isCollapsed)return!1;const e=this.selection.getFirstPosition(),t=e.parent,s=e.offset;if(!this.domConverter.mapViewToDom(t.root))return!1;if(!t.is("element"))return!1;if(!function(e){if("false"==e.getAttribute("contenteditable"))return!1;const t=e.findAncestor((e=>e.hasAttribute("contenteditable")));return!t||"true"==t.getAttribute("contenteditable")}(t))return!1;if(s===t.getFillerOffset())return!1;const i=e.nodeBefore,r=e.nodeAfter;return!(i instanceof o.Z||r instanceof o.Z)}_updateText(e,t){const s=this.domConverter.findCorrespondingDomText(e),o=this.domConverter.viewToDom(e),i=s.data;let n=o.data;const a=t.inlineFillerPosition;if(a&&a.parent==e.parent&&a.offset==e.index&&(n=r.Pj+n),i!=n){const e=(0,g.Z)(i,n);for(const t of e)"insert"===t.type?s.insertData(t.index,t.values.join("")):s.deleteData(t.index,t.howMany)}}_updateAttrs(e){const t=this.domConverter.mapViewToDom(e);if(!t)return;const s=Array.from(t.attributes).map((e=>e.name)),o=e.getAttributeKeys();for(const s of o)this.domConverter.setDomElementAttribute(t,s,e.getAttribute(s),e);for(const o of s)e.hasAttribute(o)||this.domConverter.removeDomElementAttribute(t,o)}_updateChildren(e,t){const s=this.domConverter.mapViewToDom(e);if(!s)return;const o=t.inlineFillerPosition,i=this.domConverter.mapViewToDom(e).childNodes,r=Array.from(this.domConverter.viewChildrenToDom(e,{bind:!0}));o&&o.parent===e&&v(s.ownerDocument,r,o.offset);const n=this._diffNodeLists(i,r);let l=0;const d=new Set;for(const e of n)"delete"===e?(d.add(i[l]),c(i[l])):"equal"===e&&l++;l=0;for(const e of n)"insert"===e?(a(s,l,r[l]),l++):"equal"===e&&(this._markDescendantTextToSync(this.domConverter.domToView(r[l])),l++);for(const e of d)e.parentNode||this.domConverter.unbindDomElement(e)}_diffNodeLists(e,t){return e=function(e,t){const s=Array.from(e);if(0==s.length||!t)return s;s[s.length-1]==t&&s.pop();return s}(e,this._fakeSelectionContainer),(0,n.Z)(e,t,Z.bind(null,this.domConverter))}_findReplaceActions(e,t,s){if(-1===e.indexOf("insert")||-1===e.indexOf("delete"))return e;let o=[],i=[],r=[];const a={equal:0,insert:0,delete:0};for(const c of e)"insert"===c?r.push(s[a.equal+a.insert]):"delete"===c?i.push(t[a.equal+a.delete]):(o=o.concat((0,n.Z)(i,r,y).map((e=>"equal"===e?"replace":e))),o.push("equal"),i=[],r=[]),a[c]++;return o.concat((0,n.Z)(i,r,y).map((e=>"equal"===e?"replace":e)))}_markDescendantTextToSync(e){if(e)if(e.is("$text"))this.markedTexts.add(e);else if(e.is("element"))for(const t of e.getChildren())this._markDescendantTextToSync(t)}_updateSelection(){if(f.ZP.isBlink&&!f.ZP.isAndroid&&this.isSelecting&&!this.markedChildren.size)return;if(0===this.selection.rangeCount)return this._removeDomSelection(),void this._removeFakeSelection();const e=this.domConverter.mapViewToDom(this.selection.editableElement);this.isFocused&&e&&(this.selection.isFake?this._updateFakeSelection(e):(this._removeFakeSelection(),this._updateDomSelection(e)))}_updateFakeSelection(e){const t=e.ownerDocument;this._fakeSelectionContainer||(this._fakeSelectionContainer=function(e){const t=e.createElement("div");return t.className="ck-fake-selection-container",Object.assign(t.style,{position:"fixed",top:0,left:"-9999px",width:"42px"}),t.textContent=" ",t}(t));const s=this._fakeSelectionContainer;if(this.domConverter.bindFakeSelection(s,this.selection),!this._fakeSelectionNeedsUpdate(e))return;s.parentElement&&s.parentElement==e||e.appendChild(s),s.textContent=this.selection.fakeSelectionLabel||" ";const o=t.getSelection(),i=t.createRange();o.removeAllRanges(),i.selectNodeContents(s),o.addRange(i)}_updateDomSelection(e){const t=e.ownerDocument.defaultView.getSelection();if(!this._domSelectionNeedsUpdate(t))return;const s=this.domConverter.viewPositionToDom(this.selection.anchor),o=this.domConverter.viewPositionToDom(this.selection.focus);t.collapse(s.parent,s.offset),t.extend(o.parent,o.offset),f.ZP.isGecko&&function(e,t){const s=e.parent;if(s.nodeType!=Node.ELEMENT_NODE||e.offset!=s.childNodes.length-1)return;const o=s.childNodes[e.offset];o&&"BR"==o.tagName&&t.addRange(t.getRangeAt(0))}(o,t)}_domSelectionNeedsUpdate(e){if(!this.domConverter.isDomSelectionCorrect(e))return!0;const t=e&&this.domConverter.domSelectionToView(e);return(!t||!this.selection.isEqual(t))&&!(!this.selection.isCollapsed&&this.selection.isSimilar(t))}_fakeSelectionNeedsUpdate(e){const t=this._fakeSelectionContainer,s=e.ownerDocument.getSelection();return!t||t.parentElement!==e||(s.anchorNode!==t&&!t.contains(s.anchorNode)||t.textContent!==this.selection.fakeSelectionLabel)}_removeDomSelection(){for(const e of this.domDocuments){const t=e.getSelection();if(t.rangeCount){const s=e.activeElement,o=this.domConverter.mapDomToView(s);s&&o&&t.removeAllRanges()}}}_removeFakeSelection(){const e=this._fakeSelectionContainer;e&&e.remove()}_updateFocus(){if(this.isFocused){const e=this.selection.editableElement;e&&this.domConverter.focus(e)}}}function v(e,t,s){const o=t instanceof Array?t:t.childNodes,i=o[s];if((0,h.Z)(i))return i.data=r.Pj+i.data,i;{const i=e.createTextNode(r.Pj);return Array.isArray(t)?o.splice(s,0,i):a(t,s,i),i}}function y(e,t){return(0,p.Z)(e)&&(0,p.Z)(t)&&!(0,h.Z)(e)&&!(0,h.Z)(t)&&!(0,u.Z)(e)&&!(0,u.Z)(t)&&e.tagName.toLowerCase()===t.tagName.toLowerCase()}function Z(e,t,s){return t===s||((0,h.Z)(t)&&(0,h.Z)(s)?t.data===s.data:!(!e.isBlockFiller(t)||!e.isBlockFiller(s)))}},"./packages/ckeditor5-engine/src/view/selection.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-engine/src/view/range.ts"),r=s("./packages/ckeditor5-engine/src/view/position.ts"),n=s("./packages/ckeditor5-engine/src/view/node.ts"),a=s("./packages/ckeditor5-engine/src/view/documentselection.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),l=s("./packages/ckeditor5-utils/src/count.ts"),d=s("./packages/ckeditor5-utils/src/isiterable.ts"),h=s("./packages/ckeditor5-utils/src/emittermixin.ts");class u extends((0,h.ZP)(o.Z)){constructor(...e){super(),this._ranges=[],this._lastRangeBackward=!1,this._isFake=!1,this._fakeSelectionLabel="",e.length&&this.setTo(...e)}get isFake(){return this._isFake}get fakeSelectionLabel(){return this._fakeSelectionLabel}get anchor(){if(!this._ranges.length)return null;const e=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?e.end:e.start).clone()}get focus(){if(!this._ranges.length)return null;const e=this._ranges[this._ranges.length-1];return(this._lastRangeBackward?e.start:e.end).clone()}get isCollapsed(){return 1===this.rangeCount&&this._ranges[0].isCollapsed}get rangeCount(){return this._ranges.length}get isBackward(){return!this.isCollapsed&&this._lastRangeBackward}get editableElement(){return this.anchor?this.anchor.editableElement:null}*getRanges(){for(const e of this._ranges)yield e.clone()}getFirstRange(){let e=null;for(const t of this._ranges)e&&!t.start.isBefore(e.start)||(e=t);return e?e.clone():null}getLastRange(){let e=null;for(const t of this._ranges)e&&!t.end.isAfter(e.end)||(e=t);return e?e.clone():null}getFirstPosition(){const e=this.getFirstRange();return e?e.start.clone():null}getLastPosition(){const e=this.getLastRange();return e?e.end.clone():null}isEqual(e){if(this.isFake!=e.isFake)return!1;if(this.isFake&&this.fakeSelectionLabel!=e.fakeSelectionLabel)return!1;if(this.rangeCount!=e.rangeCount)return!1;if(0===this.rangeCount)return!0;if(!this.anchor.isEqual(e.anchor)||!this.focus.isEqual(e.focus))return!1;for(const t of this._ranges){let s=!1;for(const o of e._ranges)if(t.isEqual(o)){s=!0;break}if(!s)return!1}return!0}isSimilar(e){if(this.isBackward!=e.isBackward)return!1;const t=(0,l.Z)(this.getRanges());if(t!=(0,l.Z)(e.getRanges()))return!1;if(0==t)return!0;for(let t of this.getRanges()){t=t.getTrimmed();let s=!1;for(let o of e.getRanges())if(o=o.getTrimmed(),t.start.isEqual(o.start)&&t.end.isEqual(o.end)){s=!0;break}if(!s)return!1}return!0}getSelectedElement(){return 1!==this.rangeCount?null:this.getFirstRange().getContainedElement()}setTo(...e){let[t,s,o]=e;if("object"==typeof s&&(o=s,s=void 0),null===t)this._setRanges([]),this._setFakeOptions(o);else if(t instanceof u||t instanceof a.Z)this._setRanges(t.getRanges(),t.isBackward),this._setFakeOptions({fake:t.isFake,label:t.fakeSelectionLabel});else if(t instanceof i.Z)this._setRanges([t],o&&o.backward),this._setFakeOptions(o);else if(t instanceof r.Z)this._setRanges([new i.Z(t)]),this._setFakeOptions(o);else if(t instanceof n.Z){const e=!!o&&!!o.backward;let n;if(void 0===s)throw new c.ZP("view-selection-setto-required-second-parameter",this);n="in"==s?i.Z._createIn(t):"on"==s?i.Z._createOn(t):new i.Z(r.Z._createAt(t,s)),this._setRanges([n],e),this._setFakeOptions(o)}else{if(!(0,d.Z)(t))throw new c.ZP("view-selection-setto-not-selectable",this);this._setRanges(t,o&&o.backward),this._setFakeOptions(o)}this.fire("change")}setFocus(e,t){if(null===this.anchor)throw new c.ZP("view-selection-setfocus-no-ranges",this);const s=r.Z._createAt(e,t);if("same"==s.compareWith(this.focus))return;const o=this.anchor;this._ranges.pop(),"before"==s.compareWith(o)?this._addRange(new i.Z(s,o),!0):this._addRange(new i.Z(o,s)),this.fire("change")}_setRanges(e,t=!1){e=Array.from(e),this._ranges=[];for(const t of e)this._addRange(t);this._lastRangeBackward=!!t}_setFakeOptions(e={}){this._isFake=!!e.fake,this._fakeSelectionLabel=e.fake&&e.label||""}_addRange(e,t=!1){if(!(e instanceof i.Z))throw new c.ZP("view-selection-add-range-not-range",this);this._pushRange(e),this._lastRangeBackward=!!t}_pushRange(e){for(const t of this._ranges)if(e.isIntersecting(t))throw new c.ZP("view-selection-range-intersects",this,{addedRange:e,intersectingRange:t});this._ranges.push(new i.Z(e.start,e.end))}}u.prototype.is=function(e){return"selection"===e||"view:selection"===e}},"./packages/ckeditor5-engine/src/view/stylesmap.ts":(e,t,s)=>{"use strict";s.d(t,{A:()=>ee,Z:()=>Y});var o=s("./node_modules/lodash-es/isObject.js"),i=s("./node_modules/lodash-es/isArray.js"),r=s("./node_modules/lodash-es/isSymbol.js"),n=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,a=/^\w*$/;const c=function(e,t){if((0,i.Z)(e))return!1;var s=typeof e;return!("number"!=s&&"symbol"!=s&&"boolean"!=s&&null!=e&&!(0,r.Z)(e))||(a.test(e)||!n.test(e)||null!=t&&e in Object(t))};var l=s("./node_modules/lodash-es/_MapCache.js");function d(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var s=function(){var o=arguments,i=t?t.apply(this,o):o[0],r=s.cache;if(r.has(i))return r.get(i);var n=e.apply(this,o);return s.cache=r.set(i,n)||r,n};return s.cache=new(d.Cache||l.Z),s}d.Cache=l.Z;const h=d;var u=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,p=/\\(\\)?/g;const g=function(e){var t=h(e,(function(e){return 500===s.size&&s.clear(),e})),s=t.cache;return t}((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(u,(function(e,s,o,i){t.push(o?i.replace(p,"$1"):s||e)})),t}));var f=s("./node_modules/lodash-es/toString.js");const m=function(e,t){return(0,i.Z)(e)?e:c(e,t)?[e]:g((0,f.Z)(e))};const k=function(e){var t=null==e?0:e.length;return t?e[t-1]:void 0};const b=function(e){if("string"==typeof e||(0,r.Z)(e))return e;var t=e+"";return"0"==t&&1/e==-Infinity?"-0":t};const _=function(e,t){for(var s=0,o=(t=m(t,e)).length;null!=e&&s<o;)e=e[b(t[s++])];return s&&s==o?e:void 0};const w=function(e,t,s){var o=-1,i=e.length;t<0&&(t=-t>i?0:i+t),(s=s>i?i:s)<0&&(s+=i),i=t>s?0:s-t>>>0,t>>>=0;for(var r=Array(i);++o<i;)r[o]=e[o+t];return r};const v=function(e,t){return t.length<2?e:_(e,w(t,0,-1))};const y=function(e,t){return t=m(t,e),null==(e=v(e,t))||delete e[b(k(t))]};const Z=function(e,t){return null==e||y(e,t)};const P=function(e,t,s){var o=null==e?void 0:_(e,t);return void 0===o?s:o};var x=s("./node_modules/lodash-es/_Stack.js"),T=s("./node_modules/lodash-es/_baseAssignValue.js"),A=s("./node_modules/lodash-es/eq.js");const C=function(e,t,s){(void 0!==s&&!(0,A.Z)(e[t],s)||void 0===s&&!(t in e))&&(0,T.Z)(e,t,s)};const E=function(e){return function(t,s,o){for(var i=-1,r=Object(t),n=o(t),a=n.length;a--;){var c=n[e?a:++i];if(!1===s(r[c],c,r))break}return t}}();var S=s("./node_modules/lodash-es/_cloneBuffer.js"),j=s("./node_modules/lodash-es/_cloneTypedArray.js"),O=s("./node_modules/lodash-es/_copyArray.js"),R=s("./node_modules/lodash-es/_initCloneObject.js"),M=s("./node_modules/lodash-es/isArguments.js"),N=s("./node_modules/lodash-es/isArrayLike.js"),V=s("./node_modules/lodash-es/isObjectLike.js");const I=function(e){return(0,V.Z)(e)&&(0,N.Z)(e)};var D=s("./node_modules/lodash-es/isBuffer.js"),z=s("./node_modules/lodash-es/isFunction.js"),B=s("./node_modules/lodash-es/isPlainObject.js"),F=s("./node_modules/lodash-es/isTypedArray.js");const L=function(e,t){if(("constructor"!==t||"function"!=typeof e[t])&&"__proto__"!=t)return e[t]};var W=s("./node_modules/lodash-es/_copyObject.js"),$=s("./node_modules/lodash-es/keysIn.js");const q=function(e){return(0,W.Z)(e,(0,$.Z)(e))};const H=function(e,t,s,r,n,a,c){var l=L(e,s),d=L(t,s),h=c.get(d);if(h)C(e,s,h);else{var u=a?a(l,d,s+"",e,t,c):void 0,p=void 0===u;if(p){var g=(0,i.Z)(d),f=!g&&(0,D.Z)(d),m=!g&&!f&&(0,F.Z)(d);u=d,g||f||m?(0,i.Z)(l)?u=l:I(l)?u=(0,O.Z)(l):f?(p=!1,u=(0,S.Z)(d,!0)):m?(p=!1,u=(0,j.Z)(d,!0)):u=[]:(0,B.Z)(d)||(0,M.Z)(d)?(u=l,(0,M.Z)(l)?u=q(l):(0,o.Z)(l)&&!(0,z.Z)(l)||(u=(0,R.Z)(d))):p=!1}p&&(c.set(d,u),n(u,d,r,a,c),c.delete(d)),C(e,s,u)}};const U=function e(t,s,i,r,n){t!==s&&E(s,(function(a,c){if(n||(n=new x.Z),(0,o.Z)(a))H(t,s,c,i,e,r,n);else{var l=r?r(L(t,c),a,c+"",t,s,n):void 0;void 0===l&&(l=a),C(t,c,l)}}),$.Z)};const K=(0,s("./node_modules/lodash-es/_createAssigner.js").Z)((function(e,t,s){U(e,t,s)}));var G=s("./node_modules/lodash-es/_assignValue.js"),J=s("./node_modules/lodash-es/_isIndex.js");const Q=function(e,t,s,i){if(!(0,o.Z)(e))return e;for(var r=-1,n=(t=m(t,e)).length,a=n-1,c=e;null!=c&&++r<n;){var l=b(t[r]),d=s;if("__proto__"===l||"constructor"===l||"prototype"===l)return e;if(r!=a){var h=c[l];void 0===(d=i?i(h,l,c):void 0)&&(d=(0,o.Z)(h)?h:(0,J.Z)(t[r+1])?[]:{})}(0,G.Z)(c,l,d),c=c[l]}return e};const X=function(e,t,s){return null==e?e:Q(e,t,s)};class Y{constructor(e){this._styles={},this._styleProcessor=e}get isEmpty(){const e=Object.entries(this._styles);return!Array.from(e).length}get size(){return this.isEmpty?0:this.getStyleNames().length}setTo(e){this.clear();const t=Array.from(function(e){let t=null,s=0,o=0,i=null;const r=new Map;if(""===e)return r;";"!=e.charAt(e.length-1)&&(e+=";");for(let n=0;n<e.length;n++){const a=e.charAt(n);if(null===t)switch(a){case":":i||(i=e.substr(s,n-s),o=n+1);break;case'"':case"'":t=a;break;case";":{const t=e.substr(o,n-o);i&&r.set(i.trim(),t.trim()),i=null,s=n+1;break}}else a===t&&(t=null)}return r}(e).entries());for(const[e,s]of t)this._styleProcessor.toNormalizedForm(e,s,this._styles)}has(e){if(this.isEmpty)return!1;const t=this._styleProcessor.getReducedForm(e,this._styles).find((([t])=>t===e));return Array.isArray(t)}set(e,t){if((0,o.Z)(e))for(const[t,s]of Object.entries(e))this._styleProcessor.toNormalizedForm(t,s,this._styles);else this._styleProcessor.toNormalizedForm(e,t,this._styles)}remove(e){const t=te(e);Z(this._styles,t),delete this._styles[e],this._cleanEmptyObjectsOnPath(t)}getNormalized(e){return this._styleProcessor.getNormalized(e,this._styles)}toString(){return this.isEmpty?"":this._getStylesEntries().map((e=>e.join(":"))).sort().join(";")+";"}getAsString(e){if(this.isEmpty)return;if(this._styles[e]&&!(0,o.Z)(this._styles[e]))return this._styles[e];const t=this._styleProcessor.getReducedForm(e,this._styles).find((([t])=>t===e));return Array.isArray(t)?t[1]:void 0}getStyleNames(e=!1){if(this.isEmpty)return[];if(e)return this._styleProcessor.getStyleNames(this._styles);return this._getStylesEntries().map((([e])=>e))}clear(){this._styles={}}_getStylesEntries(){const e=[],t=Object.keys(this._styles);for(const s of t)e.push(...this._styleProcessor.getReducedForm(s,this._styles));return e}_cleanEmptyObjectsOnPath(e){const t=e.split(".");if(!(t.length>1))return;const s=t.splice(0,t.length-1).join("."),o=P(this._styles,s);if(!o)return;!Array.from(Object.keys(o)).length&&this.remove(s)}}class ee{constructor(){this._normalizers=new Map,this._extractors=new Map,this._reducers=new Map,this._consumables=new Map}toNormalizedForm(e,t,s){if((0,o.Z)(t))se(s,te(e),t);else if(this._normalizers.has(e)){const o=this._normalizers.get(e),{path:i,value:r}=o(t);se(s,i,r)}else se(s,e,t)}getNormalized(e,t){if(!e)return K({},t);if(void 0!==t[e])return t[e];if(this._extractors.has(e)){const s=this._extractors.get(e);if("string"==typeof s)return P(t,s);const o=s(e,t);if(o)return o}return P(t,te(e))}getReducedForm(e,t){const s=this.getNormalized(e,t);if(void 0===s)return[];if(this._reducers.has(e)){return this._reducers.get(e)(s)}return[[e,s]]}getStyleNames(e){const t=Array.from(this._consumables.keys()).filter((t=>{const s=this.getNormalized(t,e);return s&&"object"==typeof s?Object.keys(s).length:s})),s=new Set([...t,...Object.keys(e)]);return Array.from(s.values())}getRelatedStyles(e){return this._consumables.get(e)||[]}setNormalizer(e,t){this._normalizers.set(e,t)}setExtractor(e,t){this._extractors.set(e,t)}setReducer(e,t){this._reducers.set(e,t)}setStyleRelation(e,t){this._mapStyleNames(e,t);for(const s of t)this._mapStyleNames(s,[e])}_mapStyleNames(e,t){this._consumables.has(e)||this._consumables.set(e,[]),this._consumables.get(e).push(...t)}}function te(e){return e.replace("-",".")}function se(e,t,s){let i=s;(0,o.Z)(s)&&(i=K({},P(e,t),s)),X(e,t,i)}},"./packages/ckeditor5-engine/src/view/text.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-engine/src/view/node.ts");class i extends o.Z{constructor(e,t){super(e),this._textData=t}get data(){return this._textData}get _data(){return this.data}set _data(e){this._fireChange("text",this),this._textData=e}isSimilar(e){return e instanceof i&&(this===e||this.data===e.data)}_clone(){return new i(this.document,this.data)}}i.prototype.is=function(e){return"$text"===e||"view:$text"===e||"text"===e||"view:text"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-engine/src/view/textproxy.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-engine/src/view/typecheckable.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(e,t,s){if(super(),this.textNode=e,t<0||t>e.data.length)throw new i.ZP("view-textproxy-wrong-offsetintext",this);if(s<0||t+s>e.data.length)throw new i.ZP("view-textproxy-wrong-length",this);this.data=e.data.substring(t,t+s),this.offsetInText=t}get offsetSize(){return this.data.length}get isPartial(){return this.data.length!==this.textNode.data.length}get parent(){return this.textNode.parent}get root(){return this.textNode.root}get document(){return this.textNode.document}getAncestors(e={}){const t=[];let s=e.includeSelf?this.textNode:this.parent;for(;null!==s;)t[e.parentFirst?"push":"unshift"](s),s=s.parent;return t}}r.prototype.is=function(e){return"$textProxy"===e||"view:$textProxy"===e||"textProxy"===e||"view:textProxy"===e}},"./packages/ckeditor5-engine/src/view/treewalker.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-engine/src/view/element.ts"),i=s("./packages/ckeditor5-engine/src/view/text.ts"),r=s("./packages/ckeditor5-engine/src/view/textproxy.ts"),n=s("./packages/ckeditor5-engine/src/view/position.ts"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class c{constructor(e={}){if(!e.boundaries&&!e.startPosition)throw new a.ZP("view-tree-walker-no-start-position",null);if(e.direction&&"forward"!=e.direction&&"backward"!=e.direction)throw new a.ZP("view-tree-walker-unknown-direction",e.startPosition,{direction:e.direction});this.boundaries=e.boundaries||null,e.startPosition?this.position=n.Z._createAt(e.startPosition):this.position=n.Z._createAt(e.boundaries["backward"==e.direction?"end":"start"]),this.direction=e.direction||"forward",this.singleCharacters=!!e.singleCharacters,this.shallow=!!e.shallow,this.ignoreElementEnd=!!e.ignoreElementEnd,this._boundaryStartParent=this.boundaries?this.boundaries.start.parent:null,this._boundaryEndParent=this.boundaries?this.boundaries.end.parent:null}[Symbol.iterator](){return this}skip(e){let t,s,o;do{o=this.position,({done:t,value:s}=this.next())}while(!t&&e(s));t||(this.position=o)}next(){return"forward"==this.direction?this._next():this._previous()}_next(){let e=this.position.clone();const t=this.position,s=e.parent;if(null===s.parent&&e.offset===s.childCount)return{done:!0,value:void 0};if(s===this._boundaryEndParent&&e.offset==this.boundaries.end.offset)return{done:!0,value:void 0};let a;if(s instanceof i.Z){if(e.isAtEnd)return this.position=n.Z._createAfter(s),this._next();a=s.data[e.offset]}else a=s.getChild(e.offset);if(a instanceof o.Z)return this.shallow?e.offset++:e=new n.Z(a,0),this.position=e,this._formatReturnValue("elementStart",a,t,e,1);if(a instanceof i.Z){if(this.singleCharacters)return e=new n.Z(a,0),this.position=e,this._next();{let s,o=a.data.length;return a==this._boundaryEndParent?(o=this.boundaries.end.offset,s=new r.Z(a,0,o),e=n.Z._createAfter(s)):(s=new r.Z(a,0,a.data.length),e.offset++),this.position=e,this._formatReturnValue("text",s,t,e,o)}}if("string"==typeof a){let o;if(this.singleCharacters)o=1;else{o=(s===this._boundaryEndParent?this.boundaries.end.offset:s.data.length)-e.offset}const i=new r.Z(s,e.offset,o);return e.offset+=o,this.position=e,this._formatReturnValue("text",i,t,e,o)}return e=n.Z._createAfter(s),this.position=e,this.ignoreElementEnd?this._next():this._formatReturnValue("elementEnd",s,t,e)}_previous(){let e=this.position.clone();const t=this.position,s=e.parent;if(null===s.parent&&0===e.offset)return{done:!0,value:void 0};if(s==this._boundaryStartParent&&e.offset==this.boundaries.start.offset)return{done:!0,value:void 0};let a;if(s instanceof i.Z){if(e.isAtStart)return this.position=n.Z._createBefore(s),this._previous();a=s.data[e.offset-1]}else a=s.getChild(e.offset-1);if(a instanceof o.Z)return this.shallow?(e.offset--,this.position=e,this._formatReturnValue("elementStart",a,t,e,1)):(e=new n.Z(a,a.childCount),this.position=e,this.ignoreElementEnd?this._previous():this._formatReturnValue("elementEnd",a,t,e));if(a instanceof i.Z){if(this.singleCharacters)return e=new n.Z(a,a.data.length),this.position=e,this._previous();{let s,o=a.data.length;if(a==this._boundaryStartParent){const t=this.boundaries.start.offset;s=new r.Z(a,t,a.data.length-t),o=s.data.length,e=n.Z._createBefore(s)}else s=new r.Z(a,0,a.data.length),e.offset--;return this.position=e,this._formatReturnValue("text",s,t,e,o)}}if("string"==typeof a){let o;if(this.singleCharacters)o=1;else{const t=s===this._boundaryStartParent?this.boundaries.start.offset:0;o=e.offset-t}e.offset-=o;const i=new r.Z(s,e.offset,o);return this.position=e,this._formatReturnValue("text",i,t,e,o)}return e=n.Z._createBefore(s),this.position=e,this._formatReturnValue("elementStart",s,t,e,1)}_formatReturnValue(e,t,s,o,i){return t instanceof r.Z&&(t.offsetInText+t.data.length==t.textNode.data.length&&("forward"!=this.direction||this.boundaries&&this.boundaries.end.isEqual(this.position)?s=n.Z._createAfter(t.textNode):(o=n.Z._createAfter(t.textNode),this.position=o)),0===t.offsetInText&&("backward"!=this.direction||this.boundaries&&this.boundaries.start.isEqual(this.position)?s=n.Z._createBefore(t.textNode):(o=n.Z._createBefore(t.textNode),this.position=o))),{done:!1,value:{type:e,item:t,previousPosition:s,nextPosition:o,length:i}}}}},"./packages/ckeditor5-engine/src/view/typecheckable.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{is(){throw new Error("is() method is abstract")}}},"./packages/ckeditor5-engine/src/view/uielement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a,h:()=>c});var o=s("./packages/ckeditor5-engine/src/view/element.ts"),i=s("./packages/ckeditor5-engine/src/view/node.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-utils/src/keyboard.ts");class a extends o.Z{constructor(...e){super(...e),this.getFillerOffset=l}_insertChild(e,t){if(t&&(t instanceof i.Z||Array.from(t).length>0))throw new r.ZP("view-uielement-cannot-add",[this,t]);return 0}render(e,t){return this.toDomElement(e)}toDomElement(e){const t=e.createElement(this.name);for(const e of this.getAttributeKeys())t.setAttribute(e,this.getAttribute(e));return t}}function c(e){e.document.on("arrowKey",((t,s)=>function(e,t,s){if(t.keyCode==n.Do.arrowright){const e=t.domTarget.ownerDocument.defaultView.getSelection(),o=1==e.rangeCount&&e.getRangeAt(0).collapsed;if(o||t.shiftKey){const t=e.focusNode,i=e.focusOffset,r=s.domPositionToView(t,i);if(null===r)return;let n=!1;const a=r.getLastMatchingPosition((e=>(e.item.is("uiElement")&&(n=!0),!(!e.item.is("uiElement")&&!e.item.is("attributeElement")))));if(n){const t=s.viewPositionToDom(a);o?e.collapse(t.parent,t.offset):e.extend(t.parent,t.offset)}}}}(0,s,e.domConverter)),{priority:"low"})}function l(){return null}a.prototype.is=function(e,t){return t?t===this.name&&("uiElement"===e||"view:uiElement"===e||"element"===e||"view:element"===e):"uiElement"===e||"view:uiElement"===e||"element"===e||"view:element"===e||"node"===e||"view:node"===e}},"./packages/ckeditor5-utils/src/ckeditorerror.ts":(e,t,s)=>{"use strict";s.d(t,{H:()=>r,KE:()=>i,ZP:()=>o});class o extends Error{constructor(e,t,s){super(function(e,t){const s=new WeakSet,o=(e,t)=>{if("object"==typeof t&&null!==t){if(s.has(t))return`[object ${t.constructor.name}]`;s.add(t)}return t},i=t?` ${JSON.stringify(t,o)}`:"",r=n(e);return e+i+r}(e,s)),this.name="CKEditorError",this.context=t,this.data=s}is(e){return"CKEditorError"===e}static rethrowUnexpectedError(e,t){if(e.is&&e.is("CKEditorError"))throw e;const s=new o(e.message,t);throw s.stack=e.stack,s}}function i(e,t){console.warn(...a(e,t))}function r(e,t){console.error(...a(e,t))}function n(e){return`\nRead more: https://ckeditor.com/docs/ckeditor5/latest/support/error-codes.html#error-${e}`}function a(e,t){const s=n(e);return t?[e,t,s]:[e,s]}},"./packages/ckeditor5-utils/src/collection.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-utils/src/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-utils/src/uid.ts"),n=s("./packages/ckeditor5-utils/src/isiterable.ts");class a extends o.Q5{constructor(e={},t={}){super();const s=(0,n.Z)(e);if(s||(t=e),this._items=[],this._itemMap=new Map,this._idProperty=t.idProperty||"id",this._bindToExternalToInternalMap=new WeakMap,this._bindToInternalToExternalMap=new WeakMap,this._skippedIndexesFromExternal=[],s)for(const t of e)this._items.push(t),this._itemMap.set(this._getItemIdBeforeAdding(t),t)}get length(){return this._items.length}get first(){return this._items[0]||null}get last(){return this._items[this.length-1]||null}add(e,t){return this.addMany([e],t)}addMany(e,t){if(void 0===t)t=this._items.length;else if(t>this._items.length||t<0)throw new i.ZP("collection-add-item-invalid-index",this);let s=0;for(const o of e){const e=this._getItemIdBeforeAdding(o),i=t+s;this._items.splice(i,0,o),this._itemMap.set(e,o),this.fire("add",o,i),s++}return this.fire("change",{added:e,removed:[],index:t}),this}get(e){let t;if("string"==typeof e)t=this._itemMap.get(e);else{if("number"!=typeof e)throw new i.ZP("collection-get-invalid-arg",this);t=this._items[e]}return t||null}has(e){if("string"==typeof e)return this._itemMap.has(e);{const t=e[this._idProperty];return t&&this._itemMap.has(t)}}getIndex(e){let t;return t="string"==typeof e?this._itemMap.get(e):e,t?this._items.indexOf(t):-1}remove(e){const[t,s]=this._remove(e);return this.fire("change",{added:[],removed:[t],index:s}),t}map(e,t){return this._items.map(e,t)}find(e,t){return this._items.find(e,t)}filter(e,t){return this._items.filter(e,t)}clear(){this._bindToCollection&&(this.stopListening(this._bindToCollection),this._bindToCollection=null);const e=Array.from(this._items);for(;this.length;)this._remove(0);this.fire("change",{added:[],removed:e,index:0})}bindTo(e){if(this._bindToCollection)throw new i.ZP("collection-bind-to-rebind",this);return this._bindToCollection=e,{as:e=>{this._setUpBindToBinding((t=>new e(t)))},using:e=>{"function"==typeof e?this._setUpBindToBinding(e):this._setUpBindToBinding((t=>t[e]))}}}_setUpBindToBinding(e){const t=this._bindToCollection,s=(s,o,i)=>{const r=t._bindToCollection==this,n=t._bindToInternalToExternalMap.get(o);if(r&&n)this._bindToExternalToInternalMap.set(o,n),this._bindToInternalToExternalMap.set(n,o);else{const s=e(o);if(!s)return void this._skippedIndexesFromExternal.push(i);let r=i;for(const e of this._skippedIndexesFromExternal)i>e&&r--;for(const e of t._skippedIndexesFromExternal)r>=e&&r++;this._bindToExternalToInternalMap.set(o,s),this._bindToInternalToExternalMap.set(s,o),this.add(s,r);for(let e=0;e<t._skippedIndexesFromExternal.length;e++)r<=t._skippedIndexesFromExternal[e]&&t._skippedIndexesFromExternal[e]++}};for(const e of t)s(0,e,t.getIndex(e));this.listenTo(t,"add",s),this.listenTo(t,"remove",((e,t,s)=>{const o=this._bindToExternalToInternalMap.get(t);o&&this.remove(o),this._skippedIndexesFromExternal=this._skippedIndexesFromExternal.reduce(((e,t)=>(s<t&&e.push(t-1),s>t&&e.push(t),e)),[])}))}_getItemIdBeforeAdding(e){const t=this._idProperty;let s;if(t in e){if(s=e[t],"string"!=typeof s)throw new i.ZP("collection-add-invalid-id",this);if(this.get(s))throw new i.ZP("collection-add-item-already-exists",this)}else e[t]=s=(0,r.Z)();return s}_remove(e){let t,s,o,r=!1;const n=this._idProperty;if("string"==typeof e?(s=e,o=this._itemMap.get(s),r=!o,o&&(t=this._items.indexOf(o))):"number"==typeof e?(t=e,o=this._items[t],r=!o,o&&(s=o[n])):(o=e,s=o[n],t=this._items.indexOf(o),r=-1==t||!this._itemMap.get(s)),r)throw new i.ZP("collection-remove-404",this);this._items.splice(t,1),this._itemMap.delete(s);const a=this._bindToInternalToExternalMap.get(o);return this._bindToInternalToExternalMap.delete(o),this._bindToExternalToInternalMap.delete(a),this.fire("remove",o,t),[o,t]}[Symbol.iterator](){return this._items[Symbol.iterator]()}}},"./packages/ckeditor5-utils/src/comparearrays.ts":(e,t,s)=>{"use strict";function o(e,t){const s=Math.min(e.length,t.length);for(let o=0;o<s;o++)if(e[o]!=t[o])return o;return e.length==t.length?"same":e.length<t.length?"prefix":"extension"}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/count.ts":(e,t,s)=>{"use strict";function o(e){let t=0;for(const s of e)t++;return t}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/diff.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/fastdiff.ts");function i(e,t,s){s=s||function(e,t){return e===t};const o=e.length,r=t.length;if(o>200||r>200||o+r>300)return i.fastDiff(e,t,s,!0);let n,a;if(r<o){const s=e;e=t,t=s,n="delete",a="insert"}else n="insert",a="delete";const c=e.length,l=t.length,d=l-c,h={},u={};function p(o){const i=(void 0!==u[o-1]?u[o-1]:-1)+1,r=void 0!==u[o+1]?u[o+1]:-1,d=i>r?-1:1;h[o+d]&&(h[o]=h[o+d].slice(0)),h[o]||(h[o]=[]),h[o].push(i>r?n:a);let p=Math.max(i,r),g=p-o;for(;g<c&&p<l&&s(e[g],t[p]);)g++,p++,h[o].push("equal");return p}let g,f=0;do{for(g=-f;g<d;g++)u[g]=p(g);for(g=d+f;g>d;g--)u[g]=p(g);u[d]=p(d),f++}while(u[d]!==l);return h[d].slice(1)}i.fastDiff=o.Z},"./packages/ckeditor5-utils/src/dom/createelement.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-utils/src/isiterable.ts"),i=s("./node_modules/lodash-es/_baseGetTag.js"),r=s("./node_modules/lodash-es/isArray.js"),n=s("./node_modules/lodash-es/isObjectLike.js");const a=function(e){return"string"==typeof e||!(0,r.Z)(e)&&(0,n.Z)(e)&&"[object String]"==(0,i.Z)(e)};function c(e,t,s={},i=[]){const r=s&&s.xmlns,n=r?e.createElementNS(r,t):e.createElement(t);for(const e in s)n.setAttribute(e,s[e]);!a(i)&&(0,o.Z)(i)||(i=[i]);for(let t of i)a(t)&&(t=e.createTextNode(t)),n.appendChild(t);return n}},"./packages/ckeditor5-utils/src/dom/emittermixin.ts":(e,t,s)=>{"use strict";s.d(t,{Q:()=>c,Z:()=>a});var o=s("./packages/ckeditor5-utils/src/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/uid.ts"),r=s("./packages/ckeditor5-utils/src/dom/isnode.ts"),n=s("./packages/ckeditor5-utils/src/dom/iswindow.ts");function a(e){return class extends e{listenTo(e,t,s,i={}){if((0,r.Z)(e)||(0,n.Z)(e)){const o={capture:!!i.useCapture,passive:!!i.usePassive},r=this._getProxyEmitter(e,o)||new l(e,o);this.listenTo(r,t,s,i)}else o.Q5.prototype.listenTo.call(this,e,t,s,i)}stopListening(e,t,s){if((0,r.Z)(e)||(0,n.Z)(e)){const o=this._getAllProxyEmitters(e);for(const e of o)this.stopListening(e,t,s)}else o.Q5.prototype.stopListening.call(this,e,t,s)}_getProxyEmitter(e,t){return(0,o.Rl)(this,d(e,t))}_getAllProxyEmitters(e){return[{capture:!1,passive:!1},{capture:!1,passive:!0},{capture:!0,passive:!1},{capture:!0,passive:!0}].map((t=>this._getProxyEmitter(e,t))).filter((e=>!!e))}}}const c=a(o.Q5);["_getProxyEmitter","_getAllProxyEmitters","on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach((e=>{a[e]=c.prototype[e]}));class l extends o.Q5{constructor(e,t){super(),(0,o.Hv)(this,d(e,t)),this._domNode=e,this._options=t}attach(e){if(this._domListeners&&this._domListeners[e])return;const t=this._createDomListener(e);this._domNode.addEventListener(e,t,this._options),this._domListeners||(this._domListeners={}),this._domListeners[e]=t}detach(e){let t;!this._domListeners[e]||(t=this._events[e])&&t.callbacks.length||this._domListeners[e].removeListener()}_addEventListener(e,t,s){this.attach(e),o.Q5.prototype._addEventListener.call(this,e,t,s)}_removeEventListener(e,t){o.Q5.prototype._removeEventListener.call(this,e,t),this.detach(e)}_createDomListener(e){const t=t=>{this.fire(e,t)};return t.removeListener=()=>{this._domNode.removeEventListener(e,t,this._options),delete this._domListeners[e]},t}}function d(e,t){let s=function(e){return e["data-ck-expando"]||(e["data-ck-expando"]=(0,i.Z)())}(e);for(const e of Object.keys(t).sort())t[e]&&(s+="-"+e);return s}},"./packages/ckeditor5-utils/src/dom/getborderwidths.ts":(e,t,s)=>{"use strict";function o(e){const t=e.ownerDocument.defaultView.getComputedStyle(e);return{top:parseInt(t.borderTopWidth,10),right:parseInt(t.borderRightWidth,10),bottom:parseInt(t.borderBottomWidth,10),left:parseInt(t.borderLeftWidth,10)}}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/global.ts":(e,t,s)=>{"use strict";let o;s.d(t,{Z:()=>i});try{o={window,document}}catch(e){o={window:{},document:{}}}const i=o},"./packages/ckeditor5-utils/src/dom/iscomment.ts":(e,t,s)=>{"use strict";function o(e){return e&&e.nodeType===Node.COMMENT_NODE}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/isnode.ts":(e,t,s)=>{"use strict";function o(e){if(e){if(e.defaultView)return e instanceof e.defaultView.Document;if(e.ownerDocument&&e.ownerDocument.defaultView)return e instanceof e.ownerDocument.defaultView.Node}return!1}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/isrange.ts":(e,t,s)=>{"use strict";function o(e){return"[object Range]"==Object.prototype.toString.apply(e)}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/istext.ts":(e,t,s)=>{"use strict";function o(e){return"[object Text]"==Object.prototype.toString.call(e)}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/isvisible.ts":(e,t,s)=>{"use strict";function o(e){return!!(e&&e.getClientRects&&e.getClientRects().length)}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/iswindow.ts":(e,t,s)=>{"use strict";function o(e){const t=Object.prototype.toString.apply(e);return"[object Window]"==t||"[object global]"==t}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/position.ts":(e,t,s)=>{"use strict";s.d(t,{x:()=>a});var o=s("./packages/ckeditor5-utils/src/dom/global.ts"),i=s("./packages/ckeditor5-utils/src/dom/rect.ts");var r=s("./packages/ckeditor5-utils/src/dom/getborderwidths.ts"),n=s("./node_modules/lodash-es/isFunction.js");function a({element:e,target:t,positions:s,limiter:r,fitInViewport:a,viewportOffsetConfig:c}){(0,n.Z)(t)&&(t=t()),(0,n.Z)(r)&&(r=r());const d=function(e){return e&&e.parentNode?e.offsetParent===o.Z.document.body?null:e.offsetParent:null}(e),h=new i.Z(e),u=new i.Z(t);let p;const g=a&&function(e){e=Object.assign({top:0,bottom:0,left:0,right:0},e);const t=new i.Z(o.Z.window);return t.top+=e.top,t.height-=e.top,t.bottom-=e.bottom,t.height-=e.bottom,t}(c)||null,f={targetRect:u,elementRect:h,positionedElementAncestor:d,viewportRect:g};if(r||a){const e=r&&new i.Z(r).getVisible();Object.assign(f,{limiterRect:e,viewportRect:g}),p=function(e,t){const{elementRect:s}=t,o=s.getArea(),i=e.map((e=>new l(e,t))).filter((e=>!!e.name));let r=0,n=null;for(const e of i){const{limiterIntersectionArea:t,viewportIntersectionArea:s}=e;if(t===o)return e;const i=s**2+t**2;i>r&&(r=i,n=e)}return n}(s,f)||new l(s[0],f)}else p=new l(s[0],f);return p}function c(e){const{scrollX:t,scrollY:s}=o.Z.window;return e.clone().moveBy(t,s)}class l{constructor(e,t){const s=e(t.targetRect,t.elementRect,t.viewportRect);if(!s)return;const{left:o,top:i,name:r,config:n}=s;this.name=r,this.config=n,this._positioningFunctionCorrdinates={left:o,top:i},this._options=t}get left(){return this._absoluteRect.left}get top(){return this._absoluteRect.top}get limiterIntersectionArea(){const e=this._options.limiterRect;if(e){const t=this._options.viewportRect;if(!t)return e.getIntersectionArea(this._rect);{const s=e.getIntersection(t);if(s)return s.getIntersectionArea(this._rect)}}return 0}get viewportIntersectionArea(){const e=this._options.viewportRect;return e?e.getIntersectionArea(this._rect):0}get _rect(){return this._cachedRect||(this._cachedRect=this._options.elementRect.clone().moveTo(this._positioningFunctionCorrdinates.left,this._positioningFunctionCorrdinates.top)),this._cachedRect}get _absoluteRect(){return this._cachedAbsoluteRect||(this._cachedAbsoluteRect=c(this._rect),this._options.positionedElementAncestor&&function(e,t){const s=c(new i.Z(t)),o=(0,r.Z)(t);let n=0,a=0;n-=s.left,a-=s.top,n+=t.scrollLeft,a+=t.scrollTop,n-=o.left,a-=o.top,e.moveBy(n,a)}(this._cachedAbsoluteRect,this._options.positionedElementAncestor)),this._cachedAbsoluteRect}}},"./packages/ckeditor5-utils/src/dom/rect.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-utils/src/dom/isrange.ts"),i=s("./packages/ckeditor5-utils/src/dom/iswindow.ts"),r=s("./packages/ckeditor5-utils/src/dom/getborderwidths.ts"),n=s("./packages/ckeditor5-utils/src/dom/istext.ts"),a=s("./node_modules/lodash-es/isElement.js");const c=["top","right","bottom","left","width","height"];class l{constructor(e){const t=(0,o.Z)(e);if(Object.defineProperty(this,"_source",{value:e._source||e,writable:!0,enumerable:!1}),u(e)||t)if(t){const t=l.getDomRangeRects(e);d(this,l.getBoundingRect(t))}else d(this,e.getBoundingClientRect());else if((0,i.Z)(e)){const{innerWidth:t,innerHeight:s}=e;d(this,{top:0,right:t,bottom:s,left:0,width:t,height:s})}else d(this,e)}clone(){return new l(this)}moveTo(e,t){return this.top=t,this.right=e+this.width,this.bottom=t+this.height,this.left=e,this}moveBy(e,t){return this.top+=t,this.right+=e,this.left+=e,this.bottom+=t,this}getIntersection(e){const t={top:Math.max(this.top,e.top),right:Math.min(this.right,e.right),bottom:Math.min(this.bottom,e.bottom),left:Math.max(this.left,e.left),width:0,height:0};return t.width=t.right-t.left,t.height=t.bottom-t.top,t.width<0||t.height<0?null:new l(t)}getIntersectionArea(e){const t=this.getIntersection(e);return t?t.getArea():0}getArea(){return this.width*this.height}getVisible(){const e=this._source;let t=this.clone();if(!h(e)){let s=e.parentNode||e.commonAncestorContainer;for(;s&&!h(s);){const e=new l(s),o=t.getIntersection(e);if(!o)return null;o.getArea()<t.getArea()&&(t=o),s=s.parentNode}}return t}isEqual(e){for(const t of c)if(this[t]!==e[t])return!1;return!0}contains(e){const t=this.getIntersection(e);return!(!t||!t.isEqual(e))}excludeScrollbarsAndBorders(){const e=this._source;let t,s,o;if((0,i.Z)(e))t=e.innerWidth-e.document.documentElement.clientWidth,s=e.innerHeight-e.document.documentElement.clientHeight,o=e.getComputedStyle(e.document.documentElement).direction;else{const i=(0,r.Z)(e);t=e.offsetWidth-e.clientWidth-i.left-i.right,s=e.offsetHeight-e.clientHeight-i.top-i.bottom,o=e.ownerDocument.defaultView.getComputedStyle(e).direction,this.left+=i.left,this.top+=i.top,this.right-=i.right,this.bottom-=i.bottom,this.width=this.right-this.left,this.height=this.bottom-this.top}return this.width-=t,"ltr"===o?this.right-=t:this.left+=t,this.height-=s,this.bottom-=s,this}static getDomRangeRects(e){const t=[],s=Array.from(e.getClientRects());if(s.length)for(const e of s)t.push(new l(e));else{let s=e.startContainer;(0,n.Z)(s)&&(s=s.parentNode);const o=new l(s.getBoundingClientRect());o.right=o.left,o.width=0,t.push(o)}return t}static getBoundingRect(e){const t={left:Number.POSITIVE_INFINITY,top:Number.POSITIVE_INFINITY,right:Number.NEGATIVE_INFINITY,bottom:Number.NEGATIVE_INFINITY,width:0,height:0};let s=0;for(const o of e)s++,t.left=Math.min(t.left,o.left),t.top=Math.min(t.top,o.top),t.right=Math.max(t.right,o.right),t.bottom=Math.max(t.bottom,o.bottom);return 0==s?null:(t.width=t.right-t.left,t.height=t.bottom-t.top,new l(t))}}function d(e,t){for(const s of c)e[s]=t[s]}function h(e){return!!u(e)&&e===e.ownerDocument.body}function u(e){return(0,a.Z)(e)}},"./packages/ckeditor5-utils/src/dom/resizeobserver.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/dom/global.ts");class i{constructor(e,t){i._observerInstance||i._createObserver(),this._element=e,this._callback=t,i._addElementCallback(e,t),i._observerInstance.observe(e)}destroy(){i._deleteElementCallback(this._element,this._callback)}static _addElementCallback(e,t){i._elementCallbacks||(i._elementCallbacks=new Map);let s=i._elementCallbacks.get(e);s||(s=new Set,i._elementCallbacks.set(e,s)),s.add(t)}static _deleteElementCallback(e,t){const s=i._getElementCallbacks(e);s&&(s.delete(t),s.size||(i._elementCallbacks.delete(e),i._observerInstance.unobserve(e))),i._elementCallbacks&&!i._elementCallbacks.size&&(i._observerInstance=null,i._elementCallbacks=null)}static _getElementCallbacks(e){return i._elementCallbacks?i._elementCallbacks.get(e):null}static _createObserver(){i._observerInstance=new o.Z.window.ResizeObserver((e=>{for(const t of e){const e=i._getElementCallbacks(t.target);if(e)for(const s of e)s(t)}}))}}i._observerInstance=null,i._elementCallbacks=null},"./packages/ckeditor5-utils/src/dom/scroll.ts":(e,t,s)=>{"use strict";s.d(t,{F:()=>a,m:()=>n});var o=s("./packages/ckeditor5-utils/src/dom/isrange.ts"),i=s("./packages/ckeditor5-utils/src/dom/rect.ts"),r=s("./packages/ckeditor5-utils/src/dom/istext.ts");function n({target:e,viewportOffset:t=0}){const s=g(e);let o=s,i=null;for(;o;){let r;r=f(o==s?e:i),l(r,(()=>m(e,o)));const n=m(e,o);if(c(o,n,t),o.parent!=o){if(i=o.frameElement,o=o.parent,!i)return}else o=null}}function a(e){l(f(e),(()=>new i.Z(e)))}function c(e,t,s){const o=t.clone().moveBy(0,s),r=t.clone().moveBy(0,-s),n=new i.Z(e).excludeScrollbarsAndBorders();if(![r,o].every((e=>n.contains(e)))){let{scrollX:i,scrollY:a}=e;h(r,n)?a-=n.top-t.top+s:d(o,n)&&(a+=t.bottom-n.bottom+s),u(t,n)?i-=n.left-t.left+s:p(t,n)&&(i+=t.right-n.right+s),e.scrollTo(i,a)}}function l(e,t){const s=g(e);let o,r;for(;e!=s.document.body;)r=t(),o=new i.Z(e).excludeScrollbarsAndBorders(),o.contains(r)||(h(r,o)?e.scrollTop-=o.top-r.top:d(r,o)&&(e.scrollTop+=r.bottom-o.bottom),u(r,o)?e.scrollLeft-=o.left-r.left:p(r,o)&&(e.scrollLeft+=r.right-o.right)),e=e.parentNode}function d(e,t){return e.bottom>t.bottom}function h(e,t){return e.top<t.top}function u(e,t){return e.left<t.left}function p(e,t){return e.right>t.right}function g(e){return(0,o.Z)(e)?e.startContainer.ownerDocument.defaultView:e.ownerDocument.defaultView}function f(e){if((0,o.Z)(e)){let t=e.commonAncestorContainer;return(0,r.Z)(t)&&(t=t.parentNode),t}return e.parentNode}function m(e,t){const s=g(e),o=new i.Z(e);if(s===t)return o;{let e=s;for(;e!=t;){const t=e.frameElement,s=new i.Z(t).excludeScrollbarsAndBorders();o.moveBy(s.left,s.top),e=e.parent}}return o}},"./packages/ckeditor5-utils/src/dom/setdatainelement.ts":(e,t,s)=>{"use strict";function o(e,t){e instanceof HTMLTextAreaElement&&(e.value=t),e.innerHTML=t}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/dom/tounit.ts":(e,t,s)=>{"use strict";function o(e){return t=>t+e}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/emittermixin.ts":(e,t,s)=>{"use strict";s.d(t,{Hv:()=>g,Q5:()=>u,Rl:()=>p,ZP:()=>h});var o=s("./packages/ckeditor5-utils/src/eventinfo.ts"),i=s("./packages/ckeditor5-utils/src/uid.ts"),r=s("./packages/ckeditor5-utils/src/priorities.ts"),n=s("./packages/ckeditor5-utils/src/inserttopriorityarray.ts"),a=(s("./packages/ckeditor5-utils/src/version.ts"),s("./packages/ckeditor5-utils/src/ckeditorerror.ts"));const c=Symbol("listeningTo"),l=Symbol("emitterId"),d=Symbol("delegations");function h(e){return class extends e{on(e,t,s){this.listenTo(this,e,t,s)}once(e,t,s){let o=!1;this.listenTo(this,e,((e,...s)=>{o||(o=!0,e.off(),t.call(this,e,...s))}),s)}off(e,t){this.stopListening(this,e,t)}listenTo(e,t,s,o={}){let i,r;this[c]||(this[c]={});const n=this[c];f(e)||g(e);const a=f(e);(i=n[a])||(i=n[a]={emitter:e,callbacks:{}}),(r=i.callbacks[t])||(r=i.callbacks[t]=[]),r.push(s),function(e,t,s,o,i){t._addEventListener?t._addEventListener(s,o,i):e._addEventListener.call(t,s,o,i)}(this,e,t,s,o)}stopListening(e,t,s){const o=this[c];let i=e&&f(e);const r=o&&i?o[i]:void 0,n=r&&t?r.callbacks[t]:void 0;if(!(!o||e&&!r||t&&!n))if(s){w(this,e,t,s);-1!==n.indexOf(s)&&(1===n.length?delete r.callbacks[t]:w(this,e,t,s))}else if(n){for(;s=n.pop();)w(this,e,t,s);delete r.callbacks[t]}else if(r){for(t in r.callbacks)this.stopListening(e,t);delete o[i]}else{for(i in o)this.stopListening(o[i].emitter);delete this[c]}}fire(e,...t){try{const s=e instanceof o.Z?e:new o.Z(this,e),i=s.name;let r=b(this,i);if(s.path.push(this),r){const e=[s,...t];r=Array.from(r);for(let t=0;t<r.length&&(r[t].callback.apply(this,e),s.off.called&&(delete s.off.called,this._removeEventListener(i,r[t].callback)),!s.stop.called);t++);}const n=this[d];if(n){const e=n.get(i),o=n.get("*");e&&_(e,s,t),o&&_(o,s,t)}return s.return}catch(e){a.ZP.rethrowUnexpectedError(e,this)}}delegate(...e){return{to:(t,s)=>{this[d]||(this[d]=new Map),e.forEach((e=>{const o=this[d].get(e);o?o.set(t,s):this[d].set(e,new Map([[t,s]]))}))}}}stopDelegating(e,t){if(this[d])if(e)if(t){const s=this[d].get(e);s&&s.delete(t)}else this[d].delete(e);else this[d].clear()}_addEventListener(e,t,s){!function(e,t){const s=m(e);if(s[t])return;let o=t,i=null;const r=[];for(;""!==o&&!s[o];)s[o]={callbacks:[],childEvents:[]},r.push(s[o]),i&&s[o].childEvents.push(i),i=o,o=o.substr(0,o.lastIndexOf(":"));if(""!==o){for(const e of r)e.callbacks=s[o].callbacks.slice();s[o].childEvents.push(i)}}(this,e);const o=k(this,e),i={callback:t,priority:r.Z.get(s.priority)};for(const e of o)(0,n.Z)(e,i)}_removeEventListener(e,t){const s=k(this,e);for(const e of s)for(let s=0;s<e.length;s++)e[s].callback==t&&(e.splice(s,1),s--)}}}const u=h(Object);function p(e,t){const s=e[c];return s&&s[t]?s[t].emitter:null}function g(e,t){e[l]||(e[l]=t||(0,i.Z)())}function f(e){return e[l]}function m(e){return e._events||Object.defineProperty(e,"_events",{value:{}}),e._events}function k(e,t){const s=m(e)[t];if(!s)return[];let o=[s.callbacks];for(let t=0;t<s.childEvents.length;t++){const i=k(e,s.childEvents[t]);o=o.concat(i)}return o}function b(e,t){let s;return e._events&&(s=e._events[t])&&s.callbacks.length?s.callbacks:t.indexOf(":")>-1?b(e,t.substr(0,t.lastIndexOf(":"))):null}function _(e,t,s){for(let[i,r]of e){r?"function"==typeof r&&(r=r(t.name)):r=t.name;const e=new o.Z(t.source,r);e.path=[...t.path],i.fire(e,...s)}}function w(e,t,s,o){t._removeEventListener?t._removeEventListener(s,o):e._removeEventListener.call(t,s,o)}["on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach((e=>{h[e]=u.prototype[e]}))},"./packages/ckeditor5-utils/src/env.ts":(e,t,s)=>{"use strict";s.d(t,{ZP:()=>r});const o=function(){try{return navigator.userAgent.toLowerCase()}catch(e){return""}}(),i={isMac:n(o),isWindows:function(e){return e.indexOf("windows")>-1}(o),isGecko:function(e){return!!e.match(/gecko\/\d+/)}(o),isSafari:function(e){return e.indexOf(" applewebkit/")>-1&&-1===e.indexOf("chrome")}(o),isiOS:function(e){return!!e.match(/iphone|ipad/i)||n(e)&&navigator.maxTouchPoints>0}(o),isAndroid:function(e){return e.indexOf("android")>-1}(o),isBlink:function(e){return e.indexOf("chrome/")>-1&&e.indexOf("edge/")<0}(o),features:{isRegExpUnicodePropertySupported:function(){let e=!1;try{e=0==="ć".search(new RegExp("[\\p{L}]","u"))}catch(e){}return e}()}},r=i;function n(e){return e.indexOf("macintosh")>-1}},"./packages/ckeditor5-utils/src/eventinfo.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});const o=function(){return function e(){e.called=!0}};class i{constructor(e,t){this.source=e,this.name=t,this.path=[],this.stop=o(),this.off=o()}}},"./packages/ckeditor5-utils/src/fastdiff.ts":(e,t,s)=>{"use strict";function o(e,t,s,o=!1){s=s||function(e,t){return e===t};const n=Array.isArray(e)?e:Array.prototype.slice.call(e),a=Array.isArray(t)?t:Array.prototype.slice.call(t),c=function(e,t,s){const o=i(e,t,s);if(-1===o)return{firstIndex:-1,lastIndexOld:-1,lastIndexNew:-1};const n=r(e,o),a=r(t,o),c=i(n,a,s),l=e.length-c,d=t.length-c;return{firstIndex:o,lastIndexOld:l,lastIndexNew:d}}(n,a,s);return o?function(e,t){const{firstIndex:s,lastIndexOld:o,lastIndexNew:i}=e;if(-1===s)return Array(t).fill("equal");let r=[];s>0&&(r=r.concat(Array(s).fill("equal")));i-s>0&&(r=r.concat(Array(i-s).fill("insert")));o-s>0&&(r=r.concat(Array(o-s).fill("delete")));i<t&&(r=r.concat(Array(t-i).fill("equal")));return r}(c,a.length):function(e,t){const s=[],{firstIndex:o,lastIndexOld:i,lastIndexNew:r}=t;r-o>0&&s.push({index:o,type:"insert",values:e.slice(o,r)});i-o>0&&s.push({index:o+(r-o),type:"delete",howMany:i-o});return s}(a,c)}function i(e,t,s){for(let o=0;o<Math.max(e.length,t.length);o++)if(void 0===e[o]||void 0===t[o]||!s(e[o],t[o]))return o;return-1}function r(e,t){return e.slice(t).reverse()}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/first.ts":(e,t,s)=>{"use strict";function o(e){const t=e.next();return t.done?null:t.value}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/focustracker.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/observablemixin.ts"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class n extends((0,o.Z)(i.y)){constructor(){super(),this.set("isFocused",!1),this.set("focusedElement",null),this._elements=new Set,this._nextEventLoopTimeout=null}add(e){if(this._elements.has(e))throw new r.ZP("focustracker-add-element-already-exist",this);this.listenTo(e,"focus",(()=>this._focus(e)),{useCapture:!0}),this.listenTo(e,"blur",(()=>this._blur()),{useCapture:!0}),this._elements.add(e)}remove(e){e===this.focusedElement&&this._blur(),this._elements.has(e)&&(this.stopListening(e),this._elements.delete(e))}destroy(){this.stopListening()}_focus(e){clearTimeout(this._nextEventLoopTimeout),this.focusedElement=e,this.isFocused=!0}_blur(){clearTimeout(this._nextEventLoopTimeout),this._nextEventLoopTimeout=setTimeout((()=>{this.focusedElement=null,this.isFocused=!1}),0)}}},"./packages/ckeditor5-utils/src/index.ts":(e,t,s)=>{"use strict";s.d(t,{Bb:()=>c.ZP,FE:()=>Z.Z,Xu:()=>h.Z,a6:()=>l,ln:()=>n.ZP,Rh:()=>x.Z,VD:()=>T.Z,go:()=>y.Z,Re:()=>a.Z,UL:()=>g.Z,do:()=>f.Z,az:()=>d.Z,Hg:()=>i.Z,OB:()=>o.ZP,Ps:()=>P.Z,Cq:()=>w.Cq,yy:()=>p,XU:()=>w.XU,j9:()=>v.j,mA:()=>w.mA,CO:()=>u.Z,dj:()=>w.dj,Zt:()=>w.Zt,pn:()=>b.Z,Do:()=>w.Do,H:()=>c.H,KE:()=>c.KE,CD:()=>r.Z,Zz:()=>w.Zz,tA:()=>E.Z,F0:()=>_.F,mR:()=>_.m,jS:()=>m.Z,qo:()=>A.Z,qL:()=>C.Z,nn:()=>k.Z,hQ:()=>S.Z,i8:()=>j.Z});var o=s("./packages/ckeditor5-utils/src/env.ts"),i=s("./packages/ckeditor5-utils/src/diff.ts"),r=s("./packages/ckeditor5-utils/src/mix.ts"),n=s("./packages/ckeditor5-utils/src/emittermixin.ts"),a=s("./packages/ckeditor5-utils/src/observablemixin.ts"),c=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class l{constructor(){this._replacedElements=[]}replace(e,t){this._replacedElements.push({element:e,newElement:t}),e.style.display="none",t&&e.parentNode.insertBefore(t,e.nextSibling)}restore(){this._replacedElements.forEach((({element:e,newElement:t})=>{e.style.display="",t&&t.remove()})),this._replacedElements=[]}}var d=s("./packages/ckeditor5-utils/src/dom/createelement.ts"),h=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),u=s("./packages/ckeditor5-utils/src/dom/global.ts");function p(e){return e instanceof HTMLTextAreaElement?e.value:e.innerHTML}var g=s("./packages/ckeditor5-utils/src/dom/rect.ts"),f=s("./packages/ckeditor5-utils/src/dom/resizeobserver.ts"),m=s("./packages/ckeditor5-utils/src/dom/setdatainelement.ts"),k=s("./packages/ckeditor5-utils/src/dom/tounit.ts"),b=s("./packages/ckeditor5-utils/src/dom/isvisible.ts"),_=s("./packages/ckeditor5-utils/src/dom/scroll.ts"),w=s("./packages/ckeditor5-utils/src/keyboard.ts"),v=s("./packages/ckeditor5-utils/src/language.ts"),y=s("./packages/ckeditor5-utils/src/locale.ts"),Z=s("./packages/ckeditor5-utils/src/collection.ts"),P=s("./packages/ckeditor5-utils/src/first.ts"),x=s("./packages/ckeditor5-utils/src/focustracker.ts"),T=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),A=s("./packages/ckeditor5-utils/src/toarray.ts"),C=s("./packages/ckeditor5-utils/src/tomap.ts"),E=s("./packages/ckeditor5-utils/src/priorities.ts"),S=s("./packages/ckeditor5-utils/src/uid.ts"),j=s("./packages/ckeditor5-utils/src/version.ts")},"./packages/ckeditor5-utils/src/inserttopriorityarray.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/priorities.ts");function i(e,t){const s=o.Z.get(t.priority);for(let i=0;i<e.length;i++)if(o.Z.get(e[i].priority)<s)return void e.splice(i,0,t);e.push(t)}},"./packages/ckeditor5-utils/src/isiterable.ts":(e,t,s)=>{"use strict";function o(e){return!(!e||!e[Symbol.iterator])}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/keyboard.ts":(e,t,s)=>{"use strict";s.d(t,{Cq:()=>l,Do:()=>a,XU:()=>h,Zt:()=>g,Zz:()=>d,dj:()=>u,mA:()=>p});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/env.ts");const r={ctrl:"⌃",cmd:"⌘",alt:"⌥",shift:"⇧"},n={ctrl:"Ctrl+",alt:"Alt+",shift:"Shift+"},a=function(){const e={arrowleft:37,arrowup:38,arrowright:39,arrowdown:40,backspace:8,delete:46,enter:13,space:32,esc:27,tab:9,ctrl:1114112,shift:2228224,alt:4456448,cmd:8912896};for(let t=65;t<=90;t++){const s=String.fromCharCode(t);e[s.toLowerCase()]=t}for(let t=48;t<=57;t++)e[t-48]=t;for(let t=112;t<=123;t++)e["f"+(t-111)]=t;for(const t of"`-=[];',./\\")e[t]=t.charCodeAt(0);return e}(),c=Object.fromEntries(Object.entries(a).map((([e,t])=>[t,e.charAt(0).toUpperCase()+e.slice(1)])));function l(e){let t;if("string"==typeof e){if(t=a[e.toLowerCase()],!t)throw new o.ZP("keyboard-unknown-key",null,{key:e})}else t=e.keyCode+(e.altKey?a.alt:0)+(e.ctrlKey?a.ctrl:0)+(e.shiftKey?a.shift:0)+(e.metaKey?a.cmd:0);return t}function d(e){return"string"==typeof e&&(e=function(e){return e.split("+").map((e=>e.trim()))}(e)),e.map((e=>"string"==typeof e?function(e){if(e.endsWith("!"))return l(e.slice(0,-1));const t=l(e);return i.ZP.isMac&&t==a.ctrl?a.cmd:t}(e):e)).reduce(((e,t)=>t+e),0)}function h(e){let t=d(e);return Object.entries(i.ZP.isMac?r:n).reduce(((e,[s,o])=>(0!=(t&a[s])&&(t&=~a[s],e+=o),e)),"")+(t?c[t]:"")}function u(e){return e==a.arrowright||e==a.arrowleft||e==a.arrowup||e==a.arrowdown}function p(e,t){const s="ltr"===t;switch(e){case a.arrowleft:return s?"left":"right";case a.arrowright:return s?"right":"left";case a.arrowup:return"up";case a.arrowdown:return"down"}}function g(e,t){const s=p(e,t);return"down"===s||"right"===s}},"./packages/ckeditor5-utils/src/keystrokehandler.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/keyboard.ts");class r{constructor(){this._listener=Object.create(o.Z)}listenTo(e){this._listener.listenTo(e,"keydown",((e,t)=>{this._listener.fire("_keydown:"+(0,i.Cq)(t),t)}))}set(e,t,s={}){const o=(0,i.Zz)(e),r=s.priority;this._listener.listenTo(this._listener,"_keydown:"+o,((e,s)=>{t(s,(()=>{s.preventDefault(),s.stopPropagation(),e.stop()})),e.return=!0}),{priority:r})}press(e){return!!this._listener.fire("_keydown:"+(0,i.Cq)(e),e)}destroy(){this._listener.stopListening()}}},"./packages/ckeditor5-utils/src/language.ts":(e,t,s)=>{"use strict";s.d(t,{j:()=>i});const o=["ar","ara","fa","per","fas","he","heb","ku","kur","ug","uig"];function i(e){return o.includes(e)?"rtl":"ltr"}},"./packages/ckeditor5-utils/src/locale.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-utils/src/toarray.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./packages/ckeditor5-utils/src/dom/global.ts");function n(e,t,s=1){if("number"!=typeof s)throw new i.ZP("translation-service-quantity-not-a-number",null,{quantity:s});const o=Object.keys(r.Z.window.CKEDITOR_TRANSLATIONS).length;1===o&&(e=Object.keys(r.Z.window.CKEDITOR_TRANSLATIONS)[0]);const n=t.id||t.string;if(0===o||!function(e,t){return!!r.Z.window.CKEDITOR_TRANSLATIONS[e]&&!!r.Z.window.CKEDITOR_TRANSLATIONS[e].dictionary[t]}(e,n))return 1!==s?t.plural:t.string;const a=r.Z.window.CKEDITOR_TRANSLATIONS[e].dictionary,c=r.Z.window.CKEDITOR_TRANSLATIONS[e].getPluralForm||(e=>1===e?0:1),l=a[n];if("string"==typeof l)return l;return l[Number(c(s))]}r.Z.window.CKEDITOR_TRANSLATIONS||(r.Z.window.CKEDITOR_TRANSLATIONS={});var a=s("./packages/ckeditor5-utils/src/language.ts");class c{constructor(e={}){this.uiLanguage=e.uiLanguage||"en",this.contentLanguage=e.contentLanguage||this.uiLanguage,this.uiLanguageDirection=(0,a.j)(this.uiLanguage),this.contentLanguageDirection=(0,a.j)(this.contentLanguage),this.t=(e,t)=>this._t(e,t)}get language(){return console.warn("locale-deprecated-language-property: The Locale#language property has been deprecated and will be removed in the near future. Please use #uiLanguage and #contentLanguage properties instead."),this.uiLanguage}_t(e,t=[]){t=(0,o.Z)(t),"string"==typeof e&&(e={string:e});const s=!!e.plural?t[0]:1;return function(e,t){return e.replace(/%(\d+)/g,((e,s)=>s<t.length?t[s]:e))}(n(this.uiLanguage,e,s),t)}}},"./packages/ckeditor5-utils/src/mix.ts":(e,t,s)=>{"use strict";function o(e,...t){t.forEach((t=>{const s=Object.getOwnPropertyNames(t),o=Object.getOwnPropertySymbols(t);s.concat(o).forEach((s=>{if(s in e.prototype)return;if("function"==typeof t&&("length"==s||"name"==s||"prototype"==s))return;const o=Object.getOwnPropertyDescriptor(t,s);o.enumerable=!1,Object.defineProperty(e.prototype,s,o)}))}))}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/observablemixin.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h,y:()=>u});var o=s("./packages/ckeditor5-utils/src/emittermixin.ts"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),r=s("./node_modules/lodash-es/isObject.js");const n=Symbol("observableProperties"),a=Symbol("boundObservables"),c=Symbol("boundProperties"),l=Symbol("decoratedMethods"),d=Symbol("decoratedOriginal");function h(e){return class extends e{set(e,t){if((0,r.Z)(e))return void Object.keys(e).forEach((t=>{this.set(t,e[t])}),this);p(this);const s=this[n];if(e in this&&!s.has(e))throw new i.ZP("observable-set-cannot-override",this);Object.defineProperty(this,e,{enumerable:!0,configurable:!0,get:()=>s.get(e),set(t){const o=s.get(e);let i=this.fire(`set:${e}`,e,t,o);void 0===i&&(i=t),o===i&&s.has(e)||(s.set(e,i),this.fire(`change:${e}`,e,i,o))}}),this[e]=t}bind(...e){if(!e.length||!m(e))throw new i.ZP("observable-bind-wrong-properties",this);if(new Set(e).size!==e.length)throw new i.ZP("observable-bind-duplicate-properties",this);p(this);const t=this[c];e.forEach((e=>{if(t.has(e))throw new i.ZP("observable-bind-rebind",this)}));const s=new Map;return e.forEach((e=>{const o={property:e,to:[]};t.set(e,o),s.set(e,o)})),{to:g,toMany:f,_observable:this,_bindProperties:e,_to:[],_bindings:s}}unbind(...e){if(!this[n])return;const t=this[c],s=this[a];if(e.length){if(!m(e))throw new i.ZP("observable-unbind-wrong-properties",this);e.forEach((e=>{const o=t.get(e);o&&(o.to.forEach((([e,t])=>{const i=s.get(e),r=i[t];r.delete(o),r.size||delete i[t],Object.keys(i).length||(s.delete(e),this.stopListening(e,"change"))})),t.delete(e))}))}else s.forEach(((e,t)=>{this.stopListening(t,"change")})),s.clear(),t.clear()}decorate(e){p(this);const t=this[e];if(!t)throw new i.ZP("observablemixin-cannot-decorate-undefined",this,{object:this,methodName:e});this.on(e,((e,s)=>{e.return=t.apply(this,s)})),this[e]=function(...t){return this.fire(e,t)},this[e][d]=t,this[l]||(this[l]=[]),this[l].push(e)}stopListening(e,t,s){if(!e&&this[l]){for(const e of this[l])this[e]=this[e][d];delete this[l]}o.Q5.prototype.stopListening.call(this,e,t,s)}}}const u=h(o.Q5);function p(e){e[n]||(Object.defineProperty(e,n,{value:new Map}),Object.defineProperty(e,a,{value:new Map}),Object.defineProperty(e,c,{value:new Map}))}function g(...e){const t=function(...e){if(!e.length)throw new i.ZP("observable-bind-to-parse-error",null);const t={to:[]};let s;"function"==typeof e[e.length-1]&&(t.callback=e.pop());return e.forEach((e=>{if("string"==typeof e)s.properties.push(e);else{if("object"!=typeof e)throw new i.ZP("observable-bind-to-parse-error",null);s={observable:e,properties:[]},t.to.push(s)}})),t}(...e),s=Array.from(this._bindings.keys()),o=s.length;if(!t.callback&&t.to.length>1)throw new i.ZP("observable-bind-to-no-callback",this);if(o>1&&t.callback)throw new i.ZP("observable-bind-to-extra-callback",this);var r;t.to.forEach((e=>{if(e.properties.length&&e.properties.length!==o)throw new i.ZP("observable-bind-to-properties-length",this);e.properties.length||(e.properties=this._bindProperties)})),this._to=t.to,t.callback&&(this._bindings.get(s[0]).callback=t.callback),r=this._observable,this._to.forEach((e=>{const t=r[a];let s;t.get(e.observable)||r.listenTo(e.observable,"change",((o,i)=>{s=t.get(e.observable)[i],s&&s.forEach((e=>{k(r,e.property)}))}))})),function(e){let t;e._bindings.forEach(((s,o)=>{e._to.forEach((i=>{t=i.properties[s.callback?0:e._bindProperties.indexOf(o)],s.to.push([i.observable,t]),function(e,t,s,o){const i=e[a],r=i.get(s),n=r||{};n[o]||(n[o]=new Set);n[o].add(t),r||i.set(s,n)}(e._observable,s,i.observable,t)}))}))}(this),this._bindProperties.forEach((e=>{k(this._observable,e)}))}function f(e,t,s){if(this._bindings.size>1)throw new i.ZP("observable-bind-to-many-not-one-binding",this);this.to(...function(e,t){const s=e.map((e=>[e,t]));return Array.prototype.concat.apply([],s)}(e,t),s)}function m(e){return e.every((e=>"string"==typeof e))}function k(e,t){const s=e[c].get(t);let o;s.callback?o=s.callback.apply(e,s.to.map((e=>e[0][e[1]]))):(o=s.to[0],o=o[0][o[1]]),Object.prototype.hasOwnProperty.call(e,t)?e[t]=o:e.set(t,o)}["set","bind","unbind","decorate","on","once","off","listenTo","stopListening","fire","delegate","stopDelegating","_addEventListener","_removeEventListener"].forEach((e=>{h[e]=u.prototype[e]}))},"./packages/ckeditor5-utils/src/priorities.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o={get(e="normal"){return"number"!=typeof e?this[e]||this.normal:e},highest:1e5,high:1e3,normal:0,low:-1e3,lowest:-1e5}},"./packages/ckeditor5-utils/src/toarray.ts":(e,t,s)=>{"use strict";function o(e){return Array.isArray(e)?e:[e]}s.d(t,{Z:()=>o})},"./packages/ckeditor5-utils/src/tomap.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/isiterable.ts");function i(e){return(0,o.Z)(e)?new Map(e):function(e){const t=new Map;for(const s in e)t.set(s,e[s]);return t}(e)}},"./packages/ckeditor5-utils/src/uid.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});const o=new Array(256).fill("").map(((e,t)=>("0"+t.toString(16)).slice(-2)));function i(){const e=4294967296*Math.random()>>>0,t=4294967296*Math.random()>>>0,s=4294967296*Math.random()>>>0,i=4294967296*Math.random()>>>0;return"e"+o[e>>0&255]+o[e>>8&255]+o[e>>16&255]+o[e>>24&255]+o[t>>0&255]+o[t>>8&255]+o[t>>16&255]+o[t>>24&255]+o[s>>0&255]+o[s>>8&255]+o[s>>16&255]+o[s>>24&255]+o[i>>0&255]+o[i>>8&255]+o[i>>16&255]+o[i>>24&255]}},"./packages/ckeditor5-utils/src/version.ts":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");const i="35.1.0",r=i,n="object"==typeof window?window:s.g;if(n.CKEDITOR_VERSION)throw new o.ZP("ckeditor-duplicated-modules",null);n.CKEDITOR_VERSION=i},"./packages/ckeditor5-core/src/command.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/observablemixin.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts");class r{constructor(e){this.editor=e,this.set("value",void 0),this.set("isEnabled",!1),this.affectsData=!0,this._disableStack=new Set,this.decorate("execute"),this.listenTo(this.editor.model.document,"change",(()=>{this.refresh()})),this.on("execute",(e=>{this.isEnabled||e.stop()}),{priority:"high"}),this.listenTo(e,"change:isReadOnly",((e,t,s)=>{s&&this.affectsData?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")}))}refresh(){this.isEnabled=!0}forceDisabled(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",n,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",n),this.refresh())}execute(){}destroy(){this.stopListening()}}function n(e){e.return=!1,e.stop()}(0,i.Z)(r,o.Z)},"./packages/ckeditor5-core/src/contextplugin.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/observablemixin.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts");class r{constructor(e){this.context=e}destroy(){this.stopListening()}static get isContextPlugin(){return!0}}(0,i.Z)(r,o.Z)},"./packages/ckeditor5-core/src/pendingactions.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-core/src/contextplugin.js"),i=s("./packages/ckeditor5-utils/src/observablemixin.ts"),r=s("./packages/ckeditor5-utils/src/collection.ts"),n=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class a extends o.Z{static get pluginName(){return"PendingActions"}init(){this.set("hasAny",!1),this._actions=new r.Z({idProperty:"_id"}),this._actions.delegate("add","remove").to(this)}add(e){if("string"!=typeof e)throw new n.ZP("pendingactions-add-invalid-message",this);const t=Object.create(i.Z);return t.set("message",e),this._actions.add(t),this.hasAny=!0,t}remove(e){this._actions.remove(e),this.hasAny=!!this._actions.length}get first(){return this._actions.get(0)}[Symbol.iterator](){return this._actions[Symbol.iterator]()}}},"./packages/ckeditor5-core/src/plugin.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/observablemixin.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts");class r{constructor(e){this.editor=e,this.set("isEnabled",!0),this._disableStack=new Set}forceDisabled(e){this._disableStack.add(e),1==this._disableStack.size&&(this.on("set:isEnabled",n,{priority:"highest"}),this.isEnabled=!1)}clearForceDisabled(e){this._disableStack.delete(e),0==this._disableStack.size&&(this.off("set:isEnabled",n),this.isEnabled=!0)}destroy(){this.stopListening()}static get isContextPlugin(){return!1}}function n(e){e.return=!1,e.stop()}(0,i.Z)(r,o.Z)},"./packages/ckeditor5-enter/src/enter.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-enter/src/utils.js");class n extends i.Z{execute(){const e=this.editor.model,t=e.document;e.change((s=>{!function(e,t,s,o){const i=s.isCollapsed,n=s.getFirstRange(),c=n.start.parent,l=n.end.parent;if(o.isLimit(c)||o.isLimit(l))return void(i||c!=l||e.deleteContent(s));if(i){const e=(0,r.G)(t.model.schema,s.getAttributes());a(t,n.start),t.setSelectionAttribute(e)}else{const o=!(n.start.isAtStart&&n.end.isAtEnd),i=c==l;e.deleteContent(s,{leaveUnmerged:o}),o&&(i?a(t,s.focus):t.setSelection(l,0))}}(this.editor.model,s,t.selection,e.schema),this.fire("afterExecute",{writer:s})}))}}function a(e,t){e.split(t),e.setSelection(t.parent.nextSibling,0)}var c=s("./packages/ckeditor5-enter/src/enterobserver.js");class l extends o.Z{static get pluginName(){return"Enter"}init(){const e=this.editor,t=e.editing.view,s=t.document;t.addObserver(c.Z),e.commands.add("enter",new n(e)),this.listenTo(s,"enter",((s,o)=>{o.preventDefault(),o.isSoft||(e.execute("enter"),t.scrollToTheSelection())}),{priority:"low"})}}},"./packages/ckeditor5-enter/src/enterobserver.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./packages/ckeditor5-engine/src/view/observer/observer.ts"),i=s("./packages/ckeditor5-engine/src/view/observer/domeventdata.ts"),r=s("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.ts"),n=s("./packages/ckeditor5-utils/src/keyboard.ts");class a extends o.Z{constructor(e){super(e);const t=this.document;t.on("keydown",((e,s)=>{if(this.isEnabled&&s.keyCode==n.Do.enter){const o=new r.Z(t,"enter",t.selection.getFirstRange());t.fire(o,new i.Z(t,s.domEvent,{isSoft:s.shiftKey})),o.stop.called&&e.stop()}}))}observe(){}}},"./packages/ckeditor5-enter/src/utils.js":(e,t,s)=>{"use strict";function*o(e,t){for(const s of t)s&&e.getAttributeProperties(s[0]).copyOnEnter&&(yield s)}s.d(t,{G:()=>o})},"./packages/ckeditor5-typing/src/delete.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>f});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-utils/src/count.ts"),n=s("./packages/ckeditor5-typing/src/utils/changebuffer.js");class a extends i.Z{constructor(e,t){super(e),this.direction=t,this._buffer=new n.Z(e.model,e.config.get("typing.undoStep"))}get buffer(){return this._buffer}execute(e={}){const t=this.editor.model,s=t.document;t.enqueueChange(this._buffer.batch,(o=>{this._buffer.lock();const i=o.createSelection(e.selection||s.selection),n=e.sequence||1,a=i.isCollapsed;if(i.isCollapsed&&t.modifySelection(i,{direction:this.direction,unit:e.unit,treatEmojiAsSingleUnit:!0}),this._shouldEntireContentBeReplacedWithParagraph(n))return void this._replaceEntireContentWithParagraph(o);if(this._shouldReplaceFirstBlockWithParagraph(i,n))return void this.editor.execute("paragraph",{selection:i});if(i.isCollapsed)return;let c=0;i.getFirstRange().getMinimalFlatRanges().forEach((e=>{c+=(0,r.Z)(e.getWalker({singleCharacters:!0,ignoreElementEnd:!0,shallow:!0}))})),t.deleteContent(i,{doNotResetEntireContent:a,direction:this.direction}),this._buffer.input(c),o.setSelection(i),this._buffer.unlock()}))}_shouldEntireContentBeReplacedWithParagraph(e){if(e>1)return!1;const t=this.editor.model,s=t.document.selection,o=t.schema.getLimitElement(s);if(!(s.isCollapsed&&s.containsEntireContent(o)))return!1;if(!t.schema.checkChild(o,"paragraph"))return!1;const i=o.getChild(0);return!i||"paragraph"!==i.name}_replaceEntireContentWithParagraph(e){const t=this.editor.model,s=t.document.selection,o=t.schema.getLimitElement(s),i=e.createElement("paragraph");e.remove(e.createRangeIn(o)),e.insert(i,o),e.setSelection(i,0)}_shouldReplaceFirstBlockWithParagraph(e,t){const s=this.editor.model;if(t>1||"backward"!=this.direction)return!1;if(!e.isCollapsed)return!1;const o=e.getFirstPosition(),i=s.schema.getLimitElement(o),r=i.getChild(0);return o.parent==r&&(!!e.containsEntireContent(r)&&(!!s.schema.checkChild(i,"paragraph")&&"paragraph"!=r.name))}}var c=s("./packages/ckeditor5-engine/src/view/observer/observer.ts"),l=s("./packages/ckeditor5-engine/src/view/observer/domeventdata.ts"),d=s("./packages/ckeditor5-engine/src/view/observer/bubblingeventinfo.ts"),h=s("./packages/ckeditor5-utils/src/keyboard.ts"),u=s("./packages/ckeditor5-utils/src/env.ts"),p=s("./packages/ckeditor5-typing/src/utils/utils.js");class g extends c.Z{constructor(e){super(e);const t=e.document;let s=0;function o(e,s,o){const i=new d.Z(t,"delete",t.selection.getFirstRange());t.fire(i,new l.Z(t,s,o)),i.stop.called&&e.stop()}t.on("keyup",((e,t)=>{t.keyCode!=h.Do.delete&&t.keyCode!=h.Do.backspace||(s=0)})),t.on("keydown",((e,i)=>{if(u.ZP.isWindows&&(0,p.Uw)(i,t))return;const r={};if(i.keyCode==h.Do.delete)r.direction="forward",r.unit="character";else{if(i.keyCode!=h.Do.backspace)return;r.direction="backward",r.unit="codePoint"}const n=u.ZP.isMac?i.altKey:i.ctrlKey;r.unit=n?"word":r.unit,r.sequence=++s,o(e,i.domEvent,r)})),u.ZP.isAndroid&&t.on("beforeinput",((t,s)=>{if("deleteContentBackward"!=s.domEvent.inputType)return;const i={unit:"codepoint",direction:"backward",sequence:1},r=s.domTarget.ownerDocument.defaultView.getSelection();r.anchorNode==r.focusNode&&r.anchorOffset+1!=r.focusOffset&&(i.selectionToRemove=e.domConverter.domSelectionToView(r)),o(t,s.domEvent,i)}))}observe(){}}class f extends o.Z{static get pluginName(){return"Delete"}init(){const e=this.editor,t=e.editing.view,s=t.document,o=e.model.document;t.addObserver(g),this._undoOnBackspace=!1;const i=new a(e,"forward");if(e.commands.add("deleteForward",i),e.commands.add("forwardDelete",i),e.commands.add("delete",new a(e,"backward")),this.listenTo(s,"delete",((s,o)=>{const i={unit:o.unit,sequence:o.sequence};if(o.selectionToRemove){const t=e.model.createSelection(),s=[];for(const t of o.selectionToRemove.getRanges())s.push(e.editing.mapper.toModelRange(t));t.setTo(s),i.selection=t}e.execute("forward"==o.direction?"deleteForward":"delete",i),o.preventDefault(),t.scrollToTheSelection()}),{priority:"low"}),u.ZP.isAndroid){let e=null;this.listenTo(s,"delete",((t,s)=>{const o=s.domTarget.ownerDocument.defaultView.getSelection();e={anchorNode:o.anchorNode,anchorOffset:o.anchorOffset,focusNode:o.focusNode,focusOffset:o.focusOffset}}),{priority:"lowest"}),this.listenTo(s,"keyup",((t,s)=>{if(e){const t=s.domTarget.ownerDocument.defaultView.getSelection();t.collapse(e.anchorNode,e.anchorOffset),t.extend(e.focusNode,e.focusOffset),e=null}}))}this.editor.plugins.has("UndoEditing")&&(this.listenTo(s,"delete",((t,s)=>{this._undoOnBackspace&&"backward"==s.direction&&1==s.sequence&&"codePoint"==s.unit&&(this._undoOnBackspace=!1,e.execute("undo"),s.preventDefault(),t.stop())}),{context:"$capture"}),this.listenTo(o,"change",(()=>{this._undoOnBackspace=!1})))}requestUndoOnBackspace(){this.editor.plugins.has("UndoEditing")&&(this._undoOnBackspace=!0)}}},"./packages/ckeditor5-typing/src/utils/changebuffer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});class o{constructor(e,t=20){this.model=e,this.size=0,this.limit=t,this.isLocked=!1,this._changeCallback=(e,t)=>{t.isLocal&&t.isUndoable&&t!==this._batch&&this._reset(!0)},this._selectionChangeCallback=()=>{this._reset()},this.model.document.on("change",this._changeCallback),this.model.document.selection.on("change:range",this._selectionChangeCallback),this.model.document.selection.on("change:attribute",this._selectionChangeCallback)}get batch(){return this._batch||(this._batch=this.model.createBatch({isTyping:!0})),this._batch}input(e){this.size+=e,this.size>=this.limit&&this._reset(!0)}lock(){this.isLocked=!0}unlock(){this.isLocked=!1}destroy(){this.model.document.off("change",this._changeCallback),this.model.document.selection.off("change:range",this._selectionChangeCallback),this.model.document.selection.off("change:attribute",this._selectionChangeCallback)}_reset(e){this.isLocked&&!e||(this._batch=null,this.size=0)}}},"./packages/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n,u:()=>c});var o=s("./packages/ckeditor5-utils/src/keyboard.ts"),i=s("./packages/ckeditor5-utils/src/env.ts"),r=s("./packages/ckeditor5-typing/src/utils/utils.js");function n(e){let t=null;const s=e.model,o=e.editing.view,n=e.commands.get("input");function a(e){if(i.ZP.isWindows&&(0,r.Uw)(e,o.document))return;const a=s.document,d=o.document.isComposing,h=t&&t.isEqual(a.selection);t=null,n.isEnabled&&(c(e)||a.selection.isCollapsed||d&&229===e.keyCode||!d&&229===e.keyCode&&h||l())}function l(){const e=n.buffer;e.lock();const t=e.batch;s.enqueueChange(t,(()=>{s.deleteContent(s.document.selection)})),e.unlock()}i.ZP.isAndroid?o.document.on("beforeinput",((e,t)=>a(t)),{priority:"lowest"}):o.document.on("keydown",((e,t)=>a(t)),{priority:"lowest"}),o.document.on("compositionstart",(function(){const e=s.document,t=1!==e.selection.rangeCount||e.selection.getFirstRange().isFlat;if(e.selection.isCollapsed||t)return;l()}),{priority:"lowest"}),o.document.on("compositionend",(()=>{t=s.createSelection(s.document.selection)}),{priority:"lowest"})}const a=[(0,o.Cq)("arrowUp"),(0,o.Cq)("arrowRight"),(0,o.Cq)("arrowDown"),(0,o.Cq)("arrowLeft"),9,16,17,18,19,20,27,33,34,35,36,45,91,93,144,145,173,174,175,176,177,178,179,255];for(let e=112;e<=135;e++)a.push(e);function c(e){return!(!e.ctrlKey&&!e.metaKey)||a.includes(e.keyCode)}},"./packages/ckeditor5-typing/src/utils/utils.js":(e,t,s)=>{"use strict";s.d(t,{E9:()=>r,xG:()=>n,Uw:()=>c});var o=s("./packages/ckeditor5-utils/src/diff.ts");var i=s("./packages/ckeditor5-utils/src/keyboard.ts");function r(e){if(0==e.length)return!1;for(const t of e)if("children"===t.type&&!n(t))return!0;return!1}function n(e){if(e.newChildren.length-e.oldChildren.length!=1)return;const t=function(e,t){const s=[];let o=0,i=null;return e.forEach((e=>{"equal"==e?(r(),o++):"insert"==e?(i&&"insert"==i.type?i.values.push(t[o]):(r(),i={type:"insert",index:o,values:[t[o]]}),o++):i&&"delete"==i.type?i.howMany++:(r(),i={type:"delete",index:o,howMany:1})})),r(),s;function r(){i&&(s.push(i),i=null)}}((0,o.Z)(e.oldChildren,e.newChildren,a),e.newChildren);if(t.length>1)return;const s=t[0];return s.values[0]&&s.values[0].is("$text")?s:void 0}function a(e,t){return e&&e.is("$text")&&t&&t.is("$text")?e.data===t.data:e===t}function c(e,t){const s=t.selection,o=e.shiftKey&&e.keyCode===i.Do.delete,r=!s.isCollapsed;return o&&r}},"./packages/ckeditor5-ui/src/bindings/clickoutsidehandler.js":(e,t,s)=>{"use strict";function o({emitter:e,activator:t,callback:s,contextElements:o}){e.listenTo(document,"mousedown",((e,i)=>{if(!t())return;const r="function"==typeof i.composedPath?i.composedPath():[];for(const e of o)if(e.contains(i.target)||r.includes(e))return;s()}))}s.d(t,{Z:()=>o})},"./packages/ckeditor5-ui/src/button/buttonview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-ui/src/icon/iconview.js"),r=s("./packages/ckeditor5-utils/src/uid.ts"),n=s("./packages/ckeditor5-utils/src/keyboard.ts"),a=s("./packages/ckeditor5-utils/src/env.ts"),c=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),l=s.n(c),d=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/button/button.css"),h={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};l()(d.Z,h);d.Z.locals;class u extends o.Z{constructor(e){super(e);const t=this.bindTemplate,s=(0,r.Z)();this.set("class"),this.set("labelStyle"),this.set("icon"),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isVisible",!0),this.set("isToggleable",!1),this.set("keystroke"),this.set("label"),this.set("tabindex",-1),this.set("tooltip"),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.set("withKeystroke",!1),this.children=this.createCollection(),this.labelView=this._createLabelView(s),this.iconView=new i.Z,this.iconView.extendTemplate({attributes:{class:"ck-button__icon"}}),this.keystrokeView=this._createKeystrokeView(),this.bind("_tooltipString").to(this,"tooltip",this,"label",this,"keystroke",this._getTooltipString.bind(this));const o={tag:"button",attributes:{class:["ck","ck-button",t.to("class"),t.if("isEnabled","ck-disabled",(e=>!e)),t.if("isVisible","ck-hidden",(e=>!e)),t.to("isOn",(e=>e?"ck-on":"ck-off")),t.if("withText","ck-button_with-text"),t.if("withKeystroke","ck-button_with-keystroke")],type:t.to("type",(e=>e||"button")),tabindex:t.to("tabindex"),"aria-labelledby":`ck-editor__aria-label_${s}`,"aria-disabled":t.if("isEnabled",!0,(e=>!e)),"aria-pressed":t.to("isOn",(e=>!!this.isToggleable&&String(!!e))),"data-cke-tooltip-text":t.to("_tooltipString"),"data-cke-tooltip-position":t.to("tooltipPosition")},children:this.children,on:{click:t.to((e=>{this.isEnabled?this.fire("execute"):e.preventDefault()}))}};a.ZP.isSafari&&(o.on.mousedown=t.to((e=>{this.focus(),e.preventDefault()}))),this.setTemplate(o)}render(){super.render(),this.icon&&(this.iconView.bind("content").to(this,"icon"),this.children.add(this.iconView)),this.children.add(this.labelView),this.withKeystroke&&this.keystroke&&this.children.add(this.keystrokeView)}focus(){this.element.focus()}_createLabelView(e){const t=new o.Z,s=this.bindTemplate;return t.setTemplate({tag:"span",attributes:{class:["ck","ck-button__label"],style:s.to("labelStyle"),id:`ck-editor__aria-label_${e}`},children:[{text:this.bindTemplate.to("label")}]}),t}_createKeystrokeView(){const e=new o.Z;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__keystroke"]},children:[{text:this.bindTemplate.to("keystroke",(e=>(0,n.XU)(e)))}]}),e}_getTooltipString(e,t,s){return e?"string"==typeof e?e:(s&&(s=(0,n.XU)(s)),e instanceof Function?e(t,s):`${t}${s?` (${s})`:""}`):""}}},"./packages/ckeditor5-ui/src/button/switchbuttonview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-ui/src/button/buttonview.js"),r=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),n=s.n(r),a=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/button/switchbutton.css"),c={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};n()(a.Z,c);a.Z.locals;class l extends i.Z{constructor(e){super(e),this.isToggleable=!0,this.toggleSwitchView=this._createToggleView(),this.extendTemplate({attributes:{class:"ck-switchbutton"}})}render(){super.render(),this.children.add(this.toggleSwitchView)}_createToggleView(){const e=new o.Z;return e.setTemplate({tag:"span",attributes:{class:["ck","ck-button__toggle"]},children:[{tag:"span",attributes:{class:["ck","ck-button__toggle__inner"]}}]}),e}}},"./packages/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./packages/ckeditor5-ui/src/button/buttonview.js"),i=s("./packages/ckeditor5-ui/theme/icons/dropdown-arrow.svg"),r=s("./packages/ckeditor5-ui/src/icon/iconview.js");class n extends o.Z{constructor(e){super(e),this.arrowView=this._createArrowView(),this.extendTemplate({attributes:{"aria-haspopup":!0,"aria-expanded":this.bindTemplate.to("isOn",(e=>String(e)))}}),this.delegate("execute").to(this,"open")}render(){super.render(),this.children.add(this.arrowView)}_createArrowView(){const e=new r.Z;return e.content=i.Z,e.extendTemplate({attributes:{class:"ck-dropdown__arrow"}}),e}}},"./packages/ckeditor5-ui/src/dropdown/utils.js":(e,t,s)=>{"use strict";s.d(t,{Pm:()=>A,up:()=>T,t9:()=>x,Mh:()=>C});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class r extends o.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("isVisible",!1),this.set("position","se"),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-dropdown__panel",t.to("position",(e=>`ck-dropdown__panel_${e}`)),t.if("isVisible","ck-dropdown__panel-visible")]},children:this.children,on:{selectstart:t.to((e=>e.preventDefault()))}})}focus(){this.children.length&&("function"==typeof this.children.first.focus?this.children.first.focus():(0,i.KE)("ui-dropdown-panel-focus-child-missing-focus",{childView:this.children.first,dropdownPanel:this}))}focusLast(){if(this.children.length){const e=this.children.last;"function"==typeof e.focusLast?e.focusLast():e.focus()}}}var n=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),a=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),c=s.n(a),l=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/dropdown.css"),d={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(l.Z,d);l.Z.locals;var h=s("./packages/ckeditor5-utils/src/dom/position.ts");class u extends o.Z{constructor(e,t,s){super(e);const o=this.bindTemplate;this.buttonView=t,this.panelView=s,this.set("isOpen",!1),this.set("isEnabled",!0),this.set("class"),this.set("id"),this.set("panelPosition","auto"),this.keystrokes=new n.Z,this.setTemplate({tag:"div",attributes:{class:["ck","ck-dropdown",o.to("class"),o.if("isEnabled","ck-disabled",(e=>!e))],id:o.to("id"),"aria-describedby":o.to("ariaDescribedById")},children:[t,s]}),t.extendTemplate({attributes:{class:["ck-dropdown__button"],"data-cke-tooltip-disabled":o.to("isOpen")}})}render(){super.render(),this.listenTo(this.buttonView,"open",(()=>{this.isOpen=!this.isOpen})),this.panelView.bind("isVisible").to(this,"isOpen"),this.on("change:isOpen",(()=>{this.isOpen?("auto"===this.panelPosition?this.panelView.position=u._getOptimalPosition({element:this.panelView.element,target:this.buttonView.element,fitInViewport:!0,positions:this._panelPositions}).name:this.panelView.position=this.panelPosition,this.panelView.focus()):this.focus()})),this.keystrokes.listenTo(this.element);const e=(e,t)=>{this.isOpen&&(this.isOpen=!1,t())};this.keystrokes.set("arrowdown",((e,t)=>{this.buttonView.isEnabled&&!this.isOpen&&(this.isOpen=!0,t())})),this.keystrokes.set("arrowright",((e,t)=>{this.isOpen&&t()})),this.keystrokes.set("arrowleft",e),this.keystrokes.set("esc",e)}focus(){this.buttonView.focus()}get _panelPositions(){const{south:e,north:t,southEast:s,southWest:o,northEast:i,northWest:r,southMiddleEast:n,southMiddleWest:a,northMiddleEast:c,northMiddleWest:l}=u.defaultPanelPositions;return"rtl"!==this.locale.uiLanguageDirection?[s,o,n,a,e,i,r,c,l,t]:[o,s,a,n,e,r,i,l,c,t]}}u.defaultPanelPositions={south:(e,t)=>({top:e.bottom,left:e.left-(t.width-e.width)/2,name:"s"}),southEast:e=>({top:e.bottom,left:e.left,name:"se"}),southWest:(e,t)=>({top:e.bottom,left:e.left-t.width+e.width,name:"sw"}),southMiddleEast:(e,t)=>({top:e.bottom,left:e.left-(t.width-e.width)/4,name:"sme"}),southMiddleWest:(e,t)=>({top:e.bottom,left:e.left-3*(t.width-e.width)/4,name:"smw"}),north:(e,t)=>({top:e.top-t.height,left:e.left-(t.width-e.width)/2,name:"n"}),northEast:(e,t)=>({top:e.top-t.height,left:e.left,name:"ne"}),northWest:(e,t)=>({top:e.top-t.height,left:e.left-t.width+e.width,name:"nw"}),northMiddleEast:(e,t)=>({top:e.top-t.height,left:e.left-(t.width-e.width)/4,name:"nme"}),northMiddleWest:(e,t)=>({top:e.top-t.height,left:e.left-3*(t.width-e.width)/4,name:"nmw"})},u._getOptimalPosition=h.x;var p=s("./packages/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js"),g=s("./packages/ckeditor5-ui/src/toolbar/toolbarview.js"),f=s("./packages/ckeditor5-ui/src/list/listview.js"),m=s("./packages/ckeditor5-ui/src/list/listitemview.js");class k extends o.Z{constructor(e){super(e),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__separator"]}})}}var b=s("./packages/ckeditor5-ui/src/button/buttonview.js"),_=s("./packages/ckeditor5-ui/src/button/switchbuttonview.js"),w=s("./packages/ckeditor5-ui/src/bindings/clickoutsidehandler.js"),v=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/toolbardropdown.css"),y={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(v.Z,y);v.Z.locals;var Z=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/listdropdown.css"),P={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(Z.Z,P);Z.Z.locals;function x(e,t=p.Z){const s=new t(e),o=new r(e),i=new u(e,s,o);return s.bind("isEnabled").to(i),s instanceof p.Z?s.bind("isOn").to(i,"isOpen"):s.arrowView.bind("isOn").to(i,"isOpen"),function(e){(function(e){e.on("render",(()=>{(0,w.Z)({emitter:e,activator:()=>e.isOpen,callback:()=>{e.isOpen=!1},contextElements:[e.element]})}))})(e),function(e){e.on("execute",(t=>{t.source instanceof _.Z||(e.isOpen=!1)}))}(e),function(e){e.keystrokes.set("arrowdown",((t,s)=>{e.isOpen&&(e.panelView.focus(),s())})),e.keystrokes.set("arrowup",((t,s)=>{e.isOpen&&(e.panelView.focusLast(),s())}))}(e)}(i),i}function T(e,t,s={}){const o=e.locale,i=o.t,r=e.toolbarView=new g.Z(o);r.set("ariaLabel",i("Dropdown toolbar")),e.extendTemplate({attributes:{class:["ck-toolbar-dropdown"]}}),t.map((e=>r.items.add(e))),s.enableActiveItemFocusOnDropdownOpen&&C(e,(()=>r.items.find((e=>e.isOn)))),e.panelView.children.add(r),r.items.delegate("execute").to(e)}function A(e,t){const s=e.locale,o=e.listView=new f.Z(s);o.items.bindTo(t).using((({type:e,model:t})=>{if("separator"===e)return new k(s);if("button"===e||"switchbutton"===e){const o=new m.Z(s);let i;return i="button"===e?new b.Z(s):new _.Z(s),i.bind(...Object.keys(t)).to(t),i.delegate("execute").to(o),o.children.add(i),o}})),e.panelView.children.add(o),o.items.delegate("execute").to(e),C(e,(()=>o.items.find((e=>e instanceof m.Z&&e.children.first.isOn))))}function C(e,t){e.on("change:isOpen",(()=>{if(!e.isOpen)return;const s=t();s&&("function"==typeof s.focus?s.focus():(0,i.KE)("ui-dropdown-focus-child-on-open-child-missing-focus",{view:s}))}),{priority:"low"})}},"./packages/ckeditor5-ui/src/focuscycler.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-utils/src/dom/isvisible.ts");class i{constructor(e){if(Object.assign(this,e),e.actions&&e.keystrokeHandler)for(const t in e.actions){let s=e.actions[t];"string"==typeof s&&(s=[s]);for(const o of s)e.keystrokeHandler.set(o,((e,s)=>{this[t](),s()}))}}get first(){return this.focusables.find(r)||null}get last(){return this.focusables.filter(r).slice(-1)[0]||null}get next(){return this._getFocusableItem(1)}get previous(){return this._getFocusableItem(-1)}get current(){let e=null;return null===this.focusTracker.focusedElement?null:(this.focusables.find(((t,s)=>{const o=t.element===this.focusTracker.focusedElement;return o&&(e=s),o})),e)}focusFirst(){this._focus(this.first)}focusLast(){this._focus(this.last)}focusNext(){this._focus(this.next)}focusPrevious(){this._focus(this.previous)}_focus(e){e&&e.focus()}_getFocusableItem(e){const t=this.current,s=this.focusables.length;if(!s)return null;if(null===t)return this[1===e?"first":"last"];let o=(t+s+e)%s;do{const t=this.focusables.get(o);if(r(t))return t;o=(o+s+e)%s}while(o!==t);return null}}function r(e){return!(!e.focus||!(0,o.Z)(e.element))}},"./packages/ckeditor5-ui/src/icon/iconview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),r=s.n(i),n=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/icon/icon.css"),a={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};r()(n.Z,a);n.Z.locals;class c extends o.Z{constructor(){super();const e=this.bindTemplate;this.set("content",""),this.set("viewBox","0 0 20 20"),this.set("fillColor",""),this.setTemplate({tag:"svg",ns:"http://www.w3.org/2000/svg",attributes:{class:["ck","ck-icon"],viewBox:e.to("viewBox")}})}render(){super.render(),this._updateXMLContent(),this._colorFillPaths(),this.on("change:content",(()=>{this._updateXMLContent(),this._colorFillPaths()})),this.on("change:fillColor",(()=>{this._colorFillPaths()}))}_updateXMLContent(){if(this.content){const e=(new DOMParser).parseFromString(this.content.trim(),"image/svg+xml").querySelector("svg"),t=e.getAttribute("viewBox");for(t&&(this.viewBox=t);this.element.firstChild;)this.element.removeChild(this.element.firstChild);for(;e.childNodes.length>0;)this.element.appendChild(e.childNodes[0])}}_colorFillPaths(){this.fillColor&&this.element.querySelectorAll(".ck-icon__fill").forEach((e=>{e.style.fill=this.fillColor}))}}},"./packages/ckeditor5-ui/src/list/listitemview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-ui/src/view.js");class i extends o.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("isVisible",!0),this.children=this.createCollection(),this.setTemplate({tag:"li",attributes:{class:["ck","ck-list__item",t.if("isVisible","ck-hidden",(e=>!e))]},children:this.children})}focus(){this.children.first.focus()}}},"./packages/ckeditor5-ui/src/list/listview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-utils/src/focustracker.ts"),r=s("./packages/ckeditor5-ui/src/focuscycler.js"),n=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),a=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),c=s.n(a),l=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/list/list.css"),d={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(l.Z,d);l.Z.locals;class h extends o.Z{constructor(){super(),this.items=this.createCollection(),this.focusTracker=new i.Z,this.keystrokes=new n.Z,this._focusCycler=new r.Z({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"arrowup",focusNext:"arrowdown"}}),this.setTemplate({tag:"ul",attributes:{class:["ck","ck-reset","ck-list"]},children:this.items})}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",((e,t)=>{this.focusTracker.add(t.element)})),this.items.on("remove",((e,t)=>{this.focusTracker.remove(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}}},"./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>f,M:()=>k});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-utils/src/dom/position.ts"),r=s("./packages/ckeditor5-utils/src/dom/isrange.ts"),n=s("./packages/ckeditor5-utils/src/dom/tounit.ts"),a=s("./packages/ckeditor5-utils/src/dom/global.ts"),c=s("./node_modules/lodash-es/isElement.js"),l=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),d=s.n(l),h=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/balloonpanel.css"),u={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};d()(h.Z,u);h.Z.locals;const p=(0,n.Z)("px"),g=a.Z.document.body;class f extends o.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("position","arrow_nw"),this.set("isVisible",!1),this.set("withArrow",!0),this.set("class"),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-panel",t.to("position",(e=>`ck-balloon-panel_${e}`)),t.if("isVisible","ck-balloon-panel_visible"),t.if("withArrow","ck-balloon-panel_with-arrow"),t.to("class")],style:{top:t.to("top",p),left:t.to("left",p)}},children:this.content})}show(){this.isVisible=!0}hide(){this.isVisible=!1}attachTo(e){this.show();const t=f.defaultPositions,s=Object.assign({},{element:this.element,positions:[t.southArrowNorth,t.southArrowNorthMiddleWest,t.southArrowNorthMiddleEast,t.southArrowNorthWest,t.southArrowNorthEast,t.northArrowSouth,t.northArrowSouthMiddleWest,t.northArrowSouthMiddleEast,t.northArrowSouthWest,t.northArrowSouthEast,t.viewportStickyNorth],limiter:g,fitInViewport:!0},e),o=f._getOptimalPosition(s),i=parseInt(o.left),r=parseInt(o.top),{name:n,config:a={}}=o,{withArrow:c=!0}=a;Object.assign(this,{top:r,left:i,position:n,withArrow:c})}pin(e){this.unpin(),this._pinWhenIsVisibleCallback=()=>{this.isVisible?this._startPinning(e):this._stopPinning()},this._startPinning(e),this.listenTo(this,"change:isVisible",this._pinWhenIsVisibleCallback)}unpin(){this._pinWhenIsVisibleCallback&&(this._stopPinning(),this.stopListening(this,"change:isVisible",this._pinWhenIsVisibleCallback),this._pinWhenIsVisibleCallback=null,this.hide())}_startPinning(e){this.attachTo(e);const t=m(e.target),s=e.limiter?m(e.limiter):g;this.listenTo(a.Z.document,"scroll",((o,i)=>{const r=i.target,n=t&&r.contains(t),a=s&&r.contains(s);!n&&!a&&t&&s||this.attachTo(e)}),{useCapture:!0}),this.listenTo(a.Z.window,"resize",(()=>{this.attachTo(e)}))}_stopPinning(){this.stopListening(a.Z.document,"scroll"),this.stopListening(a.Z.window,"resize")}}function m(e){return(0,c.Z)(e)?e:(0,r.Z)(e)?e.commonAncestorContainer:"function"==typeof e?m(e()):null}function k({sideOffset:e=f.arrowSideOffset,heightOffset:t=f.arrowHeightOffset,stickyVerticalOffset:s=f.stickyVerticalOffset,config:o}={}){return{northWestArrowSouthWest:(t,s)=>({top:i(t,s),left:t.left-e,name:"arrow_sw",...o&&{config:o}}),northWestArrowSouthMiddleWest:(t,s)=>({top:i(t,s),left:t.left-.25*s.width-e,name:"arrow_smw",...o&&{config:o}}),northWestArrowSouth:(e,t)=>({top:i(e,t),left:e.left-t.width/2,name:"arrow_s",...o&&{config:o}}),northWestArrowSouthMiddleEast:(t,s)=>({top:i(t,s),left:t.left-.75*s.width+e,name:"arrow_sme",...o&&{config:o}}),northWestArrowSouthEast:(t,s)=>({top:i(t,s),left:t.left-s.width+e,name:"arrow_se",...o&&{config:o}}),northArrowSouthWest:(t,s)=>({top:i(t,s),left:t.left+t.width/2-e,name:"arrow_sw",...o&&{config:o}}),northArrowSouthMiddleWest:(t,s)=>({top:i(t,s),left:t.left+t.width/2-.25*s.width-e,name:"arrow_smw",...o&&{config:o}}),northArrowSouth:(e,t)=>({top:i(e,t),left:e.left+e.width/2-t.width/2,name:"arrow_s",...o&&{config:o}}),northArrowSouthMiddleEast:(t,s)=>({top:i(t,s),left:t.left+t.width/2-.75*s.width+e,name:"arrow_sme",...o&&{config:o}}),northArrowSouthEast:(t,s)=>({top:i(t,s),left:t.left+t.width/2-s.width+e,name:"arrow_se",...o&&{config:o}}),northEastArrowSouthWest:(t,s)=>({top:i(t,s),left:t.right-e,name:"arrow_sw",...o&&{config:o}}),northEastArrowSouthMiddleWest:(t,s)=>({top:i(t,s),left:t.right-.25*s.width-e,name:"arrow_smw",...o&&{config:o}}),northEastArrowSouth:(e,t)=>({top:i(e,t),left:e.right-t.width/2,name:"arrow_s",...o&&{config:o}}),northEastArrowSouthMiddleEast:(t,s)=>({top:i(t,s),left:t.right-.75*s.width+e,name:"arrow_sme",...o&&{config:o}}),northEastArrowSouthEast:(t,s)=>({top:i(t,s),left:t.right-s.width+e,name:"arrow_se",...o&&{config:o}}),southWestArrowNorthWest:(t,s)=>({top:r(t),left:t.left-e,name:"arrow_nw",...o&&{config:o}}),southWestArrowNorthMiddleWest:(t,s)=>({top:r(t),left:t.left-.25*s.width-e,name:"arrow_nmw",...o&&{config:o}}),southWestArrowNorth:(e,t)=>({top:r(e),left:e.left-t.width/2,name:"arrow_n",...o&&{config:o}}),southWestArrowNorthMiddleEast:(t,s)=>({top:r(t),left:t.left-.75*s.width+e,name:"arrow_nme",...o&&{config:o}}),southWestArrowNorthEast:(t,s)=>({top:r(t),left:t.left-s.width+e,name:"arrow_ne",...o&&{config:o}}),southArrowNorthWest:(t,s)=>({top:r(t),left:t.left+t.width/2-e,name:"arrow_nw",...o&&{config:o}}),southArrowNorthMiddleWest:(t,s)=>({top:r(t),left:t.left+t.width/2-.25*s.width-e,name:"arrow_nmw",...o&&{config:o}}),southArrowNorth:(e,t)=>({top:r(e),left:e.left+e.width/2-t.width/2,name:"arrow_n",...o&&{config:o}}),southArrowNorthMiddleEast:(t,s)=>({top:r(t),left:t.left+t.width/2-.75*s.width+e,name:"arrow_nme",...o&&{config:o}}),southArrowNorthEast:(t,s)=>({top:r(t),left:t.left+t.width/2-s.width+e,name:"arrow_ne",...o&&{config:o}}),southEastArrowNorthWest:(t,s)=>({top:r(t),left:t.right-e,name:"arrow_nw",...o&&{config:o}}),southEastArrowNorthMiddleWest:(t,s)=>({top:r(t),left:t.right-.25*s.width-e,name:"arrow_nmw",...o&&{config:o}}),southEastArrowNorth:(e,t)=>({top:r(e),left:e.right-t.width/2,name:"arrow_n",...o&&{config:o}}),southEastArrowNorthMiddleEast:(t,s)=>({top:r(t),left:t.right-.75*s.width+e,name:"arrow_nme",...o&&{config:o}}),southEastArrowNorthEast:(t,s)=>({top:r(t),left:t.right-s.width+e,name:"arrow_ne",...o&&{config:o}}),westArrowEast:(e,s)=>({top:e.top+e.height/2-s.height/2,left:e.left-s.width-t,name:"arrow_e",...o&&{config:o}}),eastArrowWest:(e,s)=>({top:e.top+e.height/2-s.height/2,left:e.right+t,name:"arrow_w",...o&&{config:o}}),viewportStickyNorth:(e,t,i)=>e.getIntersection(i)?{top:i.top+s,left:e.left+e.width/2-t.width/2,name:"arrowless",config:{withArrow:!1,...o}}:null};function i(e,s){return e.top-s.height-t}function r(e){return e.bottom+t}}f.arrowSideOffset=25,f.arrowHeightOffset=10,f.stickyVerticalOffset=20,f._getOptimalPosition=i.x,f.defaultPositions=k()},"./packages/ckeditor5-ui/src/panel/balloon/contextualballoon.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),r=s("./packages/ckeditor5-ui/src/view.js"),n=s("./packages/ckeditor5-ui/src/button/buttonview.js"),a=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),c=s("./packages/ckeditor5-utils/src/focustracker.ts"),l=s("./packages/ckeditor5-utils/src/dom/tounit.ts"),d=s("./packages/ckeditor5-utils/src/dom/rect.ts");var h=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),u=s.n(h),p=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/balloonrotator.css"),g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};u()(p.Z,g);p.Z.locals;var f=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/fakepanel.css"),m={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};u()(f.Z,m);f.Z.locals;const k=(0,l.Z)("px");class b extends o.Z{static get pluginName(){return"ContextualBalloon"}constructor(e){super(e),this.positionLimiter=()=>{const e=this.editor.editing.view,t=e.document.selection.editableElement;return t?e.domConverter.mapViewToDom(t.root):null},this.set("visibleView",null),this.view=new i.Z(e.locale),e.ui.view.body.add(this.view),e.ui.focusTracker.add(this.view.element),this._viewToStack=new Map,this._idToStack=new Map,this.set("_numberOfStacks",0),this.set("_singleViewMode",!1),this._rotatorView=this._createRotatorView(),this._fakePanelsView=this._createFakePanelsView()}destroy(){super.destroy(),this.view.destroy(),this._rotatorView.destroy(),this._fakePanelsView.destroy()}hasView(e){return Array.from(this._viewToStack.keys()).includes(e)}add(e){if(this.hasView(e.view))throw new a.ZP("contextualballoon-add-view-exist",[this,e]);const t=e.stackId||"main";if(!this._idToStack.has(t))return this._idToStack.set(t,new Map([[e.view,e]])),this._viewToStack.set(e.view,this._idToStack.get(t)),this._numberOfStacks=this._idToStack.size,void(this._visibleStack&&!e.singleViewMode||this.showStack(t));const s=this._idToStack.get(t);e.singleViewMode&&this.showStack(t),s.set(e.view,e),this._viewToStack.set(e.view,s),s===this._visibleStack&&this._showView(e)}remove(e){if(!this.hasView(e))throw new a.ZP("contextualballoon-remove-view-not-exist",[this,e]);const t=this._viewToStack.get(e);this._singleViewMode&&this.visibleView===e&&(this._singleViewMode=!1),this.visibleView===e&&(1===t.size?this._idToStack.size>1?this._showNextStack():(this.view.hide(),this.visibleView=null,this._rotatorView.hideView()):this._showView(Array.from(t.values())[t.size-2])),1===t.size?(this._idToStack.delete(this._getStackId(t)),this._numberOfStacks=this._idToStack.size):t.delete(e),this._viewToStack.delete(e)}updatePosition(e){e&&(this._visibleStack.get(this.visibleView).position=e),this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition()}showStack(e){this.visibleStack=e;const t=this._idToStack.get(e);if(!t)throw new a.ZP("contextualballoon-showstack-stack-not-exist",this);this._visibleStack!==t&&this._showView(Array.from(t.values()).pop())}get _visibleStack(){return this._viewToStack.get(this.visibleView)}_getStackId(e){return Array.from(this._idToStack.entries()).find((t=>t[1]===e))[0]}_showNextStack(){const e=Array.from(this._idToStack.values());let t=e.indexOf(this._visibleStack)+1;e[t]||(t=0),this.showStack(this._getStackId(e[t]))}_showPrevStack(){const e=Array.from(this._idToStack.values());let t=e.indexOf(this._visibleStack)-1;e[t]||(t=e.length-1),this.showStack(this._getStackId(e[t]))}_createRotatorView(){const e=new _(this.editor.locale),t=this.editor.locale.t;return this.view.content.add(e),e.bind("isNavigationVisible").to(this,"_numberOfStacks",this,"_singleViewMode",((e,t)=>!t&&e>1)),e.on("change:isNavigationVisible",(()=>this.updatePosition()),{priority:"low"}),e.bind("counter").to(this,"visibleView",this,"_numberOfStacks",((e,s)=>{if(s<2)return"";const o=Array.from(this._idToStack.values()).indexOf(this._visibleStack)+1;return t("%0 of %1",[o,s])})),e.buttonNextView.on("execute",(()=>{e.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showNextStack()})),e.buttonPrevView.on("execute",(()=>{e.focusTracker.isFocused&&this.editor.editing.view.focus(),this._showPrevStack()})),e}_createFakePanelsView(){const e=new w(this.editor.locale,this.view);return e.bind("numberOfPanels").to(this,"_numberOfStacks",this,"_singleViewMode",((e,t)=>!t&&e>=2?Math.min(e-1,2):0)),e.listenTo(this.view,"change:top",(()=>e.updatePosition())),e.listenTo(this.view,"change:left",(()=>e.updatePosition())),this.editor.ui.view.body.add(e),e}_showView({view:e,balloonClassName:t="",withArrow:s=!0,singleViewMode:o=!1}){this.view.class=t,this.view.withArrow=s,this._rotatorView.showView(e),this.visibleView=e,this.view.pin(this._getBalloonPosition()),this._fakePanelsView.updatePosition(),o&&(this._singleViewMode=!0)}_getBalloonPosition(){let e=Array.from(this._visibleStack.values()).pop().position;return e&&(e.limiter||(e=Object.assign({},e,{limiter:this.positionLimiter})),e=Object.assign({},e,{viewportOffsetConfig:this.editor.ui.viewportOffset})),e}}class _ extends r.Z{constructor(e){super(e);const t=e.t,s=this.bindTemplate;this.set("isNavigationVisible",!0),this.focusTracker=new c.Z,this.buttonPrevView=this._createButtonView(t("Previous"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M11.463 5.187a.888.888 0 1 1 1.254 1.255L9.16 10l3.557 3.557a.888.888 0 1 1-1.254 1.255L7.26 10.61a.888.888 0 0 1 .16-1.382l4.043-4.042z"/></svg>'),this.buttonNextView=this._createButtonView(t("Next"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M8.537 14.813a.888.888 0 1 1-1.254-1.255L10.84 10 7.283 6.442a.888.888 0 1 1 1.254-1.255L12.74 9.39a.888.888 0 0 1-.16 1.382l-4.043 4.042z"/></svg>'),this.content=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-balloon-rotator"],"z-index":"-1"},children:[{tag:"div",attributes:{class:["ck-balloon-rotator__navigation",s.to("isNavigationVisible",(e=>e?"":"ck-hidden"))]},children:[this.buttonPrevView,{tag:"span",attributes:{class:["ck-balloon-rotator__counter"]},children:[{text:s.to("counter")}]},this.buttonNextView]},{tag:"div",attributes:{class:"ck-balloon-rotator__content"},children:this.content}]})}render(){super.render(),this.focusTracker.add(this.element)}destroy(){super.destroy(),this.focusTracker.destroy()}showView(e){this.hideView(),this.content.add(e)}hideView(){this.content.clear()}_createButtonView(e,t){const s=new n.Z(this.locale);return s.set({label:e,icon:t,tooltip:!0}),s}}class w extends r.Z{constructor(e,t){super(e);const s=this.bindTemplate;this.set("top",0),this.set("left",0),this.set("height",0),this.set("width",0),this.set("numberOfPanels",0),this.content=this.createCollection(),this._balloonPanelView=t,this.setTemplate({tag:"div",attributes:{class:["ck-fake-panel",s.to("numberOfPanels",(e=>e?"":"ck-hidden"))],style:{top:s.to("top",k),left:s.to("left",k),width:s.to("width",k),height:s.to("height",k)}},children:this.content}),this.on("change:numberOfPanels",((e,t,s,o)=>{s>o?this._addPanels(s-o):this._removePanels(o-s),this.updatePosition()}))}_addPanels(e){for(;e--;){const e=new r.Z;e.setTemplate({tag:"div"}),this.content.add(e),this.registerChild(e)}}_removePanels(e){for(;e--;){const e=this.content.last;this.content.remove(e),this.deregisterChild(e),e.destroy()}}updatePosition(){if(this.numberOfPanels){const{top:e,left:t}=this._balloonPanelView,{width:s,height:o}=new d.Z(this._balloonPanelView.element);Object.assign(this,{top:e,left:t,width:s,height:o})}}}},"./packages/ckeditor5-ui/src/template.js":(e,t,s)=>{"use strict";s.d(t,{ZP:()=>u});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/mix.ts"),r=s("./packages/ckeditor5-utils/src/emittermixin.ts"),n=s("./packages/ckeditor5-ui/src/view.js"),a=s("./packages/ckeditor5-ui/src/viewcollection.js"),c=s("./packages/ckeditor5-utils/src/dom/isnode.ts"),l=s("./node_modules/lodash-es/isObject.js"),d=s("./node_modules/lodash-es/cloneDeepWith.js"),h=s("./packages/ckeditor5-utils/src/toarray.ts");class u{constructor(e){Object.assign(this,y(v(e))),this._isRendered=!1,this._revertData=null}render(){const e=this._renderNode({intoFragment:!0});return this._isRendered=!0,e}apply(e){return this._revertData={children:[],bindings:[],attributes:{}},this._renderNode({node:e,isApplying:!0,revertData:this._revertData}),e}revert(e){if(!this._revertData)throw new o.ZP("ui-template-revert-not-applied",[this,e]);this._revertTemplateFromNode(e,this._revertData)}*getViews(){yield*function*e(t){if(t.children)for(const s of t.children)C(s)?yield s:E(s)&&(yield*e(s))}(this)}static bind(e,t){return{to:(s,o)=>new g({eventNameOrFunction:s,attribute:s,observable:e,emitter:t,callback:o}),if:(s,o,i)=>new f({observable:e,emitter:t,attribute:s,valueIfTrue:o,callback:i})}}static extend(e,t){if(e._isRendered)throw new o.ZP("template-extend-render",[this,e]);T(e,y(v(t)))}_renderNode(e){let t;if(t=e.node?this.tag&&this.text:this.tag?this.text:!this.text,t)throw new o.ZP("ui-template-wrong-syntax",this);return this.text?this._renderText(e):this._renderElement(e)}_renderElement(e){let t=e.node;return t||(t=e.node=document.createElementNS(this.ns||"http://www.w3.org/1999/xhtml",this.tag)),this._renderAttributes(e),this._renderElementChildren(e),this._setUpListeners(e),t}_renderText(e){let t=e.node;return t?e.revertData.text=t.textContent:t=e.node=document.createTextNode(""),m(this.text)?this._bindToObservable({schema:this.text,updater:b(t),data:e}):t.textContent=this.text.join(""),t}_renderAttributes(e){let t,s,o,i;if(!this.attributes)return;const r=e.node,n=e.revertData;for(t in this.attributes)if(o=r.getAttribute(t),s=this.attributes[t],n&&(n.attributes[t]=o),i=(0,l.Z)(s[0])&&s[0].ns?s[0].ns:null,m(s)){const a=i?s[0].value:s;n&&j(t)&&a.unshift(o),this._bindToObservable({schema:a,updater:_(r,t,i),data:e})}else"style"==t&&"string"!=typeof s[0]?this._renderStyleAttribute(s[0],e):(n&&o&&j(t)&&s.unshift(o),s=s.map((e=>e&&e.value||e)).reduce(((e,t)=>e.concat(t)),[]).reduce(P,""),A(s)||r.setAttributeNS(i,t,s))}_renderStyleAttribute(e,t){const s=t.node;for(const o in e){const i=e[o];m(i)?this._bindToObservable({schema:[i],updater:w(s,o),data:t}):s.style[o]=i}}_renderElementChildren(e){const t=e.node,s=e.intoFragment?document.createDocumentFragment():t,o=e.isApplying;let i=0;for(const r of this.children)if(S(r)){if(!o){r.setParent(t);for(const e of r)s.appendChild(e.element)}}else if(C(r))o||(r.isRendered||r.render(),s.appendChild(r.element));else if((0,c.Z)(r))s.appendChild(r);else if(o){const t={children:[],bindings:[],attributes:{}};e.revertData.children.push(t),r._renderNode({node:s.childNodes[i++],isApplying:!0,revertData:t})}else s.appendChild(r.render());e.intoFragment&&t.appendChild(s)}_setUpListeners(e){if(this.eventListeners)for(const t in this.eventListeners){const s=this.eventListeners[t].map((s=>{const[o,i]=t.split("@");return s.activateDomEventListener(o,i,e)}));e.revertData&&e.revertData.bindings.push(s)}}_bindToObservable({schema:e,updater:t,data:s}){const o=s.revertData;k(e,t,s);const i=e.filter((e=>!A(e))).filter((e=>e.observable)).map((o=>o.activateAttributeListener(e,t,s)));o&&o.bindings.push(i)}_revertTemplateFromNode(e,t){for(const e of t.bindings)for(const t of e)t();if(t.text)e.textContent=t.text;else{for(const s in t.attributes){const o=t.attributes[s];null===o?e.removeAttribute(s):e.setAttribute(s,o)}for(let s=0;s<t.children.length;++s)this._revertTemplateFromNode(e.childNodes[s],t.children[s])}}}(0,i.Z)(u,r.ZP);class p{constructor(e){Object.assign(this,e)}getValue(e){const t=this.observable[this.attribute];return this.callback?this.callback(t,e):t}activateAttributeListener(e,t,s){const o=()=>k(e,t,s);return this.emitter.listenTo(this.observable,"change:"+this.attribute,o),()=>{this.emitter.stopListening(this.observable,"change:"+this.attribute,o)}}}class g extends p{activateDomEventListener(e,t,s){const o=(e,s)=>{t&&!s.target.matches(t)||("function"==typeof this.eventNameOrFunction?this.eventNameOrFunction(s):this.observable.fire(this.eventNameOrFunction,s))};return this.emitter.listenTo(s.node,e,o),()=>{this.emitter.stopListening(s.node,e,o)}}}class f extends p{getValue(e){return!A(super.getValue(e))&&(this.valueIfTrue||!0)}}function m(e){return!!e&&(e.value&&(e=e.value),Array.isArray(e)?e.some(m):e instanceof p)}function k(e,t,{node:s}){let o=function(e,t){return e.map((e=>e instanceof p?e.getValue(t):e))}(e,s);o=1==e.length&&e[0]instanceof f?o[0]:o.reduce(P,""),A(o)?t.remove():t.set(o)}function b(e){return{set(t){e.textContent=t},remove(){e.textContent=""}}}function _(e,t,s){return{set(o){e.setAttributeNS(s,t,o)},remove(){e.removeAttributeNS(s,t)}}}function w(e,t){return{set(s){e.style[t]=s},remove(){e.style[t]=null}}}function v(e){return(0,d.Z)(e,(e=>{if(e&&(e instanceof p||E(e)||C(e)||S(e)))return e}))}function y(e){if("string"==typeof e?e=function(e){return{text:[e]}}(e):e.text&&function(e){e.text=(0,h.Z)(e.text)}(e),e.on&&(e.eventListeners=function(e){for(const t in e)Z(e,t);return e}(e.on),delete e.on),!e.text){e.attributes&&function(e){for(const t in e)e[t].value&&(e[t].value=(0,h.Z)(e[t].value)),Z(e,t)}(e.attributes);const t=[];if(e.children)if(S(e.children))t.push(e.children);else for(const s of e.children)E(s)||C(s)||(0,c.Z)(s)?t.push(s):t.push(new u(s));e.children=t}return e}function Z(e,t){e[t]=(0,h.Z)(e[t])}function P(e,t){return A(t)?e:A(e)?t:`${e} ${t}`}function x(e,t){for(const s in t)e[s]?e[s].push(...t[s]):e[s]=t[s]}function T(e,t){if(t.attributes&&(e.attributes||(e.attributes={}),x(e.attributes,t.attributes)),t.eventListeners&&(e.eventListeners||(e.eventListeners={}),x(e.eventListeners,t.eventListeners)),t.text&&e.text.push(...t.text),t.children&&t.children.length){if(e.children.length!=t.children.length)throw new o.ZP("ui-template-extend-children-mismatch",e);let s=0;for(const o of t.children)T(e.children[s++],o)}}function A(e){return!e&&0!==e}function C(e){return e instanceof n.Z}function E(e){return e instanceof u}function S(e){return e instanceof a.Z}function j(e){return"class"==e||"style"==e}},"./packages/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js":(e,t,s)=>{"use strict";function o(e){return Array.isArray(e)?{items:e,removeItems:[]}:e?Object.assign({items:[],removeItems:[]},e):{items:[],removeItems:[]}}s.d(t,{Z:()=>o})},"./packages/ckeditor5-ui/src/toolbar/toolbarseparatorview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./packages/ckeditor5-ui/src/view.js");class i extends o.Z{constructor(e){super(e),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__separator"]}})}}},"./packages/ckeditor5-ui/src/toolbar/toolbarview.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>y});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-utils/src/focustracker.ts"),r=s("./packages/ckeditor5-ui/src/focuscycler.js"),n=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),a=s("./packages/ckeditor5-ui/src/toolbar/toolbarseparatorview.js");class c extends o.Z{constructor(e){super(e),this.setTemplate({tag:"span",attributes:{class:["ck","ck-toolbar__line-break"]}})}}var l=s("./packages/ckeditor5-utils/src/dom/resizeobserver.ts");function d(e){return e.bindTemplate.to((t=>{t.target===e.element&&t.preventDefault()}))}var h=s("./packages/ckeditor5-utils/src/dom/rect.ts"),u=s("./packages/ckeditor5-utils/src/dom/isvisible.ts"),p=s("./packages/ckeditor5-utils/src/dom/global.ts"),g=s("./packages/ckeditor5-ui/src/dropdown/utils.js"),f=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),m=s("./packages/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js"),k=s("./packages/ckeditor5-core/theme/icons/three-vertical-dots.svg"),b=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),_=s.n(b),w=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/toolbar/toolbar.css"),v={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};_()(w.Z,v);w.Z.locals;class y extends o.Z{constructor(e,t){super(e);const s=this.bindTemplate,o=this.t;this.options=t||{},this.set("ariaLabel",o("Editor toolbar")),this.set("maxWidth","auto"),this.items=this.createCollection(),this.focusTracker=new i.Z,this.keystrokes=new n.Z,this.set("class"),this.set("isCompact",!1),this.itemsView=new Z(e),this.children=this.createCollection(),this.children.add(this.itemsView),this.focusables=this.createCollection();const a="rtl"===e.uiLanguageDirection;this._focusCycler=new r.Z({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:[a?"arrowright":"arrowleft","arrowup"],focusNext:[a?"arrowleft":"arrowright","arrowdown"]}});const c=["ck","ck-toolbar",s.to("class"),s.if("isCompact","ck-toolbar_compact")];this.options.shouldGroupWhenFull&&this.options.isFloating&&c.push("ck-toolbar_floating"),this.setTemplate({tag:"div",attributes:{class:c,role:"toolbar","aria-label":s.to("ariaLabel"),style:{maxWidth:s.to("maxWidth")}},children:this.children,on:{mousedown:d(this)}}),this._behavior=this.options.shouldGroupWhenFull?new x(this):new P(this)}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",((e,t)=>{this.focusTracker.add(t.element)})),this.items.on("remove",((e,t)=>{this.focusTracker.remove(t.element)})),this.keystrokes.listenTo(this.element),this._behavior.render(this)}destroy(){return this._behavior.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy(),super.destroy()}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}fillFromConfig(e,t){const s=(0,m.Z)(e),o=s.items.filter(((e,o,i)=>"|"===e||-1===s.removeItems.indexOf(e)&&("-"===e?!this.options.shouldGroupWhenFull||((0,f.KE)("toolbarview-line-break-ignored-when-grouping-items",i),!1):!!t.has(e)||((0,f.KE)("toolbarview-item-unavailable",{name:e}),!1)))),i=this._cleanSeparators(o).map((e=>"|"===e?new a.Z:"-"===e?new c:t.create(e)));this.items.addMany(i)}_cleanSeparators(e){const t=e=>"-"!==e&&"|"!==e,s=e.length,o=e.findIndex(t),i=s-e.slice().reverse().findIndex(t);return e.slice(o,i).filter(((e,s,o)=>{if(t(e))return!0;return!(s>0&&o[s-1]===e)}))}}class Z extends o.Z{constructor(e){super(e),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-toolbar__items"]},children:this.children})}}class P{constructor(e){const t=e.bindTemplate;e.set("isVertical",!1),e.itemsView.children.bindTo(e.items).using((e=>e)),e.focusables.bindTo(e.items).using((e=>e)),e.extendTemplate({attributes:{class:[t.if("isVertical","ck-toolbar_vertical")]}})}render(){}destroy(){}}class x{constructor(e){this.view=e,this.viewChildren=e.children,this.viewFocusables=e.focusables,this.viewItemsView=e.itemsView,this.viewFocusTracker=e.focusTracker,this.viewLocale=e.locale,this.ungroupedItems=e.createCollection(),this.groupedItems=e.createCollection(),this.groupedItemsDropdown=this._createGroupedItemsDropdown(),this.resizeObserver=null,this.cachedPadding=null,this.shouldUpdateGroupingOnNextResize=!1,e.itemsView.children.bindTo(this.ungroupedItems).using((e=>e)),this.ungroupedItems.on("add",this._updateFocusCycleableItems.bind(this)),this.ungroupedItems.on("remove",this._updateFocusCycleableItems.bind(this)),e.children.on("add",this._updateFocusCycleableItems.bind(this)),e.children.on("remove",this._updateFocusCycleableItems.bind(this)),e.items.on("change",((e,t)=>{const s=t.index;for(const e of t.removed)s>=this.ungroupedItems.length?this.groupedItems.remove(e):this.ungroupedItems.remove(e);for(let e=s;e<s+t.added.length;e++){const o=t.added[e-s];e>this.ungroupedItems.length?this.groupedItems.add(o,e-this.ungroupedItems.length):this.ungroupedItems.add(o,e)}this._updateGrouping()})),e.extendTemplate({attributes:{class:["ck-toolbar_grouping"]}})}render(e){this.viewElement=e.element,this._enableGroupingOnResize(),this._enableGroupingOnMaxWidthChange(e)}destroy(){this.groupedItemsDropdown.destroy(),this.resizeObserver.destroy()}_updateGrouping(){if(!this.viewElement.ownerDocument.body.contains(this.viewElement))return;if(!(0,u.Z)(this.viewElement))return void(this.shouldUpdateGroupingOnNextResize=!0);const e=this.groupedItems.length;let t;for(;this._areItemsOverflowing;)this._groupLastItem(),t=!0;if(!t&&this.groupedItems.length){for(;this.groupedItems.length&&!this._areItemsOverflowing;)this._ungroupFirstItem();this._areItemsOverflowing&&this._groupLastItem()}this.groupedItems.length!==e&&this.view.fire("groupedItemsUpdate")}get _areItemsOverflowing(){if(!this.ungroupedItems.length)return!1;const e=this.viewElement,t=this.viewLocale.uiLanguageDirection,s=new h.Z(e.lastChild),o=new h.Z(e);if(!this.cachedPadding){const s=p.Z.window.getComputedStyle(e),o="ltr"===t?"paddingRight":"paddingLeft";this.cachedPadding=Number.parseInt(s[o])}return"ltr"===t?s.right>o.right-this.cachedPadding:s.left<o.left+this.cachedPadding}_enableGroupingOnResize(){let e;this.resizeObserver=new l.Z(this.viewElement,(t=>{e&&e===t.contentRect.width&&!this.shouldUpdateGroupingOnNextResize||(this.shouldUpdateGroupingOnNextResize=!1,this._updateGrouping(),e=t.contentRect.width)})),this._updateGrouping()}_enableGroupingOnMaxWidthChange(e){e.on("change:maxWidth",(()=>{this._updateGrouping()}))}_groupLastItem(){this.groupedItems.length||(this.viewChildren.add(new a.Z),this.viewChildren.add(this.groupedItemsDropdown),this.viewFocusTracker.add(this.groupedItemsDropdown.element)),this.groupedItems.add(this.ungroupedItems.remove(this.ungroupedItems.last),0)}_ungroupFirstItem(){this.ungroupedItems.add(this.groupedItems.remove(this.groupedItems.first)),this.groupedItems.length||(this.viewChildren.remove(this.groupedItemsDropdown),this.viewChildren.remove(this.viewChildren.last),this.viewFocusTracker.remove(this.groupedItemsDropdown.element))}_createGroupedItemsDropdown(){const e=this.viewLocale,t=e.t,s=(0,g.t9)(e);return s.class="ck-toolbar__grouped-dropdown",s.panelPosition="ltr"===e.uiLanguageDirection?"sw":"se",(0,g.up)(s,[]),s.buttonView.set({label:t("Show more items"),tooltip:!0,tooltipPosition:"rtl"===e.uiLanguageDirection?"se":"sw",icon:k.Z}),s.toolbarView.items.bindTo(this.groupedItems).using((e=>e)),s}_updateFocusCycleableItems(){this.viewFocusables.clear(),this.ungroupedItems.map((e=>{this.viewFocusables.add(e)})),this.groupedItems.length&&this.viewFocusables.add(this.groupedItemsDropdown)}}},"./packages/ckeditor5-ui/src/tooltipmanager.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>g});var o=s("./packages/ckeditor5-ui/src/view.js"),i=s("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),r=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),n=s("./packages/ckeditor5-utils/src/index.ts"),a=s("./node_modules/lodash-es/debounce.js"),c=s("./node_modules/lodash-es/isElement.js"),l=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),d=s.n(l),h=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/tooltip/tooltip.css"),u={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};d()(h.Z,u);h.Z.locals;const p="ck-tooltip";class g{constructor(e){if(g._editors.add(e),g._instance)return g._instance;g._instance=this,this.tooltipTextView=new o.Z(e.locale),this.tooltipTextView.set("text",""),this.tooltipTextView.setTemplate({tag:"span",attributes:{class:["ck","ck-tooltip__text"]},children:[{text:this.tooltipTextView.bindTemplate.to("text")}]}),this.balloonPanelView=new i.Z(e.locale),this.balloonPanelView.class=p,this.balloonPanelView.content.add(this.tooltipTextView),this._currentElementWithTooltip=null,this._currentTooltipPosition=null,this._pinTooltipDebounced=(0,a.Z)(this._pinTooltip,600),this.listenTo(n.CO.document,"mouseenter",this._onEnterOrFocus.bind(this),{useCapture:!0}),this.listenTo(n.CO.document,"mouseleave",this._onLeaveOrBlur.bind(this),{useCapture:!0}),this.listenTo(n.CO.document,"focus",this._onEnterOrFocus.bind(this),{useCapture:!0}),this.listenTo(n.CO.document,"blur",this._onLeaveOrBlur.bind(this),{useCapture:!0}),this.listenTo(n.CO.document,"scroll",this._onScroll.bind(this),{useCapture:!0}),this._watchdogExcluded=!0}destroy(e){g._editors.delete(e),this.stopListening(e.ui),g._editors.size||(this._unpinTooltip(),this.balloonPanelView.destroy(),this.stopListening(),g._instance=null)}_onEnterOrFocus(e,{target:t}){const s=f(t);var o;s&&(s!==this._currentElementWithTooltip&&(this._unpinTooltip(),this._pinTooltipDebounced(s,{text:(o=s).dataset.ckeTooltipText,position:o.dataset.ckeTooltipPosition||"s",cssClass:o.dataset.ckeTooltipClass||""})))}_onLeaveOrBlur(e,{target:t,relatedTarget:s}){if("mouseleave"===e.name){if(!(0,c.Z)(t))return;if(this._currentElementWithTooltip&&t!==this._currentElementWithTooltip)return;const e=f(t),o=f(s);e&&e!==o&&this._unpinTooltip()}else{if(this._currentElementWithTooltip&&t!==this._currentElementWithTooltip)return;this._unpinTooltip()}}_onScroll(e,{target:t}){this._currentElementWithTooltip&&(t.contains(this.balloonPanelView.element)&&t.contains(this._currentElementWithTooltip)||this._unpinTooltip())}_pinTooltip(e,{text:t,position:s,cssClass:o}){const i=(0,n.Ps)(g._editors.values()).ui.view.body;i.has(this.balloonPanelView)||i.add(this.balloonPanelView),this.tooltipTextView.text=t,this.balloonPanelView.pin({target:e,positions:g.getPositioningFunctions(s)}),this.balloonPanelView.class=[p,o].filter((e=>e)).join(" ");for(const e of g._editors)this.listenTo(e.ui,"update",this._updateTooltipPosition.bind(this),{priority:"low"});this._currentElementWithTooltip=e,this._currentTooltipPosition=s}_unpinTooltip(){this._pinTooltipDebounced.cancel(),this.balloonPanelView.unpin();for(const e of g._editors)this.stopListening(e.ui,"update");this._currentElementWithTooltip=null,this._currentTooltipPosition=null}_updateTooltipPosition(){(0,n.pn)(this._currentElementWithTooltip)?this.balloonPanelView.pin({target:this._currentElementWithTooltip,positions:g.getPositioningFunctions(this._currentTooltipPosition)}):this._unpinTooltip()}static getPositioningFunctions(e){const t=g.defaultBalloonPositions;return{s:[t.southArrowNorth,t.southArrowNorthEast,t.southArrowNorthWest],n:[t.northArrowSouth],e:[t.eastArrowWest],w:[t.westArrowEast],sw:[t.southArrowNorthEast],se:[t.southArrowNorthWest]}[e]}}function f(e){return(0,c.Z)(e)?e.closest("[data-cke-tooltip-text]:not([data-cke-tooltip-disabled])"):null}(0,n.CD)(g,r.Z),g.defaultBalloonPositions=(0,i.M)({heightOffset:5,sideOffset:13}),g._instance=null,g._editors=new Set},"./packages/ckeditor5-ui/src/view.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>f});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-ui/src/viewcollection.js"),r=s("./packages/ckeditor5-ui/src/template.js"),n=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),a=s("./packages/ckeditor5-utils/src/observablemixin.ts"),c=s("./packages/ckeditor5-utils/src/collection.ts"),l=s("./packages/ckeditor5-utils/src/mix.ts"),d=s("./packages/ckeditor5-utils/src/isiterable.ts"),h=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),u=s.n(h),p=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/globals/globals.css"),g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};u()(p.Z,g);p.Z.locals;class f{constructor(e){this.element=null,this.isRendered=!1,this.locale=e,this.t=e&&e.t,this._viewCollections=new c.Z,this._unboundChildren=this.createCollection(),this._viewCollections.on("add",((t,s)=>{s.locale=e})),this.decorate("render")}get bindTemplate(){return this._bindTemplate?this._bindTemplate:this._bindTemplate=r.ZP.bind(this,this)}createCollection(e){const t=new i.Z(e);return this._viewCollections.add(t),t}registerChild(e){(0,d.Z)(e)||(e=[e]);for(const t of e)this._unboundChildren.add(t)}deregisterChild(e){(0,d.Z)(e)||(e=[e]);for(const t of e)this._unboundChildren.remove(t)}setTemplate(e){this.template=new r.ZP(e)}extendTemplate(e){r.ZP.extend(this.template,e)}render(){if(this.isRendered)throw new o.ZP("ui-view-render-already-rendered",this);this.template&&(this.element=this.template.render(),this.registerChild(this.template.getViews())),this.isRendered=!0}destroy(){this.stopListening(),this._viewCollections.map((e=>e.destroy())),this.template&&this.template._revertData&&this.template.revert(this.element)}}(0,l.Z)(f,n.Z),(0,l.Z)(f,a.Z)},"./packages/ckeditor5-ui/src/viewcollection.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/collection.ts");class r extends i.Z{constructor(e=[]){super(e,{idProperty:"viewUid"}),this.on("add",((e,t,s)=>{this._renderViewIntoCollectionParent(t,s)})),this.on("remove",((e,t)=>{t.element&&this._parentElement&&t.element.remove()})),this._parentElement=null}destroy(){this.map((e=>e.destroy()))}setParent(e){this._parentElement=e;for(const e of this)this._renderViewIntoCollectionParent(e)}delegate(...e){if(!e.length||!e.every((e=>"string"==typeof e)))throw new o.ZP("ui-viewcollection-delegate-wrong-events",this);return{to:t=>{for(const s of this)for(const o of e)s.delegate(o).to(t);this.on("add",((s,o)=>{for(const s of e)o.delegate(s).to(t)})),this.on("remove",((s,o)=>{for(const s of e)o.stopDelegating(s,t)}))}}}_renderViewIntoCollectionParent(e,t){e.isRendered||e.render(),e.element&&this._parentElement&&this._parentElement.insertBefore(e.element,this._parentElement.children[t])}}},"./packages/ckeditor5-widget/src/utils.js":(e,t,s)=>{"use strict";s.d(t,{s4:()=>f,Uo:()=>m,KT:()=>x,id:()=>Z,Qd:()=>k,em:()=>v,l6:()=>y,XC:()=>b,sC:()=>P,$n:()=>T});var o=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),i=s("./packages/ckeditor5-utils/src/toarray.ts"),r=s("./packages/ckeditor5-engine/src/model/utils/findoptimalinsertionrange.ts"),n=s("./packages/ckeditor5-utils/src/emittermixin.ts"),a=s("./packages/ckeditor5-utils/src/mix.ts");class c{constructor(){this._stack=[]}add(e,t){const s=this._stack,o=s[0];this._insertDescriptor(e);const i=s[0];o===i||l(o,i)||this.fire("change:top",{oldDescriptor:o,newDescriptor:i,writer:t})}remove(e,t){const s=this._stack,o=s[0];this._removeDescriptor(e);const i=s[0];o===i||l(o,i)||this.fire("change:top",{oldDescriptor:o,newDescriptor:i,writer:t})}_insertDescriptor(e){const t=this._stack,s=t.findIndex((t=>t.id===e.id));if(l(e,t[s]))return;s>-1&&t.splice(s,1);let o=0;for(;t[o]&&d(t[o],e);)o++;t.splice(o,0,e)}_removeDescriptor(e){const t=this._stack,s=t.findIndex((t=>t.id===e));s>-1&&t.splice(s,1)}}function l(e,t){return e&&t&&e.priority==t.priority&&h(e.classes)==h(t.classes)}function d(e,t){return e.priority>t.priority||!(e.priority<t.priority)&&h(e.classes)>h(t.classes)}function h(e){return Array.isArray(e)?e.sort().join(","):e}(0,a.Z)(c,n.ZP);var u=s("./packages/ckeditor5-widget/src/widgettypearound/utils.js"),p=s("./packages/ckeditor5-ui/src/icon/iconview.js");const g='<svg viewBox="0 0 16 16" xmlns="http://www.w3.org/2000/svg"><path d="M4 0v1H1v3H0V.5A.5.5 0 0 1 .5 0H4zm8 0h3.5a.5.5 0 0 1 .5.5V4h-1V1h-3V0zM4 16H.5a.5.5 0 0 1-.5-.5V12h1v3h3v1zm8 0v-1h3v-3h1v3.5a.5.5 0 0 1-.5.5H12z"/><path fill-opacity=".256" d="M1 1h14v14H1z"/><g class="ck-icon__selected-indicator"><path d="M7 0h2v1H7V0zM0 7h1v2H0V7zm15 0h1v2h-1V7zm-8 8h2v1H7v-1z"/><path fill-opacity=".254" d="M1 1h14v14H1z"/></g></svg>',f="ck-widget",m="ck-widget_selected";function k(e){return!!e.is("element")&&!!e.getCustomProperty("widget")}function b(e,t,s={}){if(!e.is("containerElement"))throw new o.ZP("widget-to-widget-wrong-element-type",null,{element:e});return t.setAttribute("contenteditable","false",e),t.addClass(f,e),t.setCustomProperty("widget",!0,e),e.getFillerOffset=A,s.label&&y(e,s.label,t),s.hasSelectionHandle&&function(e,t){const s=t.createUIElement("div",{class:"ck ck-widget__selection-handle"},(function(e){const t=this.toDomElement(e),s=new p.Z;return s.set("content",g),s.render(),t.appendChild(s.element),t}));t.insert(t.createPositionAt(e,0),s),t.addClass(["ck-widget_with-selection-handle"],e)}(e,t),v(e,t),e}function _(e,t,s){if(t.classes&&s.addClass((0,i.Z)(t.classes),e),t.attributes)for(const o in t.attributes)s.setAttribute(o,t.attributes[o],e)}function w(e,t,s){if(t.classes&&s.removeClass((0,i.Z)(t.classes),e),t.attributes)for(const o in t.attributes)s.removeAttribute(o,e)}function v(e,t,s=_,o=w){const i=new c;i.on("change:top",((t,i)=>{i.oldDescriptor&&o(e,i.oldDescriptor,i.writer),i.newDescriptor&&s(e,i.newDescriptor,i.writer)})),t.setCustomProperty("addHighlight",((e,t,s)=>i.add(t,s)),e),t.setCustomProperty("removeHighlight",((e,t,s)=>i.remove(t,s)),e)}function y(e,t,s){s.setCustomProperty("widgetLabel",t,e)}function Z(e){const t=e.getCustomProperty("widgetLabel");return t?"function"==typeof t?t():t:""}function P(e,t,s={}){return t.addClass(["ck-editor__editable","ck-editor__nested-editable"],e),t.setAttribute("role","textbox",e),s.label&&t.setAttribute("aria-label",s.label,e),t.setAttribute("contenteditable",e.isReadOnly?"false":"true",e),e.on("change:isReadOnly",((s,o,i)=>{t.setAttribute("contenteditable",i?"false":"true",e)})),e.on("change:isFocused",((s,o,i)=>{i?t.addClass("ck-editor__nested-editable_focused",e):t.removeClass("ck-editor__nested-editable_focused",e)})),v(e,t),e}function x(e,t){const s=e.getSelectedElement();if(s){const o=(0,u.tB)(e);if(o)return t.createRange(t.createPositionAt(s,o))}return(0,r.K)(e,t)}function T(e,t){return(s,o)=>{const{mapper:i,viewPosition:r}=o,n=i.findMappedViewAncestor(r);if(!t(n))return;const a=i.toModelElement(n);o.modelPosition=e.createPositionAt(a,r.isAtStart?"before":"after")}}function A(){return null}},"./packages/ckeditor5-widget/src/widget.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-engine/src/view/observer/mouseobserver.ts"),r=s("./packages/ckeditor5-widget/src/widgettypearound/widgettypearound.js"),n=s("./packages/ckeditor5-typing/src/delete.js"),a=s("./packages/ckeditor5-utils/src/env.ts"),c=s("./packages/ckeditor5-utils/src/keyboard.ts"),l=s("./packages/ckeditor5-utils/src/dom/rect.ts");function d(e){const t=e.model;return(s,o)=>{const i=o.keyCode==c.Do.arrowup,r=o.keyCode==c.Do.arrowdown,n=o.shiftKey,a=t.document.selection;if(!i&&!r)return;const d=r;if(n&&function(e,t){return!e.isCollapsed&&e.isBackward==t}(a,d))return;const p=function(e,t,s){const o=e.model;if(s){const e=t.isCollapsed?t.focus:t.getLastPosition(),s=h(o,e,"forward");if(!s)return null;const i=o.createRange(e,s),r=u(o.schema,i,"backward");return r?o.createRange(e,r):null}{const e=t.isCollapsed?t.focus:t.getFirstPosition(),s=h(o,e,"backward");if(!s)return null;const i=o.createRange(s,e),r=u(o.schema,i,"forward");return r?o.createRange(r,e):null}}(e,a,d);if(p){if(p.isCollapsed){if(a.isCollapsed)return;if(n)return}(p.isCollapsed||function(e,t,s){const o=e.model,i=e.view.domConverter;if(s){const e=o.createSelection(t.start);o.modifySelection(e),e.focus.isAtEnd||t.start.isEqual(e.focus)||(t=o.createRange(e.focus,t.end))}const r=e.mapper.toViewRange(t),n=i.viewRangeToDom(r),a=l.Z.getDomRangeRects(n);let c;for(const e of a)if(void 0!==c){if(Math.round(e.top)>=c)return!1;c=Math.max(c,Math.round(e.bottom))}else c=Math.round(e.bottom);return!0}(e,p,d))&&(t.change((e=>{const s=d?p.end:p.start;if(n){const o=t.createSelection(a.anchor);o.setFocus(s),e.setSelection(o)}else e.setSelection(s)})),s.stop(),o.preventDefault(),o.stopPropagation())}}}function h(e,t,s){const o=e.schema,i=e.createRangeIn(t.root),r="forward"==s?"elementStart":"elementEnd";for(const{previousPosition:e,item:n,type:a}of i.getWalker({startPosition:t,direction:s})){if(o.isLimit(n)&&!o.isInline(n))return e;if(a==r&&o.isBlock(n))return null}return null}function u(e,t,s){const o="backward"==s?t.end:t.start;if(e.checkChild(o,"$text"))return o;for(const{nextPosition:o}of t.getWalker({direction:s}))if(e.checkChild(o,"$text"))return o;return null}var p=s("./packages/ckeditor5-widget/src/utils.js"),g=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),f=s.n(g),m=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widget.css"),k={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};f()(m.Z,k);m.Z.locals;class b extends o.Z{static get pluginName(){return"Widget"}static get requires(){return[r.Z,n.Z]}init(){const e=this.editor,t=e.editing.view,s=t.document;this._previouslySelected=new Set,this.editor.editing.downcastDispatcher.on("selection",((t,s,o)=>{const i=o.writer,r=s.selection;if(r.isCollapsed)return;const n=r.getSelectedElement();if(!n)return;const a=e.editing.mapper.toViewElement(n);(0,p.Qd)(a)&&o.consumable.consume(r,"selection")&&i.setSelection(i.createRangeOn(a),{fake:!0,label:(0,p.id)(a)})})),this.editor.editing.downcastDispatcher.on("selection",((e,t,s)=>{this._clearPreviouslySelectedWidgets(s.writer);const o=s.writer,i=o.document.selection;let r=null;for(const e of i.getRanges())for(const t of e){const e=t.item;(0,p.Qd)(e)&&!_(e,r)&&(o.addClass(p.Uo,e),this._previouslySelected.add(e),r=e)}}),{priority:"low"}),t.addObserver(i.Z),this.listenTo(s,"mousedown",((...e)=>this._onMousedown(...e))),this.listenTo(s,"arrowKey",((...e)=>{this._handleSelectionChangeOnArrowKeyPress(...e)}),{context:[p.Qd,"$text"]}),this.listenTo(s,"arrowKey",((...e)=>{this._preventDefaultOnArrowKeyPress(...e)}),{context:"$root"}),this.listenTo(s,"arrowKey",d(this.editor.editing),{context:"$text"}),this.listenTo(s,"delete",((e,t)=>{this._handleDelete("forward"==t.direction)&&(t.preventDefault(),e.stop())}),{context:"$root"})}_onMousedown(e,t){const s=this.editor,o=s.editing.view,i=o.document;let r=t.target;if(function(e){for(;e;){if(e.is("editableElement")&&!e.is("rootElement"))return!0;if((0,p.Qd)(e))return!1;e=e.parent}return!1}(r)){if((a.ZP.isSafari||a.ZP.isGecko)&&t.domEvent.detail>=3){const e=s.editing.mapper,o=r.is("attributeElement")?r.findAncestor((e=>!e.is("attributeElement"))):r,i=e.toModelElement(o);t.preventDefault(),this.editor.model.change((e=>{e.setSelection(i,"in")}))}return}if(!(0,p.Qd)(r)&&(r=r.findAncestor(p.Qd),!r))return;a.ZP.isAndroid&&t.preventDefault(),i.isFocused||o.focus();const n=s.editing.mapper.toModelElement(r);this._setSelectionOverElement(n)}_handleSelectionChangeOnArrowKeyPress(e,t){const s=t.keyCode,o=this.editor.model,i=o.schema,r=o.document.selection,n=r.getSelectedElement(),a=(0,c.mA)(s,this.editor.locale.contentLanguageDirection),l="down"==a||"right"==a,d="up"==a||"down"==a;if(n&&i.isObject(n)){const s=l?r.getLastPosition():r.getFirstPosition(),n=i.getNearestSelectionRange(s,l?"forward":"backward");return void(n&&(o.change((e=>{e.setSelection(n)})),t.preventDefault(),e.stop()))}if(!r.isCollapsed&&!t.shiftKey){const s=r.getFirstPosition(),n=r.getLastPosition(),a=s.nodeAfter,c=n.nodeBefore;return void((a&&i.isObject(a)||c&&i.isObject(c))&&(o.change((e=>{e.setSelection(l?n:s)})),t.preventDefault(),e.stop()))}if(!r.isCollapsed)return;const h=this._getObjectElementNextToSelection(l);if(h&&i.isObject(h)){if(i.isInline(h)&&d)return;this._setSelectionOverElement(h),t.preventDefault(),e.stop()}}_preventDefaultOnArrowKeyPress(e,t){const s=this.editor.model,o=s.schema,i=s.document.selection.getSelectedElement();i&&o.isObject(i)&&(t.preventDefault(),e.stop())}_handleDelete(e){if(this.editor.isReadOnly)return;const t=this.editor.model.document.selection;if(!t.isCollapsed)return;const s=this._getObjectElementNextToSelection(e);return s?(this.editor.model.change((e=>{let o=t.anchor.parent;for(;o.isEmpty;){const t=o;o=t.parent,e.remove(t)}this._setSelectionOverElement(s)})),!0):void 0}_setSelectionOverElement(e){this.editor.model.change((t=>{t.setSelection(t.createRangeOn(e))}))}_getObjectElementNextToSelection(e){const t=this.editor.model,s=t.schema,o=t.document.selection,i=t.createSelection(o);if(t.modifySelection(i,{direction:e?"forward":"backward"}),i.isEqual(o))return null;const r=e?i.focus.nodeBefore:i.focus.nodeAfter;return r&&s.isObject(r)?r:null}_clearPreviouslySelectedWidgets(e){for(const t of this._previouslySelected)e.removeClass(p.Uo,t);this._previouslySelected.clear()}}function _(e,t){return!!t&&Array.from(e.getAncestors()).includes(t)}},"./packages/ckeditor5-widget/src/widgettypearound/utils.js":(e,t,s)=>{"use strict";s.d(t,{Xr:()=>n,_m:()=>r,aU:()=>a,bi:()=>i,t:()=>c,tB:()=>l});var o=s("./packages/ckeditor5-widget/src/utils.js");const i="widget-type-around";function r(e,t,s){return e&&(0,o.Qd)(e)&&!s.isInline(t)}function n(e){return e.closest(".ck-widget__type-around__button")}function a(e){return e.classList.contains("ck-widget__type-around__button_before")?"before":"after"}function c(e,t){const s=e.closest(".ck-widget");return t.mapDomToView(s)}function l(e){return e.getAttribute(i)}},"./packages/ckeditor5-widget/src/widgettypearound/widgettypearound.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-ui/src/template.js"),r=s("./packages/ckeditor5-enter/src/enter.js"),n=s("./packages/ckeditor5-typing/src/delete.js"),a=s("./packages/ckeditor5-utils/src/keyboard.ts"),c=s("./packages/ckeditor5-widget/src/widgettypearound/utils.js"),l=s("./packages/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js"),d=s("./packages/ckeditor5-widget/src/utils.js");var h=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),u=s.n(h),p=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widgettypearound.css"),g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};u()(p.Z,g);p.Z.locals;const f=["before","after"],m=(new DOMParser).parseFromString('<svg viewBox="0 0 10 8" xmlns="http://www.w3.org/2000/svg"><path d="M9.055.263v3.972h-6.77M1 4.216l2-2.038m-2 2 2 2.038"/></svg>',"image/svg+xml").firstChild,k="ck-widget__type-around_disabled";class b extends o.Z{static get pluginName(){return"WidgetTypeAround"}static get requires(){return[r.Z,n.Z]}constructor(e){super(e),this._currentFakeCaretModelElement=null}init(){const e=this.editor,t=e.editing.view;this.on("change:isEnabled",((s,o,i)=>{t.change((e=>{for(const s of t.document.roots)i?e.removeClass(k,s):e.addClass(k,s)})),i||e.model.change((e=>{e.removeSelectionAttribute(c.bi)}))})),this._enableTypeAroundUIInjection(),this._enableInsertingParagraphsOnButtonClick(),this._enableInsertingParagraphsOnEnterKeypress(),this._enableInsertingParagraphsOnTypingKeystroke(),this._enableTypeAroundFakeCaretActivationUsingKeyboardArrows(),this._enableDeleteIntegration(),this._enableInsertContentIntegration(),this._enableInsertObjectIntegration(),this._enableDeleteContentIntegration()}destroy(){this._currentFakeCaretModelElement=null}_insertParagraph(e,t){const s=this.editor,o=s.editing.view,i=s.model.schema.getAttributesWithProperty(e,"copyOnReplace",!0);s.execute("insertParagraph",{position:s.model.createPositionAt(e,t),attributes:i}),o.focus(),o.scrollToTheSelection()}_listenToIfEnabled(e,t,s,o){this.listenTo(e,t,((...e)=>{this.isEnabled&&s(...e)}),o)}_insertParagraphAccordingToFakeCaretPosition(){const e=this.editor.model.document.selection,t=(0,c.tB)(e);if(!t)return!1;const s=e.getSelectedElement();return this._insertParagraph(s,t),!0}_enableTypeAroundUIInjection(){const e=this.editor,t=e.model.schema,s=e.locale.t,o={before:s("Insert paragraph before block"),after:s("Insert paragraph after block")};e.editing.downcastDispatcher.on("insert",((e,s,r)=>{const n=r.mapper.toViewElement(s.item);(0,c._m)(n,s.item,t)&&function(e,t,s){const o=e.createUIElement("div",{class:"ck ck-reset_all ck-widget__type-around"},(function(e){const s=this.toDomElement(e);return function(e,t){for(const s of f){const o=new i.ZP({tag:"div",attributes:{class:["ck","ck-widget__type-around__button",`ck-widget__type-around__button_${s}`],title:t[s]},children:[e.ownerDocument.importNode(m,!0)]});e.appendChild(o.render())}}(s,t),function(e){const t=new i.ZP({tag:"div",attributes:{class:["ck","ck-widget__type-around__fake-caret"]}});e.appendChild(t.render())}(s),s}));e.insert(e.createPositionAt(s,"end"),o)}(r.writer,o,n)}),{priority:"low"})}_enableTypeAroundFakeCaretActivationUsingKeyboardArrows(){const e=this.editor,t=e.model,s=t.document.selection,o=t.schema,i=e.editing.view;function r(e){return`ck-widget_type-around_show-fake-caret_${e}`}this._listenToIfEnabled(i.document,"arrowKey",((e,t)=>{this._handleArrowKeyPress(e,t)}),{context:[d.Qd,"$text"],priority:"high"}),this._listenToIfEnabled(s,"change:range",((t,s)=>{s.directChange&&e.model.change((e=>{e.removeSelectionAttribute(c.bi)}))})),this._listenToIfEnabled(t.document,"change:data",(()=>{const t=s.getSelectedElement();if(t){const s=e.editing.mapper.toViewElement(t);if((0,c._m)(s,t,o))return}e.model.change((e=>{e.removeSelectionAttribute(c.bi)}))})),this._listenToIfEnabled(e.editing.downcastDispatcher,"selection",((e,t,s)=>{const i=s.writer;if(this._currentFakeCaretModelElement){const e=s.mapper.toViewElement(this._currentFakeCaretModelElement);e&&(i.removeClass(f.map(r),e),this._currentFakeCaretModelElement=null)}const n=t.selection.getSelectedElement();if(!n)return;const a=s.mapper.toViewElement(n);if(!(0,c._m)(a,n,o))return;const l=(0,c.tB)(t.selection);l&&(i.addClass(r(l),a),this._currentFakeCaretModelElement=n)})),this._listenToIfEnabled(e.ui.focusTracker,"change:isFocused",((t,s,o)=>{o||e.model.change((e=>{e.removeSelectionAttribute(c.bi)}))}))}_handleArrowKeyPress(e,t){const s=this.editor,o=s.model,i=o.document.selection,r=o.schema,n=s.editing.view,l=t.keyCode,d=(0,a.Zt)(l,s.locale.contentLanguageDirection),h=n.document.selection.getSelectedElement(),u=s.editing.mapper.toModelElement(h);let p;(0,c._m)(h,u,r)?p=this._handleArrowKeyPressOnSelectedWidget(d):i.isCollapsed?p=this._handleArrowKeyPressWhenSelectionNextToAWidget(d):t.shiftKey||(p=this._handleArrowKeyPressWhenNonCollapsedSelection(d)),p&&(t.preventDefault(),e.stop())}_handleArrowKeyPressOnSelectedWidget(e){const t=this.editor.model,s=t.document.selection,o=(0,c.tB)(s);return t.change((t=>{if(!o)return t.setSelectionAttribute(c.bi,e?"after":"before"),!0;if(!(o===(e?"after":"before")))return t.removeSelectionAttribute(c.bi),!0;return!1}))}_handleArrowKeyPressWhenSelectionNextToAWidget(e){const t=this.editor,s=t.model,o=s.schema,i=t.plugins.get("Widget"),r=i._getObjectElementNextToSelection(e),n=t.editing.mapper.toViewElement(r);return!!(0,c._m)(n,r,o)&&(s.change((t=>{i._setSelectionOverElement(r),t.setSelectionAttribute(c.bi,e?"before":"after")})),!0)}_handleArrowKeyPressWhenNonCollapsedSelection(e){const t=this.editor,s=t.model,o=s.schema,i=t.editing.mapper,r=s.document.selection,n=e?r.getLastPosition().nodeBefore:r.getFirstPosition().nodeAfter,a=i.toViewElement(n);return!!(0,c._m)(a,n,o)&&(s.change((t=>{t.setSelection(n,"on"),t.setSelectionAttribute(c.bi,e?"after":"before")})),!0)}_enableInsertingParagraphsOnButtonClick(){const e=this.editor,t=e.editing.view;this._listenToIfEnabled(t.document,"mousedown",((s,o)=>{const i=(0,c.Xr)(o.domTarget);if(!i)return;const r=(0,c.aU)(i),n=(0,c.t)(i,t.domConverter),a=e.editing.mapper.toModelElement(n);this._insertParagraph(a,r),o.preventDefault(),s.stop()}))}_enableInsertingParagraphsOnEnterKeypress(){const e=this.editor,t=e.model.document.selection,s=e.editing.view;this._listenToIfEnabled(s.document,"enter",((s,o)=>{if("atTarget"!=s.eventPhase)return;const i=t.getSelectedElement(),r=e.editing.mapper.toViewElement(i),n=e.model.schema;let a;this._insertParagraphAccordingToFakeCaretPosition()?a=!0:(0,c._m)(r,i,n)&&(this._insertParagraph(i,o.isSoft?"before":"after"),a=!0),a&&(o.preventDefault(),s.stop())}),{context:d.Qd})}_enableInsertingParagraphsOnTypingKeystroke(){const e=this.editor.editing.view,t=[a.Do.enter,a.Do.delete,a.Do.backspace];this._listenToIfEnabled(e.document,"keydown",((e,s)=>{t.includes(s.keyCode)||(0,l.u)(s)||this._insertParagraphAccordingToFakeCaretPosition()}),{priority:"high"})}_enableDeleteIntegration(){const e=this.editor,t=e.editing.view,s=e.model,o=s.schema;this._listenToIfEnabled(t.document,"delete",((t,i)=>{if("atTarget"!=t.eventPhase)return;const r=(0,c.tB)(s.document.selection);if(!r)return;const n=i.direction,a=s.document.selection.getSelectedElement(),l="forward"==n;if("before"===r===l)e.execute("delete",{selection:s.createSelection(a,"on")});else{const t=o.getNearestSelectionRange(s.createPositionAt(a,r),n);if(t)if(t.isCollapsed){const i=s.createSelection(t.start);if(s.modifySelection(i,{direction:n}),i.focus.isEqual(t.start)){const e=function(e,t){let s=t;for(const o of t.getAncestors({parentFirst:!0})){if(o.childCount>1||e.isLimit(o))break;s=o}return s}(o,t.start.parent);s.deleteContent(s.createSelection(e,"on"),{doNotAutoparagraph:!0})}else s.change((s=>{s.setSelection(t),e.execute(l?"deleteForward":"delete")}))}else s.change((s=>{s.setSelection(t),e.execute(l?"deleteForward":"delete")}))}i.preventDefault(),t.stop()}),{context:d.Qd})}_enableInsertContentIntegration(){const e=this.editor,t=this.editor.model,s=t.document.selection;this._listenToIfEnabled(e.model,"insertContent",((e,[o,i])=>{if(i&&!i.is("documentSelection"))return;const r=(0,c.tB)(s);return r?(e.stop(),t.change((e=>{const i=s.getSelectedElement(),n=t.createPositionAt(i,r),a=e.createSelection(n),c=t.insertContent(o,a);return e.setSelection(a),c}))):void 0}),{priority:"high"})}_enableInsertObjectIntegration(){const e=this.editor,t=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"insertObject",((e,s)=>{const[,o,,i={}]=s;if(o&&!o.is("documentSelection"))return;const r=(0,c.tB)(t);r&&(i.findOptimalPosition=r,s[3]=i)}),{priority:"high"})}_enableDeleteContentIntegration(){const e=this.editor,t=this.editor.model.document.selection;this._listenToIfEnabled(e.model,"deleteContent",((e,[s])=>{if(s&&!s.is("documentSelection"))return;(0,c.tB)(t)&&e.stop()}),{priority:"high"})}}},"./src/clipboard.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Clipboard:()=>C,ClipboardPipeline:()=>d,DragDrop:()=>y,PastePlainText:()=>A});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-utils/src/eventinfo.ts"),r=s("./packages/ckeditor5-engine/src/view/observer/domeventobserver.ts");class n{constructor(e){this.files=function(e){const t=Array.from(e.files||[]),s=Array.from(e.items||[]);if(t.length)return t;return s.filter((e=>"file"===e.kind)).map((e=>e.getAsFile()))}(e),this._native=e}get types(){return this._native.types}getData(e){return this._native.getData(e)}setData(e,t){this._native.setData(e,t)}set effectAllowed(e){this._native.effectAllowed=e}get effectAllowed(){return this._native.effectAllowed}set dropEffect(e){this._native.dropEffect=e}get dropEffect(){return this._native.dropEffect}get isCanceled(){return"none"==this._native.dropEffect||!!this._native.mozUserCancelled}}class a extends r.Z{constructor(e){super(e);const t=this.document;function s(e){return(s,o)=>{o.preventDefault();const r=o.dropRange?[o.dropRange]:null,n=new i.Z(t,e);t.fire(n,{dataTransfer:o.dataTransfer,method:s.name,targetRanges:r,target:o.target}),n.stop.called&&o.stopPropagation()}}this.domEventType=["paste","copy","cut","drop","dragover","dragstart","dragend","dragenter","dragleave"],this.listenTo(t,"paste",s("clipboardInput"),{priority:"low"}),this.listenTo(t,"drop",s("clipboardInput"),{priority:"low"}),this.listenTo(t,"dragover",s("dragging"),{priority:"low"})}onDomEvent(e){const t={dataTransfer:new n(e.clipboardData?e.clipboardData:e.dataTransfer)};"drop"!=e.type&&"dragover"!=e.type||(t.dropRange=function(e,t){const s=t.target.ownerDocument,o=t.clientX,i=t.clientY;let r;s.caretRangeFromPoint&&s.caretRangeFromPoint(o,i)?r=s.caretRangeFromPoint(o,i):t.rangeParent&&(r=s.createRange(),r.setStart(t.rangeParent,t.rangeOffset),r.collapse(!0));if(r)return e.domConverter.domRangeToView(r);return null}(this.view,e)),this.fire(e.type,e,t)}}const c=["figcaption","li"];function l(e){let t="";if(e.is("$text")||e.is("$textProxy"))t=e.data;else if(e.is("element","img")&&e.hasAttribute("alt"))t=e.getAttribute("alt");else if(e.is("element","br"))t="\n";else{let s=null;for(const o of e.getChildren()){const e=l(o);s&&(s.is("containerElement")||o.is("containerElement"))&&(c.includes(s.name)||c.includes(o.name)?t+="\n":t+="\n\n"),t+=e,s=o}}return t}class d extends o.Z{static get pluginName(){return"ClipboardPipeline"}init(){this.editor.editing.view.addObserver(a),this._setupPasteDrop(),this._setupCopyCut()}_setupPasteDrop(){const e=this.editor,t=e.model,s=e.editing.view,o=s.document;this.listenTo(o,"clipboardInput",(t=>{e.isReadOnly&&t.stop()}),{priority:"highest"}),this.listenTo(o,"clipboardInput",((e,t)=>{const o=t.dataTransfer;let r=t.content||"";var n;r||(o.getData("text/html")?r=function(e){return e.replace(/<span(?: class="Apple-converted-space"|)>(\s+)<\/span>/g,((e,t)=>1==t.length?" ":t)).replace(/<!--[\s\S]*?-->/g,"")}(o.getData("text/html")):o.getData("text/plain")&&(((n=(n=o.getData("text/plain")).replace(/</g,"<").replace(/>/g,">").replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br>").replace(/^\s/," ").replace(/\s$/," ").replace(/\s\s/g," ")).includes("</p><p>")||n.includes("<br>"))&&(n=`<p>${n}</p>`),r=n),r=this.editor.data.htmlProcessor.toView(r));const a=new i.Z(this,"inputTransformation");this.fire(a,{content:r,dataTransfer:o,targetRanges:t.targetRanges,method:t.method}),a.stop.called&&e.stop(),s.scrollToTheSelection()}),{priority:"low"}),this.listenTo(this,"inputTransformation",((e,s)=>{if(s.content.isEmpty)return;const o=this.editor.data.toModel(s.content,"$clipboardHolder");0!=o.childCount&&(e.stop(),t.change((()=>{this.fire("contentInsertion",{content:o,method:s.method,dataTransfer:s.dataTransfer,targetRanges:s.targetRanges})})))}),{priority:"low"}),this.listenTo(this,"contentInsertion",((e,s)=>{s.resultRange=t.insertContent(s.content)}),{priority:"low"})}_setupCopyCut(){const e=this.editor,t=e.model.document,s=e.editing.view.document;function o(o,i){const r=i.dataTransfer;i.preventDefault();const n=e.data.toView(e.model.getSelectedContent(t.selection));s.fire("clipboardOutput",{dataTransfer:r,content:n,method:o.name})}this.listenTo(s,"copy",o,{priority:"low"}),this.listenTo(s,"cut",((t,s)=>{e.isReadOnly?s.preventDefault():o(t,s)}),{priority:"low"}),this.listenTo(s,"clipboardOutput",((s,o)=>{o.content.isEmpty||(o.dataTransfer.setData("text/html",this.editor.data.htmlProcessor.toData(o.content)),o.dataTransfer.setData("text/plain",l(o.content))),"cut"==o.method&&e.model.deleteContent(t.selection)}),{priority:"low"})}}var h=s("./packages/ckeditor5-engine/src/model/liverange.ts"),u=s("./packages/ckeditor5-engine/src/view/observer/mouseobserver.ts"),p=s("./packages/ckeditor5-widget/src/widget.js"),g=s("./packages/ckeditor5-utils/src/uid.ts"),f=s("./packages/ckeditor5-utils/src/env.ts"),m=s("./packages/ckeditor5-widget/src/utils.js"),k=s("./node_modules/lodash-es/throttle.js"),b=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),_=s.n(b),w=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-clipboard/theme/clipboard.css"),v={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};_()(w.Z,v);w.Z.locals;class y extends o.Z{static get pluginName(){return"DragDrop"}static get requires(){return[d,p.Z]}init(){const e=this.editor,t=e.editing.view;this._draggedRange=null,this._draggingUid="",this._draggableElement=null,this._updateDropMarkerThrottled=(0,k.Z)((e=>this._updateDropMarker(e)),40),this._removeDropMarkerDelayed=x((()=>this._removeDropMarker()),40),this._clearDraggableAttributesDelayed=x((()=>this._clearDraggableAttributes()),40),t.addObserver(a),t.addObserver(u.Z),this._setupDragging(),this._setupContentInsertionIntegration(),this._setupClipboardInputIntegration(),this._setupDropMarker(),this._setupDraggableAttributeHandling(),this.listenTo(e,"change:isReadOnly",((e,t,s)=>{s?this.forceDisabled("readOnlyMode"):this.clearForceDisabled("readOnlyMode")})),this.on("change:isEnabled",((e,t,s)=>{s||this._finalizeDragging(!1)})),f.ZP.isAndroid&&this.forceDisabled("noAndroidSupport")}destroy(){return this._draggedRange&&(this._draggedRange.detach(),this._draggedRange=null),this._updateDropMarkerThrottled.cancel(),this._removeDropMarkerDelayed.cancel(),this._clearDraggableAttributesDelayed.cancel(),super.destroy()}_setupDragging(){const e=this.editor,t=e.model,s=t.document,o=e.editing.view,i=o.document;this.listenTo(i,"dragstart",((o,r)=>{const n=s.selection;if(r.target&&r.target.is("editableElement"))return void r.preventDefault();const a=r.target?T(r.target):null;if(a){const s=e.editing.mapper.toModelElement(a);this._draggedRange=h.Z.fromRange(t.createRangeOn(s)),e.plugins.has("WidgetToolbarRepository")&&e.plugins.get("WidgetToolbarRepository").forceDisabled("dragDrop")}else if(!i.selection.isCollapsed){const e=i.selection.getSelectedElement();e&&(0,m.Qd)(e)||(this._draggedRange=h.Z.fromRange(n.getFirstRange()))}if(!this._draggedRange)return void r.preventDefault();this._draggingUid=(0,g.Z)(),r.dataTransfer.effectAllowed=this.isEnabled?"copyMove":"copy",r.dataTransfer.setData("application/ckeditor5-dragging-uid",this._draggingUid);const c=t.createSelection(this._draggedRange.toRange()),l=e.data.toView(t.getSelectedContent(c));i.fire("clipboardOutput",{dataTransfer:r.dataTransfer,content:l,method:o.name}),this.isEnabled||(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="")}),{priority:"low"}),this.listenTo(i,"dragend",((e,t)=>{this._finalizeDragging(!t.dataTransfer.isCanceled&&"move"==t.dataTransfer.dropEffect)}),{priority:"low"}),this.listenTo(i,"dragenter",(()=>{this.isEnabled&&o.focus()})),this.listenTo(i,"dragleave",(()=>{this._removeDropMarkerDelayed()})),this.listenTo(i,"dragging",((t,s)=>{if(!this.isEnabled)return void(s.dataTransfer.dropEffect="none");this._removeDropMarkerDelayed.cancel();const o=Z(e,s.targetRanges,s.target);this._draggedRange||(s.dataTransfer.dropEffect="copy"),f.ZP.isGecko||("copy"==s.dataTransfer.effectAllowed?s.dataTransfer.dropEffect="copy":["all","copyMove"].includes(s.dataTransfer.effectAllowed)&&(s.dataTransfer.dropEffect="move")),o&&this._updateDropMarkerThrottled(o)}),{priority:"low"})}_setupClipboardInputIntegration(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"clipboardInput",((t,s)=>{if("drop"!=s.method)return;const o=Z(e,s.targetRanges,s.target);if(this._removeDropMarker(),!o)return this._finalizeDragging(!1),void t.stop();this._draggedRange&&this._draggingUid!=s.dataTransfer.getData("application/ckeditor5-dragging-uid")&&(this._draggedRange.detach(),this._draggedRange=null,this._draggingUid="");if("move"==P(s.dataTransfer)&&this._draggedRange&&this._draggedRange.containsRange(o,!0))return this._finalizeDragging(!1),void t.stop();s.targetRanges=[e.editing.mapper.toViewRange(o)]}),{priority:"high"})}_setupContentInsertionIntegration(){const e=this.editor.plugins.get(d);e.on("contentInsertion",((e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const s=t.targetRanges.map((e=>this.editor.editing.mapper.toModelRange(e)));this.editor.model.change((e=>e.setSelection(s)))}),{priority:"high"}),e.on("contentInsertion",((e,t)=>{if(!this.isEnabled||"drop"!==t.method)return;const s="move"==P(t.dataTransfer),o=!t.resultRange||!t.resultRange.isCollapsed;this._finalizeDragging(o&&s)}),{priority:"lowest"})}_setupDraggableAttributeHandling(){const e=this.editor,t=e.editing.view,s=t.document;this.listenTo(s,"mousedown",((o,i)=>{if(f.ZP.isAndroid||!i)return;this._clearDraggableAttributesDelayed.cancel();let r=T(i.target);if(f.ZP.isBlink&&!e.isReadOnly&&!r&&!s.selection.isCollapsed){const e=s.selection.getSelectedElement();e&&(0,m.Qd)(e)||(r=s.selection.editableElement)}r&&(t.change((e=>{e.setAttribute("draggable","true",r)})),this._draggableElement=e.editing.mapper.toModelElement(r))})),this.listenTo(s,"mouseup",(()=>{f.ZP.isAndroid||this._clearDraggableAttributesDelayed()}))}_clearDraggableAttributes(){const e=this.editor.editing;e.view.change((t=>{this._draggableElement&&"$graveyard"!=this._draggableElement.root.rootName&&t.removeAttribute("draggable",e.mapper.toViewElement(this._draggableElement)),this._draggableElement=null}))}_setupDropMarker(){const e=this.editor;e.conversion.for("editingDowncast").markerToHighlight({model:"drop-target",view:{classes:["ck-clipboard-drop-target-range"]}}),e.conversion.for("editingDowncast").markerToElement({model:"drop-target",view:(t,{writer:s})=>{if(e.model.schema.checkChild(t.markerRange.start,"$text"))return s.createUIElement("span",{class:"ck ck-clipboard-drop-target-position"},(function(e){const t=this.toDomElement(e);return t.append("",e.createElement("span"),""),t}))}})}_updateDropMarker(e){const t=this.editor,s=t.model.markers;t.model.change((t=>{s.has("drop-target")?s.get("drop-target").getRange().isEqual(e)||t.updateMarker("drop-target",{range:e}):t.addMarker("drop-target",{range:e,usingOperation:!1,affectsData:!1})}))}_removeDropMarker(){const e=this.editor.model;this._removeDropMarkerDelayed.cancel(),this._updateDropMarkerThrottled.cancel(),e.markers.has("drop-target")&&e.change((e=>{e.removeMarker("drop-target")}))}_finalizeDragging(e){const t=this.editor,s=t.model;this._removeDropMarker(),this._clearDraggableAttributes(),t.plugins.has("WidgetToolbarRepository")&&t.plugins.get("WidgetToolbarRepository").clearForceDisabled("dragDrop"),this._draggingUid="",this._draggedRange&&(e&&this.isEnabled&&s.deleteContent(s.createSelection(this._draggedRange),{doNotAutoparagraph:!0}),this._draggedRange.detach(),this._draggedRange=null)}}function Z(e,t,s){const o=e.model,i=e.editing.mapper;let r=null;const n=t?t[0].start:null;if(s.is("uiElement")&&(s=s.parent),r=function(e,t){const s=e.model,o=e.editing.mapper;if((0,m.Qd)(t))return s.createRangeOn(o.toModelElement(t));if(!t.is("editableElement")){const e=t.findAncestor((e=>(0,m.Qd)(e)||e.is("editableElement")));if((0,m.Qd)(e))return s.createRangeOn(o.toModelElement(e))}return null}(e,s),r)return r;const a=function(e,t){const s=e.editing.mapper,o=e.editing.view,i=s.toModelElement(t);if(i)return i;const r=o.createPositionBefore(t),n=s.findMappedViewAncestor(r);return s.toModelElement(n)}(e,s),c=n?i.toModelPosition(n):null;return c?(r=function(e,t,s){const o=e.model;if(!o.schema.checkChild(s,"$block"))return null;const i=o.createPositionAt(s,0),r=t.path.slice(0,i.path.length),n=o.createPositionFromPath(t.root,r).nodeAfter;if(n&&o.schema.isObject(n))return o.createRangeOn(n);return null}(e,c,a),r||(r=o.schema.getNearestSelectionRange(c,f.ZP.isGecko?"forward":"backward"),r||function(e,t){const s=e.model;for(;t;){if(s.schema.isObject(t))return s.createRangeOn(t);t=t.parent}}(e,c.parent))):function(e,t){const s=e.model,o=s.schema,i=s.createPositionAt(t,0);return o.getNearestSelectionRange(i,"forward")}(e,a)}function P(e){return f.ZP.isGecko?e.dropEffect:["all","copyMove"].includes(e.effectAllowed)?"move":"copy"}function x(e,t){let s;function o(...i){o.cancel(),s=setTimeout((()=>e(...i)),t)}return o.cancel=()=>{clearTimeout(s)},o}function T(e){if(e.is("editableElement"))return null;if(e.hasClass("ck-widget__selection-handle"))return e.findAncestor(m.Qd);if((0,m.Qd)(e))return e;const t=e.findAncestor((e=>(0,m.Qd)(e)||e.is("editableElement")));return(0,m.Qd)(t)?t:null}class A extends o.Z{static get pluginName(){return"PastePlainText"}static get requires(){return[d]}init(){const e=this.editor,t=e.model,s=e.editing.view,o=s.document,i=t.document.selection;let r=!1;s.addObserver(a),this.listenTo(o,"keydown",((e,t)=>{r=t.shiftKey})),e.plugins.get(d).on("contentInsertion",((e,s)=>{(r||function(e,t){if(e.childCount>1)return!1;const s=e.getChild(0);if(t.isObject(s))return!1;return 0==[...s.getAttributeKeys()].length}(s.content,t.schema))&&t.change((e=>{const o=Array.from(i.getAttributes()).filter((([e])=>t.schema.getAttributeProperties(e).isFormatting));i.isCollapsed||t.deleteContent(i,{doNotAutoparagraph:!0}),o.push(...i.getAttributes());const r=e.createRangeIn(s.content);for(const t of r.getItems())t.is("$textProxy")&&e.setAttributes(o,t)}))}))}}class C extends o.Z{static get pluginName(){return"Clipboard"}static get requires(){return[d,y,A]}}},"./src/core.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Command:()=>i.Z,Context:()=>_,ContextPlugin:()=>w.Z,DataApiMixin:()=>B,Editor:()=>S,EditorUI:()=>V,ElementApiMixin:()=>L,MultiCommand:()=>n,PendingActions:()=>$.Z,Plugin:()=>o.Z,attachToForm:()=>z,icons:()=>U,secureSourceElement:()=>W});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-utils/src/inserttopriorityarray.ts");class n extends i.Z{constructor(e){super(e),this._childCommandsDefinitions=[]}refresh(){}execute(...e){const t=this._getFirstEnabledCommand();return!!t&&t.execute(e)}registerChildCommand(e,t={priority:"normal"}){(0,r.Z)(this._childCommandsDefinitions,{command:e,priority:t.priority}),e.on("change:isEnabled",(()=>this._checkEnabled())),this._checkEnabled()}_checkEnabled(){this.isEnabled=!!this._getFirstEnabledCommand()}_getFirstEnabledCommand(){const e=this._childCommandsDefinitions.find((({command:e})=>e.isEnabled));return e&&e.command}}var a=s("./node_modules/lodash-es/isPlainObject.js"),c=s("./node_modules/lodash-es/cloneDeepWith.js"),l=s("./node_modules/lodash-es/isElement.js");class d{constructor(e,t){this._config={},t&&this.define(h(t)),e&&this._setObjectToTarget(this._config,e)}set(e,t){this._setToTarget(this._config,e,t)}define(e,t){this._setToTarget(this._config,e,t,!0)}get(e){return this._getFromSource(this._config,e)}*names(){for(const e of Object.keys(this._config))yield e}_setToTarget(e,t,s,o=!1){if((0,a.Z)(t))return void this._setObjectToTarget(e,t,o);const i=t.split(".");t=i.pop();for(const t of i)(0,a.Z)(e[t])||(e[t]={}),e=e[t];if((0,a.Z)(s))return(0,a.Z)(e[t])||(e[t]={}),e=e[t],void this._setObjectToTarget(e,s,o);o&&void 0!==e[t]||(e[t]=s)}_getFromSource(e,t){const s=t.split(".");t=s.pop();for(const t of s){if(!(0,a.Z)(e[t])){e=null;break}e=e[t]}return e?h(e[t]):void 0}_setObjectToTarget(e,t,s){Object.keys(t).forEach((o=>{this._setToTarget(e,o,t[o],s)}))}}function h(e){return(0,c.Z)(e,u)}function u(e){return(0,l.Z)(e)?e:void 0}var p=s("./packages/ckeditor5-utils/src/collection.ts"),g=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),f=s("./packages/ckeditor5-utils/src/emittermixin.ts"),m=s("./packages/ckeditor5-utils/src/mix.ts");class k{constructor(e,t=[],s=[]){this._context=e,this._plugins=new Map,this._availablePlugins=new Map;for(const e of t)e.pluginName&&this._availablePlugins.set(e.pluginName,e);this._contextPlugins=new Map;for(const[e,t]of s)this._contextPlugins.set(e,t),this._contextPlugins.set(t,e),e.pluginName&&this._availablePlugins.set(e.pluginName,e)}*[Symbol.iterator](){for(const e of this._plugins)"function"==typeof e[0]&&(yield e)}get(e){const t=this._plugins.get(e);if(!t){let t=e;throw"function"==typeof e&&(t=e.pluginName||e.name),new g.ZP("plugincollection-plugin-not-loaded",this._context,{plugin:t})}return t}has(e){return this._plugins.has(e)}init(e,t=[],s=[]){const o=this,i=this._context;!function e(t,s=new Set){t.forEach((t=>{a(t)&&(s.has(t)||(s.add(t),t.pluginName&&!o._availablePlugins.has(t.pluginName)&&o._availablePlugins.set(t.pluginName,t),t.requires&&e(t.requires,s)))}))}(e),h(e);const r=[...function e(t,s=new Set){return t.map((e=>a(e)?e:o._availablePlugins.get(e))).reduce(((t,o)=>s.has(o)?t:(s.add(o),o.requires&&(h(o.requires,o),e(o.requires,s).forEach((e=>t.add(e)))),t.add(o))),new Set)}(e.filter((e=>!l(e,t))))];!function(e,t){for(const s of t){if("function"!=typeof s)throw new g.ZP("plugincollection-replace-plugin-invalid-type",null,{pluginItem:s});const t=s.pluginName;if(!t)throw new g.ZP("plugincollection-replace-plugin-missing-name",null,{pluginItem:s});if(s.requires&&s.requires.length)throw new g.ZP("plugincollection-plugin-for-replacing-cannot-have-dependencies",null,{pluginName:t});const i=o._availablePlugins.get(t);if(!i)throw new g.ZP("plugincollection-plugin-for-replacing-not-exist",null,{pluginName:t});const r=e.indexOf(i);if(-1===r){if(o._contextPlugins.has(i))return;throw new g.ZP("plugincollection-plugin-for-replacing-not-loaded",null,{pluginName:t})}if(i.requires&&i.requires.length)throw new g.ZP("plugincollection-replaced-plugin-cannot-have-dependencies",null,{pluginName:t});e.splice(r,1,s),o._availablePlugins.set(t,s)}}(r,s);const n=function(e){return e.map((e=>{const t=o._contextPlugins.get(e)||new e(i);return o._add(e,t),t}))}(r);return u(n,"init").then((()=>u(n,"afterInit"))).then((()=>n));function a(e){return"function"==typeof e}function c(e){return a(e)&&e.isContextPlugin}function l(e,t){return t.some((t=>t===e||(d(e)===t||d(t)===e)))}function d(e){return a(e)?e.pluginName||e.name:e}function h(e,s=null){e.map((e=>a(e)?e:o._availablePlugins.get(e)||e)).forEach((e=>{!function(e,t){if(a(e))return;if(t)throw new g.ZP("plugincollection-soft-required",i,{missingPlugin:e,requiredBy:d(t)});throw new g.ZP("plugincollection-plugin-not-found",i,{plugin:e})}(e,s),function(e,t){if(!c(t))return;if(c(e))return;throw new g.ZP("plugincollection-context-required",i,{plugin:d(e),requiredBy:d(t)})}(e,s),function(e,s){if(!s)return;if(!l(e,t))return;throw new g.ZP("plugincollection-required",i,{plugin:d(e),requiredBy:d(s)})}(e,s)}))}function u(e,t){return e.reduce(((e,s)=>s[t]?o._contextPlugins.has(s)?e:e.then(s[t].bind(s)):e),Promise.resolve())}}destroy(){const e=[];for(const[,t]of this)"function"!=typeof t.destroy||this._contextPlugins.has(t)||e.push(t.destroy());return Promise.all(e)}_add(e,t){this._plugins.set(e,t);const s=e.pluginName;if(s){if(this._plugins.has(s))throw new g.ZP("plugincollection-plugin-name-conflict",null,{pluginName:s,plugin1:this._plugins.get(s).constructor,plugin2:e});this._plugins.set(s,t)}}}(0,m.Z)(k,f.ZP);var b=s("./packages/ckeditor5-utils/src/locale.ts");class _{constructor(e){this.config=new d(e,this.constructor.defaultConfig);const t=this.constructor.builtinPlugins;this.config.define("plugins",t),this.plugins=new k(this,t);const s=this.config.get("language")||{};this.locale=new b.Z({uiLanguage:"string"==typeof s?s:s.ui,contentLanguage:this.config.get("language.content")}),this.t=this.locale.t,this.editors=new p.Z,this._contextOwner=null}initPlugins(){const e=this.config.get("plugins")||[],t=this.config.get("substitutePlugins")||[];for(const s of e.concat(t)){if("function"!=typeof s)throw new g.ZP("context-initplugins-constructor-only",null,{Plugin:s});if(!0!==s.isContextPlugin)throw new g.ZP("context-initplugins-invalid-plugin",null,{Plugin:s})}return this.plugins.init(e,[],t)}destroy(){return Promise.all(Array.from(this.editors,(e=>e.destroy()))).then((()=>this.plugins.destroy()))}_addEditor(e,t){if(this._contextOwner)throw new g.ZP("context-addeditor-private-context");this.editors.add(e),t&&(this._contextOwner=e)}_removeEditor(e){return this.editors.has(e)&&this.editors.remove(e),this._contextOwner===e?this.destroy():Promise.resolve()}_getEditorConfig(){const e={};for(const t of this.config.names())["plugins","removePlugins","extraPlugins"].includes(t)||(e[t]=this.config.get(t));return e}static create(e){return new Promise((t=>{const s=new this(e);t(s.initPlugins().then((()=>s)))}))}}var w=s("./packages/ckeditor5-core/src/contextplugin.js"),v=s("./packages/ckeditor5-engine/src/controller/editingcontroller.ts");class y{constructor(){this._commands=new Map}add(e,t){this._commands.set(e,t)}get(e){return this._commands.get(e)}execute(e,...t){const s=this.get(e);if(!s)throw new g.ZP("commandcollection-command-not-found",this,{commandName:e});return s.execute(...t)}*names(){yield*this._commands.keys()}*commands(){yield*this._commands.values()}[Symbol.iterator](){return this._commands[Symbol.iterator]()}destroy(){for(const e of this.commands())e.destroy()}}var Z=s("./packages/ckeditor5-engine/src/controller/datacontroller.ts"),P=s("./packages/ckeditor5-engine/src/conversion/conversion.ts"),x=s("./packages/ckeditor5-engine/src/model/model.ts"),T=s("./packages/ckeditor5-utils/src/keystrokehandler.ts");class A extends T.Z{constructor(e){super(),this.editor=e}set(e,t,s={}){if("string"==typeof t){const e=t;t=(t,s)=>{this.editor.execute(e),s()}}super.set(e,t,s)}}var C=s("./packages/ckeditor5-utils/src/observablemixin.ts"),E=s("./packages/ckeditor5-engine/src/view/stylesmap.ts");class S{constructor(e={}){const t=e.language||this.constructor.defaultConfig&&this.constructor.defaultConfig.language;this._context=e.context||new _({language:t}),this._context._addEditor(this,!e.context);const s=Array.from(this.constructor.builtinPlugins||[]);this.config=new d(e,this.constructor.defaultConfig),this.config.define("plugins",s),this.config.define(this._context._getEditorConfig()),this.plugins=new k(this,s,this._context.plugins),this.locale=this._context.locale,this.t=this.locale.t,this._readOnlyLocks=new Set,this.commands=new y,this.set("state","initializing"),this.once("ready",(()=>this.state="ready"),{priority:"high"}),this.once("destroy",(()=>this.state="destroyed"),{priority:"high"}),this.model=new x.Z;const o=new E.A;this.data=new Z.Z(this.model,o),this.editing=new v.Z(this.model,o),this.editing.view.document.bind("isReadOnly").to(this),this.conversion=new P.Z([this.editing.downcastDispatcher,this.data.downcastDispatcher],this.data.upcastDispatcher),this.conversion.addAlias("dataDowncast",this.data.downcastDispatcher),this.conversion.addAlias("editingDowncast",this.editing.downcastDispatcher),this.keystrokes=new A(this),this.keystrokes.listenTo(this.editing.view.document)}get isReadOnly(){return this._readOnlyLocks.size>0}set isReadOnly(e){throw new g.ZP("editor-isreadonly-has-no-setter")}enableReadOnlyMode(e){if("string"!=typeof e&&"symbol"!=typeof e)throw new g.ZP("editor-read-only-lock-id-invalid",null,{lockId:e});this._readOnlyLocks.has(e)||(this._readOnlyLocks.add(e),1===this._readOnlyLocks.size&&this.fire("change:isReadOnly","isReadOnly",!0,!1))}disableReadOnlyMode(e){if("string"!=typeof e&&"symbol"!=typeof e)throw new g.ZP("editor-read-only-lock-id-invalid",null,{lockId:e});this._readOnlyLocks.has(e)&&(this._readOnlyLocks.delete(e),0===this._readOnlyLocks.size&&this.fire("change:isReadOnly","isReadOnly",!1,!0))}initPlugins(){const e=this.config,t=e.get("plugins"),s=e.get("removePlugins")||[],o=e.get("extraPlugins")||[],i=e.get("substitutePlugins")||[];return this.plugins.init(t.concat(o),s,i)}destroy(){let e=Promise.resolve();return"initializing"==this.state&&(e=new Promise((e=>this.once("ready",e)))),e.then((()=>{this.fire("destroy"),this.stopListening(),this.commands.destroy()})).then((()=>this.plugins.destroy())).then((()=>{this.model.destroy(),this.data.destroy(),this.editing.destroy(),this.keystrokes.destroy()})).then((()=>this._context._removeEditor(this)))}execute(...e){try{return this.commands.execute(...e)}catch(e){g.ZP.rethrowUnexpectedError(e,this)}}focus(){this.editing.view.focus()}}(0,m.Z)(S,C.Z);class j{constructor(e){this.editor=e,this._components=new Map}*names(){for(const e of this._components.values())yield e.originalName}add(e,t){this._components.set(O(e),{callback:t,originalName:e})}create(e){if(!this.has(e))throw new g.ZP("componentfactory-item-missing",this,{name:e});return this._components.get(O(e)).callback(this.editor.locale)}has(e){return this._components.has(O(e))}}function O(e){return String(e).toLowerCase()}var R=s("./packages/ckeditor5-utils/src/focustracker.ts"),M=s("./packages/ckeditor5-ui/src/tooltipmanager.js"),N=s("./packages/ckeditor5-utils/src/dom/isvisible.ts");class V{constructor(e){this.editor=e,this.componentFactory=new j(e),this.focusTracker=new R.Z,this.tooltipManager=new M.Z(e),this.set("viewportOffset",this._readViewportOffsetFromConfig()),this.isReady=!1,this.once("ready",(()=>{this.isReady=!0})),this._editableElementsMap=new Map,this._focusableToolbarDefinitions=[],this.listenTo(e.editing.view.document,"layoutChanged",(()=>this.update())),this._initFocusTracking()}get element(){return null}update(){this.fire("update")}destroy(){this.stopListening(),this.focusTracker.destroy(),this.tooltipManager.destroy(this.editor);for(const e of this._editableElementsMap.values())e.ckeditorInstance=null;this._editableElementsMap=new Map,this._focusableToolbarDefinitions=[]}setEditableElement(e,t){this._editableElementsMap.set(e,t),t.ckeditorInstance||(t.ckeditorInstance=this.editor),this.focusTracker.add(t);const s=()=>{this.editor.editing.view.getDomRoot(e)||this.editor.keystrokes.listenTo(t)};this.isReady?s():this.once("ready",s)}getEditableElement(e="main"){return this._editableElementsMap.get(e)}getEditableElementsNames(){return this._editableElementsMap.keys()}addToolbar(e,t={}){e.isRendered?(this.focusTracker.add(e.element),this.editor.keystrokes.listenTo(e.element)):e.once("render",(()=>{this.focusTracker.add(e.element),this.editor.keystrokes.listenTo(e.element)})),this._focusableToolbarDefinitions.push({toolbarView:e,options:t})}get _editableElements(){return console.warn("editor-ui-deprecated-editable-elements: The EditorUI#_editableElements property has been deprecated and will be removed in the near future.",{editorUI:this}),this._editableElementsMap}_readViewportOffsetFromConfig(){const e=this.editor,t=e.config.get("ui.viewportOffset");if(t)return t;const s=e.config.get("toolbar.viewportTopOffset");return s?(console.warn("editor-ui-deprecated-viewport-offset-config: The `toolbar.vieportTopOffset` configuration option is deprecated. It will be removed from future CKEditor versions. Use `ui.viewportOffset.top` instead."),{top:s}):{top:0}}_initFocusTracking(){const e=this.editor,t=e.editing.view;let s,o;e.keystrokes.set("Alt+F10",((e,i)=>{const r=this.focusTracker.focusedElement;Array.from(this._editableElementsMap.values()).includes(r)&&!Array.from(t.domRoots.values()).includes(r)&&(s=r);const n=this._getCurrentFocusedToolbarDefinition();n&&o||(o=this._getFocusableCandidateToolbarDefinitions(n));for(let e=0;e<o.length;e++){const e=o.shift();if(o.push(e),e!==n&&this._focusFocusableCandidateToolbar(e)){n&&n.options.afterBlur&&n.options.afterBlur();break}}i()})),e.keystrokes.set("Esc",((t,o)=>{const i=this._getCurrentFocusedToolbarDefinition();i&&(s?(s.focus(),s=null):e.editing.view.focus(),i.options.afterBlur&&i.options.afterBlur(),o())}))}_getFocusableCandidateToolbarDefinitions(){const e=[];for(const t of this._focusableToolbarDefinitions){const{toolbarView:s,options:o}=t;((0,N.Z)(s.element)||o.beforeFocus)&&e.push(t)}return e.sort(((e,t)=>I(e)-I(t))),e}_getCurrentFocusedToolbarDefinition(){for(const e of this._focusableToolbarDefinitions)if(e.toolbarView.element&&e.toolbarView.element.contains(this.focusTracker.focusedElement))return e;return null}_focusFocusableCandidateToolbar(e){const{toolbarView:t,options:{beforeFocus:s}}=e;return s&&s(),!!(0,N.Z)(t.element)&&(t.focus(),!0)}}function I(e){const{toolbarView:t,options:s}=e;let o=10;return(0,N.Z)(t.element)&&o--,s.isContextual&&o--,o}(0,m.Z)(V,C.Z);var D=s("./node_modules/lodash-es/isFunction.js");function z(e){if(!(0,D.Z)(e.updateSourceElement))throw new g.ZP("attachtoform-missing-elementapi-interface",e);const t=e.sourceElement;if(t&&"textarea"===t.tagName.toLowerCase()&&t.form){let s;const o=t.form,i=()=>e.updateSourceElement();(0,D.Z)(o.submit)&&(s=o.submit,o.submit=()=>{i(),s.apply(o)}),o.addEventListener("submit",i),e.on("destroy",(()=>{o.removeEventListener("submit",i),s&&(o.submit=s)}))}}const B={setData(e){this.data.set(e)},getData(e){return this.data.get(e)}};var F=s("./packages/ckeditor5-utils/src/dom/setdatainelement.ts");const L={updateSourceElement(e=this.data.get()){if(!this.sourceElement)throw new g.ZP("editor-missing-sourceelement",this);const t=this.config.get("updateSourceElementOnDestroy"),s=this.sourceElement instanceof HTMLTextAreaElement;t||s?(0,F.Z)(this.sourceElement,e):(0,F.Z)(this.sourceElement,"")}};function W(e){const t=e.sourceElement;if(t){if(t.ckeditorInstance)throw new g.ZP("editor-source-element-already-used",e);t.ckeditorInstance=e,e.once("destroy",(()=>{delete t.ckeditorInstance}))}}var $=s("./packages/ckeditor5-core/src/pendingactions.js");var q=s("./packages/ckeditor5-core/theme/icons/pilcrow.svg");var H=s("./packages/ckeditor5-core/theme/icons/three-vertical-dots.svg");const U={cancel:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.591 10.177 4.243 4.242a1 1 0 0 1-1.415 1.415l-4.242-4.243-4.243 4.243a1 1 0 0 1-1.414-1.415l4.243-4.242L4.52 5.934A1 1 0 0 1 5.934 4.52l4.243 4.243 4.242-4.243a1 1 0 1 1 1.415 1.414l-4.243 4.243z"/></svg>',caption:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 16h9a1 1 0 0 1 0 2H2a1 1 0 0 1 0-2z"/><path d="M17 1a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h14zm0 1.5H3a.5.5 0 0 0-.492.41L2.5 3v9a.5.5 0 0 0 .41.492L3 12.5h14a.5.5 0 0 0 .492-.41L17.5 12V3a.5.5 0 0 0-.41-.492L17 2.5z" fill-opacity=".6"/></svg>',check:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.972 16.615a.997.997 0 0 1-.744-.292l-4.596-4.596a1 1 0 1 1 1.414-1.414l3.926 3.926 9.937-9.937a1 1 0 0 1 1.414 1.415L7.717 16.323a.997.997 0 0 1-.745.292z"/></svg>',cog:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.333 2 .19 2.263a5.899 5.899 0 0 1 1.458.604L14.714 3.4 16.6 5.286l-1.467 1.733c.263.452.468.942.605 1.46L18 8.666v2.666l-2.263.19a5.899 5.899 0 0 1-.604 1.458l1.467 1.733-1.886 1.886-1.733-1.467a5.899 5.899 0 0 1-1.46.605L11.334 18H8.667l-.19-2.263a5.899 5.899 0 0 1-1.458-.604L5.286 16.6 3.4 14.714l1.467-1.733a5.899 5.899 0 0 1-.604-1.458L2 11.333V8.667l2.262-.189a5.899 5.899 0 0 1 .605-1.459L3.4 5.286 5.286 3.4l1.733 1.467a5.899 5.899 0 0 1 1.46-.605L8.666 2h2.666zM10 6.267a3.733 3.733 0 1 0 0 7.466 3.733 3.733 0 0 0 0-7.466z"/></svg>',eraser:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m8.636 9.531-2.758 3.94a.5.5 0 0 0 .122.696l3.224 2.284h1.314l2.636-3.736L8.636 9.53zm.288 8.451L5.14 15.396a2 2 0 0 1-.491-2.786l6.673-9.53a2 2 0 0 1 2.785-.49l3.742 2.62a2 2 0 0 1 .491 2.785l-7.269 10.053-2.147-.066z"/><path d="M4 18h5.523v-1H4zm-2 0h1v-1H2z"/></svg>',lowVision:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M5.085 6.22 2.943 4.078a.75.75 0 1 1 1.06-1.06l2.592 2.59A11.094 11.094 0 0 1 10 5.068c4.738 0 8.578 3.101 8.578 5.083 0 1.197-1.401 2.803-3.555 3.887l1.714 1.713a.75.75 0 0 1-.09 1.138.488.488 0 0 1-.15.084.75.75 0 0 1-.821-.16L6.17 7.304c-.258.11-.51.233-.757.365l6.239 6.24-.006.005.78.78c-.388.094-.78.166-1.174.215l-1.11-1.11h.011L4.55 8.197a7.2 7.2 0 0 0-.665.514l-.112.098 4.897 4.897-.005.006 1.276 1.276a10.164 10.164 0 0 1-1.477-.117l-.479-.479-.009.009-4.863-4.863-.022.031a2.563 2.563 0 0 0-.124.2c-.043.077-.08.158-.108.241a.534.534 0 0 0-.028.133.29.29 0 0 0 .008.072.927.927 0 0 0 .082.226c.067.133.145.26.234.379l3.242 3.365.025.01.59.623c-3.265-.918-5.59-3.155-5.59-4.668 0-1.194 1.448-2.838 3.663-3.93zm7.07.531a4.632 4.632 0 0 1 1.108 5.992l.345.344.046-.018a9.313 9.313 0 0 0 2-1.112c.256-.187.5-.392.727-.613.137-.134.27-.277.392-.431.072-.091.141-.185.203-.286.057-.093.107-.19.148-.292a.72.72 0 0 0 .036-.12.29.29 0 0 0 .008-.072.492.492 0 0 0-.028-.133.999.999 0 0 0-.036-.096 2.165 2.165 0 0 0-.071-.145 2.917 2.917 0 0 0-.125-.2 3.592 3.592 0 0 0-.263-.335 5.444 5.444 0 0 0-.53-.523 7.955 7.955 0 0 0-1.054-.768 9.766 9.766 0 0 0-1.879-.891c-.337-.118-.68-.219-1.027-.301zm-2.85.21-.069.002a.508.508 0 0 0-.254.097.496.496 0 0 0-.104.679.498.498 0 0 0 .326.199l.045.005c.091.003.181.003.272.012a2.45 2.45 0 0 1 2.017 1.513c.024.061.043.125.069.185a.494.494 0 0 0 .45.287h.008a.496.496 0 0 0 .35-.158.482.482 0 0 0 .13-.335.638.638 0 0 0-.048-.219 3.379 3.379 0 0 0-.36-.723 3.438 3.438 0 0 0-2.791-1.543l-.028-.001h-.013z"/></svg>',image:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M6.91 10.54c.26-.23.64-.21.88.03l3.36 3.14 2.23-2.06a.64.64 0 0 1 .87 0l2.52 2.97V4.5H3.2v10.12l3.71-4.08zm10.27-7.51c.6 0 1.09.47 1.09 1.05v11.84c0 .59-.49 1.06-1.09 1.06H2.79c-.6 0-1.09-.47-1.09-1.06V4.08c0-.58.49-1.05 1.1-1.05h14.38zm-5.22 5.56a1.96 1.96 0 1 1 3.4-1.96 1.96 1.96 0 0 1-3.4 1.96z"/></svg>',alignBottom:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m9.239 13.938-2.88-1.663a.75.75 0 0 1 .75-1.3L9 12.067V4.75a.75.75 0 1 1 1.5 0v7.318l1.89-1.093a.75.75 0 0 1 .75 1.3l-2.879 1.663a.752.752 0 0 1-.511.187.752.752 0 0 1-.511-.187zM4.25 17a.75.75 0 1 1 0-1.5h10.5a.75.75 0 0 1 0 1.5H4.25z"/></svg>',alignMiddle:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M9.75 11.875a.752.752 0 0 1 .508.184l2.883 1.666a.75.75 0 0 1-.659 1.344l-.091-.044-1.892-1.093.001 4.318a.75.75 0 1 1-1.5 0v-4.317l-1.89 1.092a.75.75 0 0 1-.75-1.3l2.879-1.663a.752.752 0 0 1 .51-.187zM15.25 9a.75.75 0 1 1 0 1.5H4.75a.75.75 0 1 1 0-1.5h10.5zM9.75.375a.75.75 0 0 1 .75.75v4.318l1.89-1.093.092-.045a.75.75 0 0 1 .659 1.344l-2.883 1.667a.752.752 0 0 1-.508.184.752.752 0 0 1-.511-.187L6.359 5.65a.75.75 0 0 1 .75-1.299L9 5.442V1.125a.75.75 0 0 1 .75-.75z"/></svg>',alignTop:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m10.261 7.062 2.88 1.663a.75.75 0 0 1-.75 1.3L10.5 8.933v7.317a.75.75 0 1 1-1.5 0V8.932l-1.89 1.093a.75.75 0 0 1-.75-1.3l2.879-1.663a.752.752 0 0 1 .511-.187.752.752 0 0 1 .511.187zM15.25 4a.75.75 0 1 1 0 1.5H4.75a.75.75 0 0 1 0-1.5h10.5z"/></svg>',alignLeft:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z"/></svg>',alignCenter:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm2.286 4c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h9.928a.75.75 0 1 0 0-1.5H5.036a.75.75 0 0 0-.75.75z"/></svg>',alignRight:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M18 3.75a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 8a.75.75 0 0 1-.75.75H2.75a.75.75 0 1 1 0-1.5h14.5a.75.75 0 0 1 .75.75zm0 4a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75zm0-8a.75.75 0 0 1-.75.75H7.321a.75.75 0 1 1 0-1.5h9.929a.75.75 0 0 1 .75.75z"/></svg>',alignJustify:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2 3.75c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0 4c0 .414.336.75.75.75h9.929a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75zm0-8c0 .414.336.75.75.75h14.5a.75.75 0 1 0 0-1.5H2.75a.75.75 0 0 0-.75.75z"/></svg>',objectLeft:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm11.5 9H18v1.5h-4.5zm0-3H18v1.5h-4.5zm0-3H18v1.5h-4.5zM2 15h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',objectCenter:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M15.003 7v5.5a1 1 0 0 1-1 1H5.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H6.5V12h6.997V7.5z"/></svg>',objectRight:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2zm0-9h5v1.5H2zm0 3h5v1.5H2zm0 3h5v1.5H2z"/><path d="M18.003 7v5.5a1 1 0 0 1-1 1H8.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H9.5V12h6.997V7.5z"/></svg>',objectFullWidth:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M18 7v5.5a1 1 0 0 1-1 1H3a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h14a1 1 0 0 1 1 1zm-1.505.5H3.504V12h12.991V7.5z"/></svg>',objectInline:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm11.5 9H18v1.5h-4.5zM2 15h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',objectBlockLeft:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M12.003 7v5.5a1 1 0 0 1-1 1H2.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H3.5V12h6.997V7.5z"/></svg>',objectBlockRight:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path opacity=".5" d="M2 3h16v1.5H2zm0 12h16v1.5H2z"/><path d="M18.003 7v5.5a1 1 0 0 1-1 1H8.996a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h8.007a1 1 0 0 1 1 1zm-1.506.5H9.5V12h6.997V7.5z"/></svg>',objectSizeFull:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M18.095 2H1.905C.853 2 0 2.895 0 4v12c0 1.105.853 2 1.905 2h16.19C19.147 18 20 17.105 20 16V4c0-1.105-.853-2-1.905-2zm0 1.5c.263 0 .476.224.476.5v12c0 .276-.213.5-.476.5H1.905a.489.489 0 0 1-.476-.5V4c0-.276.213-.5.476-.5h16.19z"/></svg>',objectSizeLarge:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M13 6H2a2 2 0 0 0-2 2v8a2 2 0 0 0 2 2h11a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v8a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5V8a.5.5 0 0 1 .5-.5h11z"/></svg>',objectSizeSmall:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M7 10H2a2 2 0 0 0-2 2v4a2 2 0 0 0 2 2h5a2 2 0 0 0 2-2v-4a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v4a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-4a.5.5 0 0 1 .5-.5h5z"/></svg>',objectSizeMedium:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M2.5 17v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zm2 0v1h-1v-1h1zM1 15.5v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm-19-2v1H0v-1h1zm19 0v1h-1v-1h1zm0-2v1h-1v-1h1zm-19 0v1H0v-1h1zM14.5 2v1h-1V2h1zm2 0v1h-1V2h1zm2 0v1h-1V2h1zm-8 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm-2 0v1h-1V2h1zm8 0v1h-1V2h1zm-10 0v1h-1V2h1z"/><path d="M10 8H2a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h8a2 2 0 0 0 2-2v-6a2 2 0 0 0-2-2zm0 1.5a.5.5 0 0 1 .5.5v6a.5.5 0 0 1-.5.5H2a.5.5 0 0 1-.5-.5v-6a.5.5 0 0 1 .5-.5h8z"/></svg>',pencil:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m7.3 17.37-.061.088a1.518 1.518 0 0 1-.934.535l-4.178.663-.806-4.153a1.495 1.495 0 0 1 .187-1.058l.056-.086L8.77 2.639c.958-1.351 2.803-1.076 4.296-.03 1.497 1.047 2.387 2.693 1.433 4.055L7.3 17.37zM9.14 4.728l-5.545 8.346 3.277 2.294 5.544-8.346L9.14 4.728zM6.07 16.512l-3.276-2.295.53 2.73 2.746-.435zM9.994 3.506 13.271 5.8c.316-.452-.16-1.333-1.065-1.966-.905-.634-1.895-.78-2.212-.328zM8 18.5 9.375 17H19v1.5H8z"/></svg>',pilcrow:q.Z,quote:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 10.423a6.5 6.5 0 0 1 6.056-6.408l.038.67C6.448 5.423 5.354 7.663 5.22 10H9c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574zm8 0a6.5 6.5 0 0 1 6.056-6.408l.038.67c-2.646.739-3.74 2.979-3.873 5.315H17c.552 0 .5.432.5.986v4.511c0 .554-.448.503-1 .503h-5c-.552 0-.5-.449-.5-1.003v-4.574z"/></svg>',threeVerticalDots:H.Z}},"./src/engine.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{ClickObserver:()=>K,Conversion:()=>b.Z,DataController:()=>k.Z,DocumentFragment:()=>O.Z,DocumentSelection:()=>P.Z,DomConverter:()=>N.Z,DomEventData:()=>oe.Z,DomEventObserver:()=>U.Z,DowncastWriter:()=>J.Z,EditingController:()=>m.Z,Element:()=>S.Z,History:()=>R.Z,HtmlDataProcessor:()=>_.Z,InsertOperation:()=>w.Z,LivePosition:()=>A.Z,LiveRange:()=>T.Z,MarkerOperation:()=>v.Z,Matcher:()=>se.Z,Model:()=>C.Z,MouseObserver:()=>G.Z,Observer:()=>H.Z,OperationFactory:()=>y.Z,Position:()=>j.ZP,Range:()=>x.Z,Renderer:()=>V.Z,StylesProcessor:()=>ie.A,Text:()=>M.Z,TreeWalker:()=>E.Z,UpcastWriter:()=>te,ViewAttributeElement:()=>F.Z,ViewContainerElement:()=>B.Z,ViewDocument:()=>I.Z,ViewDocumentFragment:()=>q.Z,ViewElement:()=>z.Z,ViewEmptyElement:()=>L.Z,ViewRawElement:()=>W.Z,ViewText:()=>D.Z,ViewUIElement:()=>$.Z,addBackgroundRules:()=>je,addBorderRules:()=>Oe,addMarginRules:()=>Le,addPaddingRules:()=>We,disablePlaceholder:()=>l,enablePlaceholder:()=>c,getBoxSidesShorthandValue:()=>Ce,getBoxSidesValueReducer:()=>Ae,getBoxSidesValues:()=>Te,getFillerOffset:()=>B.Y,getPositionShorthandNormalizer:()=>Ee,getShorthandValues:()=>Se,hidePlaceholder:()=>h,isAttachment:()=>Ze,isColor:()=>he,isLength:()=>fe,isLineStyle:()=>pe,isPercentage:()=>ke,isPosition:()=>ve,isRepeat:()=>_e,isURL:()=>xe,needsPlaceholder:()=>u,showPlaceholder:()=>d,transformSets:()=>Z.R});var o=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),i=s.n(o),r=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-engine/theme/placeholder.css"),n={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};i()(r.Z,n);r.Z.locals;const a=new WeakMap;function c(e){const{view:t,element:s,text:o,isDirectHost:i=!0,keepOnFocus:r=!1}=e,n=t.document;a.has(n)||(a.set(n,new Map),n.registerPostFixer((e=>p(n,e)))),a.get(n).set(s,{text:o,isDirectHost:i,keepOnFocus:r,hostElement:i?s:null}),t.change((e=>p(n,e)))}function l(e,t){const s=t.document;e.change((e=>{if(!a.has(s))return;const o=a.get(s),i=o.get(t);e.removeAttribute("data-placeholder",i.hostElement),h(e,i.hostElement),o.delete(t)}))}function d(e,t){return!t.hasClass("ck-placeholder")&&(e.addClass("ck-placeholder",t),!0)}function h(e,t){return!!t.hasClass("ck-placeholder")&&(e.removeClass("ck-placeholder",t),!0)}function u(e,t){if(!e.isAttached())return!1;const s=Array.from(e.getChildren()).some((e=>!e.is("uiElement")));if(s)return!1;if(t)return!0;const o=e.document;if(!o.isFocused)return!0;const i=o.selection.anchor;return!!i&&i.parent!==e}function p(e,t){const s=a.get(e),o=[];let i=!1;for(const[e,r]of s)r.isDirectHost&&(o.push(e),g(t,e,r)&&(i=!0));for(const[e,r]of s){if(r.isDirectHost)continue;const s=f(e);s&&(o.includes(s)||(r.hostElement=s,g(t,e,r)&&(i=!0)))}return i}function g(e,t,s){const{text:o,isDirectHost:i,hostElement:r}=s;let n=!1;r.getAttribute("data-placeholder")!==o&&(e.setAttribute("data-placeholder",o,r),n=!0);return(i||1==t.childCount)&&u(r,s.keepOnFocus)?d(e,r)&&(n=!0):h(e,r)&&(n=!0),n}function f(e){if(e.childCount){const t=e.getChild(0);if(t.is("element")&&!t.is("uiElement")&&!t.is("attributeElement"))return t}return null}var m=s("./packages/ckeditor5-engine/src/controller/editingcontroller.ts"),k=s("./packages/ckeditor5-engine/src/controller/datacontroller.ts"),b=s("./packages/ckeditor5-engine/src/conversion/conversion.ts"),_=s("./packages/ckeditor5-engine/src/dataprocessor/htmldataprocessor.ts"),w=s("./packages/ckeditor5-engine/src/model/operation/insertoperation.ts"),v=s("./packages/ckeditor5-engine/src/model/operation/markeroperation.ts"),y=s("./packages/ckeditor5-engine/src/model/operation/operationfactory.ts"),Z=s("./packages/ckeditor5-engine/src/model/operation/transform.ts"),P=s("./packages/ckeditor5-engine/src/model/documentselection.ts"),x=s("./packages/ckeditor5-engine/src/model/range.ts"),T=s("./packages/ckeditor5-engine/src/model/liverange.ts"),A=s("./packages/ckeditor5-engine/src/model/liveposition.ts"),C=s("./packages/ckeditor5-engine/src/model/model.ts"),E=s("./packages/ckeditor5-engine/src/model/treewalker.ts"),S=s("./packages/ckeditor5-engine/src/model/element.ts"),j=s("./packages/ckeditor5-engine/src/model/position.ts"),O=s("./packages/ckeditor5-engine/src/model/documentfragment.ts"),R=s("./packages/ckeditor5-engine/src/model/history.ts"),M=s("./packages/ckeditor5-engine/src/model/text.ts"),N=s("./packages/ckeditor5-engine/src/view/domconverter.ts"),V=s("./packages/ckeditor5-engine/src/view/renderer.ts"),I=s("./packages/ckeditor5-engine/src/view/document.ts"),D=s("./packages/ckeditor5-engine/src/view/text.ts"),z=s("./packages/ckeditor5-engine/src/view/element.ts"),B=s("./packages/ckeditor5-engine/src/view/containerelement.ts"),F=s("./packages/ckeditor5-engine/src/view/attributeelement.ts"),L=s("./packages/ckeditor5-engine/src/view/emptyelement.ts"),W=s("./packages/ckeditor5-engine/src/view/rawelement.ts"),$=s("./packages/ckeditor5-engine/src/view/uielement.ts"),q=s("./packages/ckeditor5-engine/src/view/documentfragment.ts"),H=s("./packages/ckeditor5-engine/src/view/observer/observer.ts"),U=s("./packages/ckeditor5-engine/src/view/observer/domeventobserver.ts");class K extends U.Z{constructor(e){super(e),this.domEventType="click"}onDomEvent(e){this.fire(e.type,e)}}var G=s("./packages/ckeditor5-engine/src/view/observer/mouseobserver.ts"),J=s("./packages/ckeditor5-engine/src/view/downcastwriter.ts"),Q=s("./node_modules/lodash-es/isPlainObject.js"),X=s("./packages/ckeditor5-engine/src/view/position.ts"),Y=s("./packages/ckeditor5-engine/src/view/range.ts"),ee=s("./packages/ckeditor5-engine/src/view/selection.ts");class te{constructor(e){this.document=e}createDocumentFragment(e){return new q.Z(this.document,e)}createElement(e,t,s){return new z.Z(this.document,e,t,s)}createText(e){return new D.Z(this.document,e)}clone(e,t=!1){return e._clone(t)}appendChild(e,t){return t._appendChild(e)}insertChild(e,t,s){return s._insertChild(e,t)}removeChildren(e,t,s){return s._removeChildren(e,t)}remove(e){const t=e.parent;return t?this.removeChildren(t.getChildIndex(e),1,t):[]}replace(e,t){const s=e.parent;if(s){const o=s.getChildIndex(e);return this.removeChildren(o,1,s),this.insertChild(o,t,s),!0}return!1}unwrapElement(e){const t=e.parent;if(t){const s=t.getChildIndex(e);this.remove(e),this.insertChild(s,e.getChildren(),t)}}rename(e,t){const s=new z.Z(this.document,e,t.getAttributes(),t.getChildren());return this.replace(t,s)?s:null}setAttribute(e,t,s){s._setAttribute(e,t)}removeAttribute(e,t){t._removeAttribute(e)}addClass(e,t){t._addClass(e)}removeClass(e,t){t._removeClass(e)}setStyle(e,t,s){(0,Q.Z)(e)&&void 0===s?t._setStyle(e):s._setStyle(e,t)}removeStyle(e,t){t._removeStyle(e)}setCustomProperty(e,t,s){s._setCustomProperty(e,t)}removeCustomProperty(e,t){return t._removeCustomProperty(e)}createPositionAt(e,t){return X.Z._createAt(e,t)}createPositionAfter(e){return X.Z._createAfter(e)}createPositionBefore(e){return X.Z._createBefore(e)}createRange(e,t){return new Y.Z(e,t)}createRangeOn(e){return Y.Z._createOn(e)}createRangeIn(e){return Y.Z._createIn(e)}createSelection(...e){return new ee.Z(...e)}}var se=s("./packages/ckeditor5-engine/src/view/matcher.ts"),oe=s("./packages/ckeditor5-engine/src/view/observer/domeventdata.ts"),ie=s("./packages/ckeditor5-engine/src/view/stylesmap.ts");const re=/^#([0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})$/i,ne=/^rgb\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}[0-9]{1,3}[ %]?\)$/i,ae=/^rgba\([ ]?([0-9]{1,3}[ %]?,[ ]?){3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,ce=/^hsl\([ ]?([0-9]{1,3}[ %]?[,]?[ ]*){3}(1|[0-9]+%|[0]?\.?[0-9]+)?\)$/i,le=/^hsla\([ ]?([0-9]{1,3}[ %]?,[ ]?){2,3}(1|[0-9]+%|[0]?\.?[0-9]+)\)$/i,de=new Set(["black","silver","gray","white","maroon","red","purple","fuchsia","green","lime","olive","yellow","navy","blue","teal","aqua","orange","aliceblue","antiquewhite","aquamarine","azure","beige","bisque","blanchedalmond","blueviolet","brown","burlywood","cadetblue","chartreuse","chocolate","coral","cornflowerblue","cornsilk","crimson","cyan","darkblue","darkcyan","darkgoldenrod","darkgray","darkgreen","darkgrey","darkkhaki","darkmagenta","darkolivegreen","darkorange","darkorchid","darkred","darksalmon","darkseagreen","darkslateblue","darkslategray","darkslategrey","darkturquoise","darkviolet","deeppink","deepskyblue","dimgray","dimgrey","dodgerblue","firebrick","floralwhite","forestgreen","gainsboro","ghostwhite","gold","goldenrod","greenyellow","grey","honeydew","hotpink","indianred","indigo","ivory","khaki","lavender","lavenderblush","lawngreen","lemonchiffon","lightblue","lightcoral","lightcyan","lightgoldenrodyellow","lightgray","lightgreen","lightgrey","lightpink","lightsalmon","lightseagreen","lightskyblue","lightslategray","lightslategrey","lightsteelblue","lightyellow","limegreen","linen","magenta","mediumaquamarine","mediumblue","mediumorchid","mediumpurple","mediumseagreen","mediumslateblue","mediumspringgreen","mediumturquoise","mediumvioletred","midnightblue","mintcream","mistyrose","moccasin","navajowhite","oldlace","olivedrab","orangered","orchid","palegoldenrod","palegreen","paleturquoise","palevioletred","papayawhip","peachpuff","peru","pink","plum","powderblue","rosybrown","royalblue","saddlebrown","salmon","sandybrown","seagreen","seashell","sienna","skyblue","slateblue","slategray","slategrey","snow","springgreen","steelblue","tan","thistle","tomato","turquoise","violet","wheat","whitesmoke","yellowgreen","activeborder","activecaption","appworkspace","background","buttonface","buttonhighlight","buttonshadow","buttontext","captiontext","graytext","highlight","highlighttext","inactiveborder","inactivecaption","inactivecaptiontext","infobackground","infotext","menu","menutext","scrollbar","threeddarkshadow","threedface","threedhighlight","threedlightshadow","threedshadow","window","windowframe","windowtext","rebeccapurple","currentcolor","transparent"]);function he(e){return e.startsWith("#")?re.test(e):e.startsWith("rgb")?ne.test(e)||ae.test(e):e.startsWith("hsl")?ce.test(e)||le.test(e):de.has(e.toLowerCase())}const ue=["none","hidden","dotted","dashed","solid","double","groove","ridge","inset","outset"];function pe(e){return ue.includes(e)}const ge=/^([+-]?[0-9]*([.][0-9]+)?(px|cm|mm|in|pc|pt|ch|em|ex|rem|vh|vw|vmin|vmax)|0)$/;function fe(e){return ge.test(e)}const me=/^[+-]?[0-9]*([.][0-9]+)?%$/;function ke(e){return me.test(e)}const be=["repeat-x","repeat-y","repeat","space","round","no-repeat"];function _e(e){return be.includes(e)}const we=["center","top","bottom","left","right"];function ve(e){return we.includes(e)}const ye=["fixed","scroll","local"];function Ze(e){return ye.includes(e)}const Pe=/^url\(/;function xe(e){return Pe.test(e)}function Te(e=""){if(""===e)return{top:void 0,right:void 0,bottom:void 0,left:void 0};const t=Se(e),s=t[0],o=t[2]||s,i=t[1]||s;return{top:s,bottom:o,right:i,left:t[3]||i}}function Ae(e){return t=>{const{top:s,right:o,bottom:i,left:r}=t,n=[];return[s,o,r,i].every((e=>!!e))?n.push([e,Ce(t)]):(s&&n.push([e+"-top",s]),o&&n.push([e+"-right",o]),i&&n.push([e+"-bottom",i]),r&&n.push([e+"-left",r])),n}}function Ce({top:e,right:t,bottom:s,left:o}){const i=[];return o!==t?i.push(e,t,s,o):s!==e?i.push(e,t,s):t!==e?i.push(e,t):i.push(e),i.join(" ")}function Ee(e){return t=>({path:e,value:Te(t)})}function Se(e){return e.replace(/, /g,",").split(" ").map((e=>e.replace(/,/g,", ")))}function je(e){e.setNormalizer("background",(e=>{const t={},s=Se(e);for(const e of s)_e(e)?(t.repeat=t.repeat||[],t.repeat.push(e)):ve(e)?(t.position=t.position||[],t.position.push(e)):Ze(e)?t.attachment=e:he(e)?t.color=e:xe(e)&&(t.image=e);return{path:"background",value:t}})),e.setNormalizer("background-color",(e=>({path:"background.color",value:e}))),e.setReducer("background",(e=>{const t=[];return t.push(["background-color",e.color]),t})),e.setStyleRelation("background",["background-color"])}function Oe(e){e.setNormalizer("border",(e=>{const{color:t,style:s,width:o}=ze(e);return{path:"border",value:{color:Te(t),style:Te(s),width:Te(o)}}})),e.setNormalizer("border-top",Re("top")),e.setNormalizer("border-right",Re("right")),e.setNormalizer("border-bottom",Re("bottom")),e.setNormalizer("border-left",Re("left")),e.setNormalizer("border-color",Me("color")),e.setNormalizer("border-width",Me("width")),e.setNormalizer("border-style",Me("style")),e.setNormalizer("border-top-color",Ve("color","top")),e.setNormalizer("border-top-style",Ve("style","top")),e.setNormalizer("border-top-width",Ve("width","top")),e.setNormalizer("border-right-color",Ve("color","right")),e.setNormalizer("border-right-style",Ve("style","right")),e.setNormalizer("border-right-width",Ve("width","right")),e.setNormalizer("border-bottom-color",Ve("color","bottom")),e.setNormalizer("border-bottom-style",Ve("style","bottom")),e.setNormalizer("border-bottom-width",Ve("width","bottom")),e.setNormalizer("border-left-color",Ve("color","left")),e.setNormalizer("border-left-style",Ve("style","left")),e.setNormalizer("border-left-width",Ve("width","left")),e.setExtractor("border-top",Ie("top")),e.setExtractor("border-right",Ie("right")),e.setExtractor("border-bottom",Ie("bottom")),e.setExtractor("border-left",Ie("left")),e.setExtractor("border-top-color","border.color.top"),e.setExtractor("border-right-color","border.color.right"),e.setExtractor("border-bottom-color","border.color.bottom"),e.setExtractor("border-left-color","border.color.left"),e.setExtractor("border-top-width","border.width.top"),e.setExtractor("border-right-width","border.width.right"),e.setExtractor("border-bottom-width","border.width.bottom"),e.setExtractor("border-left-width","border.width.left"),e.setExtractor("border-top-style","border.style.top"),e.setExtractor("border-right-style","border.style.right"),e.setExtractor("border-bottom-style","border.style.bottom"),e.setExtractor("border-left-style","border.style.left"),e.setReducer("border-color",Ae("border-color")),e.setReducer("border-style",Ae("border-style")),e.setReducer("border-width",Ae("border-width")),e.setReducer("border-top",Be("top")),e.setReducer("border-right",Be("right")),e.setReducer("border-bottom",Be("bottom")),e.setReducer("border-left",Be("left")),e.setReducer("border",function(){return t=>{const s=De(t,"top"),o=De(t,"right"),i=De(t,"bottom"),r=De(t,"left"),n=[s,o,i,r],a={width:e(n,"width"),style:e(n,"style"),color:e(n,"color")},c=Fe(a,"all");if(c.length)return c;const l=Object.entries(a).reduce(((e,[t,s])=>(s&&(e.push([`border-${t}`,s]),n.forEach((e=>delete e[t]))),e)),[]);return[...l,...Fe(s,"top"),...Fe(o,"right"),...Fe(i,"bottom"),...Fe(r,"left")]};function e(e,t){return e.map((e=>e[t])).reduce(((e,t)=>e==t?e:null))}}()),e.setStyleRelation("border",["border-color","border-style","border-width","border-top","border-right","border-bottom","border-left","border-top-color","border-right-color","border-bottom-color","border-left-color","border-top-style","border-right-style","border-bottom-style","border-left-style","border-top-width","border-right-width","border-bottom-width","border-left-width"]),e.setStyleRelation("border-color",["border-top-color","border-right-color","border-bottom-color","border-left-color"]),e.setStyleRelation("border-style",["border-top-style","border-right-style","border-bottom-style","border-left-style"]),e.setStyleRelation("border-width",["border-top-width","border-right-width","border-bottom-width","border-left-width"]),e.setStyleRelation("border-top",["border-top-color","border-top-style","border-top-width"]),e.setStyleRelation("border-right",["border-right-color","border-right-style","border-right-width"]),e.setStyleRelation("border-bottom",["border-bottom-color","border-bottom-style","border-bottom-width"]),e.setStyleRelation("border-left",["border-left-color","border-left-style","border-left-width"])}function Re(e){return t=>{const{color:s,style:o,width:i}=ze(t),r={};return void 0!==s&&(r.color={[e]:s}),void 0!==o&&(r.style={[e]:o}),void 0!==i&&(r.width={[e]:i}),{path:"border",value:r}}}function Me(e){return t=>({path:"border",value:Ne(t,e)})}function Ne(e,t){return{[t]:Te(e)}}function Ve(e,t){return s=>({path:"border",value:{[e]:{[t]:s}}})}function Ie(e){return(t,s)=>{if(s.border)return De(s.border,e)}}function De(e,t){const s={};return e.width&&e.width[t]&&(s.width=e.width[t]),e.style&&e.style[t]&&(s.style=e.style[t]),e.color&&e.color[t]&&(s.color=e.color[t]),s}function ze(e){const t={},s=Se(e);for(const e of s)fe(e)||/thin|medium|thick/.test(e)?t.width=e:pe(e)?t.style=e:t.color=e;return t}function Be(e){return t=>Fe(t,e)}function Fe(e,t){const s=[];if(e&&e.width&&s.push("width"),e&&e.style&&s.push("style"),e&&e.color&&s.push("color"),3==s.length){const o=s.map((t=>e[t])).join(" ");return["all"==t?["border",o]:[`border-${t}`,o]]}return"all"==t?[]:s.map((s=>[`border-${t}-${s}`,e[s]]))}function Le(e){e.setNormalizer("margin",Ee("margin")),e.setNormalizer("margin-top",(e=>({path:"margin.top",value:e}))),e.setNormalizer("margin-right",(e=>({path:"margin.right",value:e}))),e.setNormalizer("margin-bottom",(e=>({path:"margin.bottom",value:e}))),e.setNormalizer("margin-left",(e=>({path:"margin.left",value:e}))),e.setReducer("margin",Ae("margin")),e.setStyleRelation("margin",["margin-top","margin-right","margin-bottom","margin-left"])}function We(e){e.setNormalizer("padding",Ee("padding")),e.setNormalizer("padding-top",(e=>({path:"padding.top",value:e}))),e.setNormalizer("padding-right",(e=>({path:"padding.right",value:e}))),e.setNormalizer("padding-bottom",(e=>({path:"padding.bottom",value:e}))),e.setNormalizer("padding-left",(e=>({path:"padding.left",value:e}))),e.setReducer("padding",Ae("padding")),e.setStyleRelation("padding",["padding-top","padding-right","padding-bottom","padding-left"])}},"./src/enter.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Enter:()=>o.Z,ShiftEnter:()=>h});var o=s("./packages/ckeditor5-enter/src/enter.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-enter/src/utils.js");class n extends i.Z{execute(){const e=this.editor.model,t=e.document;e.change((s=>{!function(e,t,s){const o=s.isCollapsed,i=s.getFirstRange(),n=i.start.parent,c=i.end.parent,l=n==c;if(o){const o=(0,r.G)(e.schema,s.getAttributes());a(e,t,i.end),t.removeSelectionAttribute(s.getAttributeKeys()),t.setSelectionAttribute(o)}else{const o=!(i.start.isAtStart&&i.end.isAtEnd);e.deleteContent(s,{leaveUnmerged:o}),l?a(e,t,s.focus):o&&t.setSelection(c,0)}}(e,s,t.selection),this.fire("afterExecute",{writer:s})}))}refresh(){const e=this.editor.model,t=e.document;this.isEnabled=function(e,t){if(t.rangeCount>1)return!1;const s=t.anchor;if(!s||!e.checkChild(s,"softBreak"))return!1;const o=t.getFirstRange(),i=o.start.parent,r=o.end.parent;if((c(i,e)||c(r,e))&&i!==r)return!1;return!0}(e.schema,t.selection)}}function a(e,t,s){const o=t.createElement("softBreak");e.insertContent(o,s),t.setSelection(o,"after")}function c(e,t){return!e.is("rootElement")&&(t.isLimit(e)||c(e.parent,t))}var l=s("./packages/ckeditor5-enter/src/enterobserver.js"),d=s("./packages/ckeditor5-core/src/plugin.js");class h extends d.Z{static get pluginName(){return"ShiftEnter"}init(){const e=this.editor,t=e.model.schema,s=e.conversion,o=e.editing.view,i=o.document;t.register("softBreak",{allowWhere:"$text",isInline:!0}),s.for("upcast").elementToElement({model:"softBreak",view:"br"}),s.for("downcast").elementToElement({model:"softBreak",view:(e,{writer:t})=>t.createEmptyElement("br")}),o.addObserver(l.Z),e.commands.add("shiftEnter",new n(e)),this.listenTo(i,"enter",((t,s)=>{s.preventDefault(),s.isSoft&&(e.execute("shiftEnter"),o.scrollToTheSelection())}),{priority:"low"})}}},"./src/paragraph.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Paragraph:()=>l,ParagraphButtonUI:()=>h});var o=s("./packages/ckeditor5-core/src/command.js"),i=s("./packages/ckeditor5-utils/src/first.ts");class r extends o.Z{refresh(){const e=this.editor.model,t=e.document,s=(0,i.Z)(t.selection.getSelectedBlocks());this.value=!!s&&s.is("element","paragraph"),this.isEnabled=!!s&&n(s,e.schema)}execute(e={}){const t=this.editor.model,s=t.document;t.change((o=>{const i=(e.selection||s.selection).getSelectedBlocks();for(const e of i)!e.is("element","paragraph")&&n(e,t.schema)&&o.rename(e,"paragraph")}))}}function n(e,t){return t.checkChild(e.parent,"paragraph")&&!t.isObject(e)}class a extends o.Z{execute(e){const t=this.editor.model,s=e.attributes;let o=e.position;t.change((e=>{const i=e.createElement("paragraph");if(s&&t.schema.setAllowedAttributes(i,s,e),!t.schema.checkChild(o.parent,i)){const s=t.schema.findAllowedParent(o,i);if(!s)return;o=e.split(o,s).position}t.insertContent(i,o),e.setSelection(i,"in")}))}}var c=s("./packages/ckeditor5-core/src/plugin.js");class l extends c.Z{static get pluginName(){return"Paragraph"}init(){const e=this.editor,t=e.model;e.commands.add("paragraph",new r(e)),e.commands.add("insertParagraph",new a(e)),t.schema.register("paragraph",{inheritAllFrom:"$block"}),e.conversion.elementToElement({model:"paragraph",view:"p"}),e.conversion.for("upcast").elementToElement({model:(e,{writer:t})=>l.paragraphLikeElements.has(e.name)?e.isEmpty?null:t.createElement("paragraph"):null,view:/.+/,converterPriority:"low"})}}l.paragraphLikeElements=new Set(["blockquote","dd","div","dt","h1","h2","h3","h4","h5","h6","li","p","td","th"]);var d=s("./packages/ckeditor5-ui/src/button/buttonview.js");class h extends c.Z{init(){const e=this.editor,t=e.t;e.ui.componentFactory.add("paragraph",(s=>{const o=new d.Z(s),i=e.commands.get("paragraph");return o.label=t("Paragraph"),o.icon='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10.5 5.5H7v5h3.5a2.5 2.5 0 1 0 0-5zM5 3h6.5v.025a5 5 0 0 1 0 9.95V13H7v4a1 1 0 0 1-1 1H5a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1z"/></svg>',o.tooltip=!0,o.isToggleable=!0,o.bind("isEnabled").to(i),o.bind("isOn").to(i,"value"),o.on("execute",(()=>{e.execute("paragraph")})),o}))}}},"./src/select-all.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{SelectAll:()=>u,SelectAllEditing:()=>l,SelectAllUI:()=>h});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-utils/src/keyboard.ts"),r=s("./packages/ckeditor5-core/src/command.js");class n extends r.Z{constructor(e){super(e),this.affectsData=!1}execute(){const e=this.editor.model,t=e.document.selection;let s=e.schema.getLimitElement(t);if(t.containsEntireContent(s)||!a(e.schema,s))do{if(s=s.parent,!s)return}while(!a(e.schema,s));e.change((e=>{e.setSelection(s,"in")}))}}function a(e,t){return e.isLimit(t)&&(e.checkChild(t,"$text")||e.checkChild(t,"paragraph"))}const c=(0,i.Zz)("Ctrl+A");class l extends o.Z{static get pluginName(){return"SelectAllEditing"}init(){const e=this.editor,t=e.editing.view.document;e.commands.add("selectAll",new n(e)),this.listenTo(t,"keydown",((t,s)=>{(0,i.Cq)(s)===c&&(e.execute("selectAll"),s.preventDefault())}))}}var d=s("./packages/ckeditor5-ui/src/button/buttonview.js");class h extends o.Z{static get pluginName(){return"SelectAllUI"}init(){const e=this.editor;e.ui.componentFactory.add("selectAll",(t=>{const s=e.commands.get("selectAll"),o=new d.Z(t),i=t.t;return o.set({label:i("Select all"),icon:'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20"><path d="M.75 15.5a.75.75 0 0 1 .75.75V18l.008.09A.5.5 0 0 0 2 18.5h1.75a.75.75 0 1 1 0 1.5H1.5l-.144-.007a1.5 1.5 0 0 1-1.35-1.349L0 18.5v-2.25a.75.75 0 0 1 .75-.75zm18.5 0a.75.75 0 0 1 .75.75v2.25l-.007.144a1.5 1.5 0 0 1-1.349 1.35L18.5 20h-2.25a.75.75 0 1 1 0-1.5H18a.5.5 0 0 0 .492-.41L18.5 18v-1.75a.75.75 0 0 1 .75-.75zm-10.45 3c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2H7.2a.2.2 0 0 1-.2-.2v-1.1c0-.11.09-.2.2-.2h1.6zm4 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2h-1.6a.2.2 0 0 1-.2-.2v-1.1c0-.11.09-.2.2-.2h1.6zm.45-5.5a.75.75 0 1 1 0 1.5h-8.5a.75.75 0 1 1 0-1.5h8.5zM1.3 11c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2H.2a.2.2 0 0 1-.2-.2v-1.6c0-.11.09-.2.2-.2h1.1zm18.5 0c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2h-1.1a.2.2 0 0 1-.2-.2v-1.6c0-.11.09-.2.2-.2h1.1zm-4.55-2a.75.75 0 1 1 0 1.5H4.75a.75.75 0 1 1 0-1.5h10.5zM1.3 7c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2H.2a.2.2 0 0 1-.2-.2V7.2c0-.11.09-.2.2-.2h1.1zm18.5 0c.11 0 .2.09.2.2v1.6a.2.2 0 0 1-.2.2h-1.1a.2.2 0 0 1-.2-.2V7.2c0-.11.09-.2.2-.2h1.1zm-4.55-2a.75.75 0 1 1 0 1.5h-2.5a.75.75 0 1 1 0-1.5h2.5zm-5 0a.75.75 0 1 1 0 1.5h-5.5a.75.75 0 0 1 0-1.5h5.5zm-6.5-5a.75.75 0 0 1 0 1.5H2a.5.5 0 0 0-.492.41L1.5 2v1.75a.75.75 0 0 1-1.5 0V1.5l.007-.144A1.5 1.5 0 0 1 1.356.006L1.5 0h2.25zM18.5 0l.144.007a1.5 1.5 0 0 1 1.35 1.349L20 1.5v2.25a.75.75 0 1 1-1.5 0V2l-.008-.09A.5.5 0 0 0 18 1.5h-1.75a.75.75 0 1 1 0-1.5h2.25zM8.8 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2H7.2a.2.2 0 0 1-.2-.2V.2c0-.11.09-.2.2-.2h1.6zm4 0c.11 0 .2.09.2.2v1.1a.2.2 0 0 1-.2.2h-1.6a.2.2 0 0 1-.2-.2V.2c0-.11.09-.2.2-.2h1.6z"/></svg>',keystroke:"Ctrl+A",tooltip:!0}),o.bind("isOn","isEnabled").to(s,"value","isEnabled"),this.listenTo(o,"execute",(()=>{e.execute("selectAll"),e.editing.view.focus()})),o}))}}class u extends o.Z{static get requires(){return[l,h]}static get pluginName(){return"SelectAll"}}},"./src/typing.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Delete:()=>f.Z,Input:()=>g,TextTransformation:()=>M,TextWatcher:()=>w,TwoStepCaretMovement:()=>y,Typing:()=>m,findAttributeRange:()=>z,getLastTextLine:()=>_,inlineHighlight:()=>F,isNonTypingKeystroke:()=>a.u});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-typing/src/utils/changebuffer.js");class n extends i.Z{constructor(e,t){super(e),this._buffer=new r.Z(e.model,t)}get buffer(){return this._buffer}destroy(){super.destroy(),this._buffer.destroy()}execute(e={}){const t=this.editor.model,s=t.document,o=e.text||"",i=o.length,r=e.range?t.createSelection(e.range):s.selection,n=e.resultRange;t.enqueueChange(this._buffer.batch,(e=>{this._buffer.lock(),t.deleteContent(r),o&&t.insertContent(e.createText(o,s.selection.getAttributes()),r),n?e.setSelection(n):r.is("documentSelection")||e.setSelection(r),this._buffer.unlock(),this._buffer.input(i)}))}}var a=s("./packages/ckeditor5-typing/src/utils/injectunsafekeystrokeshandling.js"),c=s("./packages/ckeditor5-utils/src/diff.ts"),l=s("./packages/ckeditor5-engine/src/view/domconverter.ts"),d=s("./packages/ckeditor5-typing/src/utils/utils.js");class h{constructor(e){this.editor=e,this.editing=this.editor.editing}handle(e,t){if((0,d.E9)(e))this._handleContainerChildrenMutations(e,t);else for(const s of e)this._handleTextMutation(s,t),this._handleTextNodeInsertion(s)}_handleContainerChildrenMutations(e,t){const s=function(e){const t=e.map((e=>e.node)).reduce(((e,t)=>e.getCommonAncestor(t,{includeSelf:!0})));if(!t)return;return t.getAncestors({includeSelf:!0,parentFirst:!0}).find((e=>e.is("containerElement")||e.is("rootElement")))}(e);if(!s)return;const o=this.editor.editing.view.domConverter.mapViewToDom(s),i=new l.Z(this.editor.editing.view.document),r=this.editor.data.toModel(i.domToView(o)).getChild(0),n=this.editor.editing.mapper.toModelElement(s);if(!n)return;const a=Array.from(r.getChildren()),d=Array.from(n.getChildren()),h=a[a.length-1],g=d[d.length-1],f=h&&h.is("element","softBreak"),m=g&&!g.is("element","softBreak");f&&m&&a.pop();const k=this.editor.model.schema;if(!u(a,k)||!u(d,k))return;const b=a.map((e=>e.is("$text")?e.data:"@")).join("").replace(/\u00A0/g," "),_=d.map((e=>e.is("$text")?e.data:"@")).join("").replace(/\u00A0/g," ");if(_===b)return;const w=(0,c.Z)(_,b),{firstChangeAt:v,insertions:y,deletions:Z}=p(w);let P=null;t&&(P=this.editing.mapper.toModelRange(t.getFirstRange()));const x=b.substr(v,y),T=this.editor.model.createRange(this.editor.model.createPositionAt(n,v),this.editor.model.createPositionAt(n,v+Z));this.editor.execute("input",{text:x,range:T,resultRange:P})}_handleTextMutation(e,t){if("text"!=e.type)return;const s=e.newText.replace(/\u00A0/g," "),o=e.oldText.replace(/\u00A0/g," ");if(o===s)return;const i=(0,c.Z)(o,s),{firstChangeAt:r,insertions:n,deletions:a}=p(i);let l=null;t&&(l=this.editing.mapper.toModelRange(t.getFirstRange()));const d=this.editing.view.createPositionAt(e.node,r),h=this.editing.mapper.toModelPosition(d),u=this.editor.model.createRange(h,h.getShiftedBy(a)),g=s.substr(r,n);this.editor.execute("input",{text:g,range:u,resultRange:l})}_handleTextNodeInsertion(e){if("children"!=e.type)return;const t=(0,d.xG)(e),s=this.editing.view.createPositionAt(e.node,t.index),o=this.editing.mapper.toModelPosition(s),i=t.values[0].data;this.editor.execute("input",{text:i.replace(/\u00A0/g," "),range:this.editor.model.createRange(o)})}}function u(e,t){return e.every((e=>t.isInline(e)))}function p(e){let t=null,s=null;for(let o=0;o<e.length;o++){"equal"!=e[o]&&(t=null===t?o:t,s=o)}let o=0,i=0;for(let r=t;r<=s;r++)"insert"!=e[r]&&o++,"delete"!=e[r]&&i++;return{insertions:i,deletions:o,firstChangeAt:t}}class g extends o.Z{static get pluginName(){return"Input"}init(){const e=this.editor,t=new n(e,e.config.get("typing.undoStep")||20);e.commands.add("input",t),(0,a.Z)(e),function(e){e.editing.view.document.on("mutations",((t,s,o)=>{new h(e).handle(s,o)}))}(e)}}var f=s("./packages/ckeditor5-typing/src/delete.js");class m extends o.Z{static get requires(){return[g,f.Z]}static get pluginName(){return"Typing"}}var k=s("./packages/ckeditor5-utils/src/mix.ts"),b=s("./packages/ckeditor5-utils/src/observablemixin.ts");function _(e,t){let s=e.start;return{text:Array.from(e.getItems()).reduce(((e,o)=>o.is("$text")||o.is("$textProxy")?e+o.data:(s=t.createPositionAfter(o),"")),""),range:t.createRange(s,e.end)}}class w{constructor(e,t){this.model=e,this.testCallback=t,this.hasMatch=!1,this.set("isEnabled",!0),this.on("change:isEnabled",(()=>{this.isEnabled?this._startListening():(this.stopListening(e.document.selection),this.stopListening(e.document))})),this._startListening()}_startListening(){const e=this.model.document;this.listenTo(e.selection,"change:range",((t,{directChange:s})=>{s&&(e.selection.isCollapsed?this._evaluateTextBeforeSelection("selection"):this.hasMatch&&(this.fire("unmatched"),this.hasMatch=!1))})),this.listenTo(e,"change:data",((e,t)=>{!t.isUndo&&t.isLocal&&this._evaluateTextBeforeSelection("data",{batch:t})}))}_evaluateTextBeforeSelection(e,t={}){const s=this.model,o=s.document.selection,i=s.createRange(s.createPositionAt(o.focus.parent,0),o.focus),{text:r,range:n}=_(i,s),a=this.testCallback(r);if(!a&&this.hasMatch&&this.fire("unmatched"),this.hasMatch=!!a,a){const s=Object.assign(t,{text:r,range:n});"object"==typeof a&&Object.assign(s,a),this.fire(`matched:${e}`,s)}}}(0,k.Z)(w,b.Z);var v=s("./packages/ckeditor5-utils/src/keyboard.ts");class y extends o.Z{static get pluginName(){return"TwoStepCaretMovement"}constructor(e){super(e),this.attributes=new Set,this._overrideUid=null}init(){const e=this.editor,t=e.model,s=e.editing.view,o=e.locale,i=t.document.selection;this.listenTo(s.document,"arrowKey",((e,t)=>{if(!i.isCollapsed)return;if(t.shiftKey||t.altKey||t.ctrlKey)return;const s=t.keyCode==v.Do.arrowright,r=t.keyCode==v.Do.arrowleft;if(!s&&!r)return;const n=o.contentLanguageDirection;let a=!1;a="ltr"===n&&s||"rtl"===n&&r?this._handleForwardMovement(t):this._handleBackwardMovement(t),!0===a&&e.stop()}),{context:"$text",priority:"highest"}),this._isNextGravityRestorationSkipped=!1,this.listenTo(i,"change:range",((e,t)=>{this._isNextGravityRestorationSkipped?this._isNextGravityRestorationSkipped=!1:this._isGravityOverridden&&(!t.directChange&&T(i.getFirstPosition(),this.attributes)||this._restoreGravity())}))}registerAttribute(e){this.attributes.add(e)}_handleForwardMovement(e){const t=this.attributes,s=this.editor.model.document.selection,o=s.getFirstPosition();return!this._isGravityOverridden&&((!o.isAtStart||!Z(s,t))&&(T(o,t)?(x(e),this._overrideGravity(),!0):void 0))}_handleBackwardMovement(e){const t=this.attributes,s=this.editor.model,o=s.document.selection,i=o.getFirstPosition();return this._isGravityOverridden?(x(e),this._restoreGravity(),P(s,t,i),!0):i.isAtStart?!!Z(o,t)&&(x(e),P(s,t,i),!0):function(e,t){return T(e.getShiftedBy(-1),t)}(i,t)?i.isAtEnd&&!Z(o,t)&&T(i,t)?(x(e),P(s,t,i),!0):(this._isNextGravityRestorationSkipped=!0,this._overrideGravity(),!1):void 0}get _isGravityOverridden(){return!!this._overrideUid}_overrideGravity(){this._overrideUid=this.editor.model.change((e=>e.overrideSelectionGravity()))}_restoreGravity(){this.editor.model.change((e=>{e.restoreSelectionGravity(this._overrideUid),this._overrideUid=null}))}}function Z(e,t){for(const s of t)if(e.hasAttribute(s))return!0;return!1}function P(e,t,s){const o=s.nodeBefore;e.change((e=>{o?e.setSelectionAttribute(o.getAttributes()):e.removeSelectionAttribute(t)}))}function x(e){e.preventDefault()}function T(e,t){const{nodeBefore:s,nodeAfter:o}=e;for(const e of t){const t=s?s.getAttribute(e):void 0;if((o?o.getAttribute(e):void 0)!==t)return!0}return!1}var A=s("./node_modules/lodash-es/toString.js"),C=/[\\^$.*+?()[\]{}|]/g,E=RegExp(C.source);const S=function(e){return(e=(0,A.Z)(e))&&E.test(e)?e.replace(C,"\\$&"):e},j={copyright:{from:"(c)",to:"©"},registeredTrademark:{from:"(r)",to:"®"},trademark:{from:"(tm)",to:"™"},oneHalf:{from:/(^|[^/a-z0-9])(1\/2)([^/a-z0-9])$/i,to:[null,"½",null]},oneThird:{from:/(^|[^/a-z0-9])(1\/3)([^/a-z0-9])$/i,to:[null,"⅓",null]},twoThirds:{from:/(^|[^/a-z0-9])(2\/3)([^/a-z0-9])$/i,to:[null,"⅔",null]},oneForth:{from:/(^|[^/a-z0-9])(1\/4)([^/a-z0-9])$/i,to:[null,"¼",null]},threeQuarters:{from:/(^|[^/a-z0-9])(3\/4)([^/a-z0-9])$/i,to:[null,"¾",null]},lessThanOrEqual:{from:"<=",to:"≤"},greaterThanOrEqual:{from:">=",to:"≥"},notEqual:{from:"!=",to:"≠"},arrowLeft:{from:"<-",to:"←"},arrowRight:{from:"->",to:"→"},horizontalEllipsis:{from:"...",to:"…"},enDash:{from:/(^| )(--)( )$/,to:[null,"–",null]},emDash:{from:/(^| )(---)( )$/,to:[null,"—",null]},quotesPrimary:{from:D('"'),to:[null,"“",null,"”"]},quotesSecondary:{from:D("'"),to:[null,"‘",null,"’"]},quotesPrimaryEnGb:{from:D("'"),to:[null,"‘",null,"’"]},quotesSecondaryEnGb:{from:D('"'),to:[null,"“",null,"”"]},quotesPrimaryPl:{from:D('"'),to:[null,"„",null,"”"]},quotesSecondaryPl:{from:D("'"),to:[null,"‚",null,"’"]}},O={symbols:["copyright","registeredTrademark","trademark"],mathematical:["oneHalf","oneThird","twoThirds","oneForth","threeQuarters","lessThanOrEqual","greaterThanOrEqual","notEqual","arrowLeft","arrowRight"],typography:["horizontalEllipsis","enDash","emDash"],quotes:["quotesPrimary","quotesSecondary"]},R=["symbols","mathematical","typography","quotes"];class M extends o.Z{static get requires(){return["Delete","Input"]}static get pluginName(){return"TextTransformation"}constructor(e){super(e),e.config.define("typing",{transformations:{include:R}})}init(){const e=this.editor.model.document.selection;e.on("change:range",(()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")})),this._enableTransformationWatchers()}_enableTransformationWatchers(){const e=this.editor,t=e.model,s=e.plugins.get("Delete"),o=function(e){const t=e.extra||[],s=e.remove||[],o=e=>!s.includes(e);return function(e){const t=new Set;for(const s of e)if(O[s])for(const e of O[s])t.add(e);else t.add(s);return Array.from(t)}(e.include.concat(t).filter(o)).filter(o).map((e=>j[e]||e)).filter((e=>"object"==typeof e)).map((e=>({from:N(e.from),to:V(e.to)})))}(e.config.get("typing.transformations")),i=new w(e.model,(e=>{for(const t of o){if(t.from.test(e))return{normalizedTransformation:t}}}));i.on("matched:data",((e,o)=>{if(!o.batch.isTyping)return;const{from:i,to:r}=o.normalizedTransformation,n=i.exec(o.text),a=r(n.slice(1)),c=o.range;let l=n.index;t.enqueueChange((e=>{for(let s=1;s<n.length;s++){const o=n[s],i=a[s-1];if(null==i){l+=o.length;continue}const r=c.start.getShiftedBy(l),d=t.createRange(r,r.getShiftedBy(o.length)),h=I(r);t.insertContent(e.createText(i,h),d),l+=i.length}t.enqueueChange((()=>{s.requestUndoOnBackspace()}))}))})),i.bind("isEnabled").to(this)}}function N(e){return"string"==typeof e?new RegExp(`(${S(e)})$`):e}function V(e){return"string"==typeof e?()=>[e]:e instanceof Array?()=>e:e}function I(e){return(e.textNode?e.textNode:e.nodeAfter).getAttributes()}function D(e){return new RegExp(`(^|\\s)(${e})([^${e}]*)(${e})$`)}function z(e,t,s,o){return o.createRange(B(e,t,s,!0,o),B(e,t,s,!1,o))}function B(e,t,s,o,i){let r=e.textNode||(o?e.nodeBefore:e.nodeAfter),n=null;for(;r&&r.getAttribute(t)==s;)n=r,r=o?r.previousSibling:r.nextSibling;return n?i.createPositionAt(n,o?"before":"after"):e}function F(e,t,s,o){const i=e.editing.view,r=new Set;i.document.registerPostFixer((i=>{const n=e.model.document.selection;let a=!1;if(n.hasAttribute(t)){const c=z(n.getFirstPosition(),t,n.getAttribute(t),e.model),l=e.editing.mapper.toViewRange(c);for(const e of l.getItems())e.is("element",s)&&!e.hasClass(o)&&(i.addClass(o,e),r.add(e),a=!0)}return a})),e.conversion.for("editingDowncast").add((e=>{function t(){i.change((e=>{for(const t of r.values())e.removeClass(o,t),r.delete(t)}))}e.on("insert",t,{priority:"highest"}),e.on("remove",t,{priority:"highest"}),e.on("attribute",t,{priority:"highest"}),e.on("selection",t,{priority:"highest"})}))}},"./src/ui.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{BalloonPanelView:()=>ue.Z,BalloonToolbar:()=>Se,BlockToolbar:()=>De,BodyCollection:()=>d,BoxedEditorUIView:()=>D,ButtonView:()=>h.Z,ColorGridView:()=>P,ColorTileView:()=>k,ContextualBalloon:()=>pe.Z,DropdownButtonView:()=>x.Z,EditorUIView:()=>R,FocusCycler:()=>$.Z,FormHeaderView:()=>W,IconView:()=>q.Z,IframeView:()=>Q,InlineEditableUIView:()=>B,InputNumberView:()=>J,InputTextView:()=>G,InputView:()=>K,LabelView:()=>I,LabeledFieldView:()=>ee,ListItemView:()=>ie.Z,ListView:()=>re.Z,Model:()=>he,Notification:()=>ae,SplitButtonView:()=>E,StickyPanelView:()=>_e,SwitchButtonView:()=>u.Z,Template:()=>a.ZP,ToolbarSeparatorView:()=>ye.Z,ToolbarView:()=>ve.Z,TooltipManager:()=>we.Z,View:()=>m.Z,ViewCollection:()=>c.Z,addKeyboardHandlingForGrid:()=>n,addListToDropdown:()=>S.Pm,addToolbarToDropdown:()=>S.up,clickOutsideHandler:()=>o.Z,createDropdown:()=>S.t9,createLabeledDropdown:()=>oe,createLabeledInputNumber:()=>se,createLabeledInputText:()=>te,focusChildOnDropdownOpen:()=>S.Mh,getLocalizedColorOptions:()=>p,injectCssTransitionDisabler:()=>i,normalizeColorOptions:()=>g,normalizeSingleColorDefinition:()=>f,normalizeToolbarConfig:()=>Ze.Z,submitHandler:()=>r});var o=s("./packages/ckeditor5-ui/src/bindings/clickoutsidehandler.js");function i(e){e.set("_isCssTransitionsDisabled",!1),e.disableCssTransitions=()=>{e._isCssTransitionsDisabled=!0},e.enableCssTransitions=()=>{e._isCssTransitionsDisabled=!1},e.extendTemplate({attributes:{class:[e.bindTemplate.if("_isCssTransitionsDisabled","ck-transitions-disabled")]}})}function r({view:e}){e.listenTo(e.element,"submit",((t,s)=>{s.preventDefault(),e.fire("submit")}),{useCapture:!0})}function n({keystrokeHandler:e,focusTracker:t,gridItems:s,numberOfColumns:o}){const i="number"==typeof o?()=>o:o;function r(e){return o=>{const i=s.find((e=>e.element===t.focusedElement)),r=s.getIndex(i),n=e(r,s);s.get(n).focus(),o.stopPropagation(),o.preventDefault()}}e.set("arrowright",r(((e,t)=>e===t.length-1?0:e+1))),e.set("arrowleft",r(((e,t)=>0===e?t.length-1:e-1))),e.set("arrowup",r(((e,t)=>{let s=e-i();return s<0&&(s=e+i()*Math.floor(t.length/i()),s>t.length-1&&(s-=i())),s}))),e.set("arrowdown",r(((e,t)=>{let s=e+i();return s>t.length-1&&(s=e%i()),s})))}var a=s("./packages/ckeditor5-ui/src/template.js"),c=s("./packages/ckeditor5-ui/src/viewcollection.js"),l=s("./packages/ckeditor5-utils/src/dom/createelement.ts");class d extends c.Z{constructor(e,t=[]){super(t),this.locale=e}attachToDom(){this._bodyCollectionContainer=new a.ZP({tag:"div",attributes:{class:["ck","ck-reset_all","ck-body","ck-rounded-corners"],dir:this.locale.uiLanguageDirection},children:this}).render();let e=document.querySelector(".ck-body-wrapper");e||(e=(0,l.Z)(document,"div",{class:"ck-body-wrapper"}),document.body.appendChild(e)),e.appendChild(this._bodyCollectionContainer)}detachFromDom(){super.destroy(),this._bodyCollectionContainer&&this._bodyCollectionContainer.remove();const e=document.querySelector(".ck-body-wrapper");e&&0==e.childElementCount&&e.remove()}}var h=s("./packages/ckeditor5-ui/src/button/buttonview.js"),u=s("./packages/ckeditor5-ui/src/button/switchbuttonview.js");function p(e,t){const s=e.t,o={Black:s("Black"),"Dim grey":s("Dim grey"),Grey:s("Grey"),"Light grey":s("Light grey"),White:s("White"),Red:s("Red"),Orange:s("Orange"),Yellow:s("Yellow"),"Light green":s("Light green"),Green:s("Green"),Aquamarine:s("Aquamarine"),Turquoise:s("Turquoise"),"Light blue":s("Light blue"),Blue:s("Blue"),Purple:s("Purple")};return t.map((e=>{const t=o[e.label];return t&&t!=e.label&&(e.label=t),e}))}function g(e){return e.map(f).filter((e=>!!e))}function f(e){return"string"==typeof e?{model:e,label:e,hasBorder:!1,view:{name:"span",styles:{color:e}}}:{model:e.color,label:e.label||e.color,hasBorder:void 0!==e.hasBorder&&e.hasBorder,view:{name:"span",styles:{color:`${e.color}`}}}}var m=s("./packages/ckeditor5-ui/src/view.js");class k extends h.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("color"),this.set("hasBorder"),this.icon='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path class="ck-icon__fill" d="M16.935 5.328a2 2 0 0 1 0 2.829l-7.778 7.778a2 2 0 0 1-2.829 0L3.5 13.107a1.999 1.999 0 1 1 2.828-2.829l.707.707a1 1 0 0 0 1.414 0l5.658-5.657a2 2 0 0 1 2.828 0z"/><path d="M14.814 6.035 8.448 12.4a1 1 0 0 1-1.414 0l-1.413-1.415A1 1 0 1 0 4.207 12.4l2.829 2.829a1 1 0 0 0 1.414 0l7.778-7.778a1 1 0 1 0-1.414-1.415z"/></svg>',this.extendTemplate({attributes:{style:{backgroundColor:t.to("color")},class:["ck","ck-color-grid__tile",t.if("hasBorder","ck-color-table__color-tile_bordered")]}})}render(){super.render(),this.iconView.fillColor="hsl(0, 0%, 100%)"}}var b=s("./packages/ckeditor5-utils/src/focustracker.ts"),_=s("./packages/ckeditor5-utils/src/keystrokehandler.ts"),w=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),v=s.n(w),y=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/colorgrid/colorgrid.css"),Z={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(y.Z,Z);y.Z.locals;class P extends m.Z{constructor(e,t){super(e);const s=t&&t.colorDefinitions||[],o={};this.columns=t&&t.columns?t.columns:5,o.gridTemplateColumns=`repeat( ${this.columns}, 1fr)`,this.set("selectedColor"),this.items=this.createCollection(),this.focusTracker=new b.Z,this.keystrokes=new _.Z,this.items.on("add",((e,t)=>{t.isOn=t.color===this.selectedColor})),s.forEach((e=>{const t=new k;t.set({color:e.color,label:e.label,tooltip:!0,hasBorder:e.options.hasBorder}),t.on("execute",(()=>{this.fire("execute",{value:e.color,hasBorder:e.options.hasBorder,label:e.label})})),this.items.add(t)})),this.setTemplate({tag:"div",children:this.items,attributes:{class:["ck","ck-color-grid"],style:o}}),this.on("change:selectedColor",((e,t,s)=>{for(const e of this.items)e.isOn=e.color===s}))}focus(){this.items.length&&this.items.first.focus()}focusLast(){this.items.length&&this.items.last.focus()}render(){super.render();for(const e of this.items)this.focusTracker.add(e.element);this.items.on("add",((e,t)=>{this.focusTracker.add(t.element)})),this.items.on("remove",((e,t)=>{this.focusTracker.remove(t.element)})),this.keystrokes.listenTo(this.element),n({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.items,numberOfColumns:this.columns})}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}}var x=s("./packages/ckeditor5-ui/src/dropdown/button/dropdownbuttonview.js"),T=s("./packages/ckeditor5-ui/theme/icons/dropdown-arrow.svg"),A=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/dropdown/splitbutton.css"),C={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(A.Z,C);A.Z.locals;class E extends m.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("class"),this.set("icon"),this.set("isEnabled",!0),this.set("isOn",!1),this.set("isToggleable",!1),this.set("isVisible",!0),this.set("keystroke"),this.set("label"),this.set("tabindex",-1),this.set("tooltip"),this.set("tooltipPosition","s"),this.set("type","button"),this.set("withText",!1),this.children=this.createCollection(),this.actionView=this._createActionView(),this.arrowView=this._createArrowView(),this.keystrokes=new _.Z,this.focusTracker=new b.Z,this.setTemplate({tag:"div",attributes:{class:["ck","ck-splitbutton",t.to("class"),t.if("isVisible","ck-hidden",(e=>!e)),this.arrowView.bindTemplate.if("isOn","ck-splitbutton_open")]},children:this.children})}render(){super.render(),this.children.add(this.actionView),this.children.add(this.arrowView),this.focusTracker.add(this.actionView.element),this.focusTracker.add(this.arrowView.element),this.keystrokes.listenTo(this.element),this.keystrokes.set("arrowright",((e,t)=>{this.focusTracker.focusedElement===this.actionView.element&&(this.arrowView.focus(),t())})),this.keystrokes.set("arrowleft",((e,t)=>{this.focusTracker.focusedElement===this.arrowView.element&&(this.actionView.focus(),t())}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this.actionView.focus()}_createActionView(){const e=new h.Z;return e.bind("icon","isEnabled","isOn","isToggleable","keystroke","label","tabindex","tooltip","tooltipPosition","type","withText").to(this),e.extendTemplate({attributes:{class:"ck-splitbutton__action"}}),e.delegate("execute").to(this),e}_createArrowView(){const e=new h.Z,t=e.bindTemplate;return e.icon=T.Z,e.extendTemplate({attributes:{class:["ck-splitbutton__arrow"],"data-cke-tooltip-disabled":t.to("isOn"),"aria-haspopup":!0,"aria-expanded":t.to("isOn",(e=>String(e)))}}),e.bind("isEnabled").to(this),e.bind("label").to(this),e.bind("tooltip").to(this),e.delegate("execute").to(this,"open"),e}}var S=s("./packages/ckeditor5-ui/src/dropdown/utils.js"),j=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/editorui/editorui.css"),O={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(j.Z,O);j.Z.locals;class R extends m.Z{constructor(e){super(e),this.body=new d(e)}render(){super.render(),this.body.attachToDom()}destroy(){return this.body.detachFromDom(),super.destroy()}}var M=s("./packages/ckeditor5-utils/src/uid.ts"),N=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/label/label.css"),V={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(N.Z,V);N.Z.locals;class I extends m.Z{constructor(e){super(e),this.set("text"),this.set("for"),this.id=`ck-editor__label_${(0,M.Z)()}`;const t=this.bindTemplate;this.setTemplate({tag:"label",attributes:{class:["ck","ck-label"],id:this.id,for:t.to("for")},children:[{text:t.to("text")}]})}}class D extends R{constructor(e){super(e),this.top=this.createCollection(),this.main=this.createCollection(),this._voiceLabelView=this._createVoiceLabel(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-reset","ck-editor","ck-rounded-corners"],role:"application",dir:e.uiLanguageDirection,lang:e.uiLanguage,"aria-labelledby":this._voiceLabelView.id},children:[this._voiceLabelView,{tag:"div",attributes:{class:["ck","ck-editor__top","ck-reset_all"],role:"presentation"},children:this.top},{tag:"div",attributes:{class:["ck","ck-editor__main"],role:"presentation"},children:this.main}]})}_createVoiceLabel(){const e=this.t,t=new I;return t.text=e("Rich Text Editor"),t.extendTemplate({attributes:{class:"ck-voice-label"}}),t}}class z extends m.Z{constructor(e,t,s){super(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-content","ck-editor__editable","ck-rounded-corners"],lang:e.contentLanguage,dir:e.contentLanguageDirection}}),this.name=null,this.set("isFocused",!1),this._editableElement=s,this._hasExternalElement=!!this._editableElement,this._editingView=t}render(){super.render(),this._hasExternalElement?this.template.apply(this.element=this._editableElement):this._editableElement=this.element,this.on("change:isFocused",(()=>this._updateIsFocusedClasses())),this._updateIsFocusedClasses()}destroy(){this._hasExternalElement&&this.template.revert(this._editableElement),super.destroy()}_updateIsFocusedClasses(){const e=this._editingView;function t(t){e.change((s=>{const o=e.document.getRoot(t.name);s.addClass(t.isFocused?"ck-focused":"ck-blurred",o),s.removeClass(t.isFocused?"ck-blurred":"ck-focused",o)}))}e.isRenderingInProgress?function s(o){e.once("change:isRenderingInProgress",((e,i,r)=>{r?s(o):t(o)}))}(this):t(this)}}class B extends z{constructor(e,t,s,o={}){super(e,t,s);const i=e.t;this.extendTemplate({attributes:{role:"textbox",class:"ck-editor__editable_inline"}}),this._generateLabel=o.label||(()=>i("Editor editing area: %0",this.name))}render(){super.render();const e=this._editingView;e.change((t=>{const s=e.document.getRoot(this.name);t.setAttribute("aria-label",this._generateLabel(this),s)}))}}var F=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/formheader/formheader.css"),L={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(F.Z,L);F.Z.locals;class W extends m.Z{constructor(e,t={}){super(e);const s=this.bindTemplate;this.set("label",t.label||""),this.set("class",t.class||null),this.children=this.createCollection(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__header",s.to("class")]},children:this.children});const o=new m.Z(e);o.setTemplate({tag:"span",attributes:{class:["ck","ck-form__header__label"]},children:[{text:s.to("label")}]}),this.children.add(o)}}var $=s("./packages/ckeditor5-ui/src/focuscycler.js"),q=s("./packages/ckeditor5-ui/src/icon/iconview.js"),H=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/input/input.css"),U={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(H.Z,U);H.Z.locals;class K extends m.Z{constructor(e){super(e),this.set("value"),this.set("id"),this.set("placeholder"),this.set("isReadOnly",!1),this.set("hasError",!1),this.set("ariaDescribedById"),this.focusTracker=new b.Z,this.bind("isFocused").to(this.focusTracker),this.set("isEmpty",!0),this.set("inputMode","text");const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck","ck-input",t.if("isFocused","ck-input_focused"),t.if("isEmpty","ck-input-text_empty"),t.if("hasError","ck-error")],id:t.to("id"),placeholder:t.to("placeholder"),readonly:t.to("isReadOnly"),inputmode:t.to("inputMode"),"aria-invalid":t.if("hasError",!0),"aria-describedby":t.to("ariaDescribedById")},on:{input:t.to(((...e)=>{this.fire("input",...e),this._updateIsEmpty()})),change:t.to(this._updateIsEmpty.bind(this))}})}render(){super.render(),this.focusTracker.add(this.element),this._setDomElementValue(this.value),this._updateIsEmpty(),this.on("change:value",((e,t,s)=>{this._setDomElementValue(s),this._updateIsEmpty()}))}destroy(){super.destroy(),this.focusTracker.destroy()}select(){this.element.select()}focus(){this.element.focus()}_updateIsEmpty(){this.isEmpty=!this.element.value}_setDomElementValue(e){this.element.value=e||0===e?e:""}}class G extends K{constructor(e){super(e),this.extendTemplate({attributes:{type:"text",class:["ck-input-text"]}})}}class J extends K{constructor(e,{min:t,max:s,step:o}={}){super(e);const i=this.bindTemplate;this.set("min",t),this.set("max",s),this.set("step",o),this.extendTemplate({attributes:{type:"number",class:["ck-input-number"],min:i.to("min"),max:i.to("max"),step:i.to("step")}})}}class Q extends m.Z{constructor(e){super(e);const t=this.bindTemplate;this.setTemplate({tag:"iframe",attributes:{class:["ck","ck-reset_all"],sandbox:"allow-same-origin allow-scripts"},on:{load:t.to("loaded")}})}render(){return new Promise((e=>{this.on("loaded",e),super.render()}))}}var X=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/labeledfield/labeledfieldview.css"),Y={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(X.Z,Y);X.Z.locals;class ee extends m.Z{constructor(e,t){super(e);const s=`ck-labeled-field-view-${(0,M.Z)()}`,o=`ck-labeled-field-view-status-${(0,M.Z)()}`;this.fieldView=t(this,s,o),this.set("label"),this.set("isEnabled",!0),this.set("isEmpty",!0),this.set("isFocused",!1),this.set("errorText",null),this.set("infoText",null),this.set("class"),this.set("placeholder"),this.labelView=this._createLabelView(s),this.statusView=this._createStatusView(o),this.bind("_statusText").to(this,"errorText",this,"infoText",((e,t)=>e||t));const i=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view",i.to("class"),i.if("isEnabled","ck-disabled",(e=>!e)),i.if("isEmpty","ck-labeled-field-view_empty"),i.if("isFocused","ck-labeled-field-view_focused"),i.if("placeholder","ck-labeled-field-view_placeholder"),i.if("errorText","ck-error")]},children:[{tag:"div",attributes:{class:["ck","ck-labeled-field-view__input-wrapper"]},children:[this.fieldView,this.labelView]},this.statusView]})}_createLabelView(e){const t=new I(this.locale);return t.for=e,t.bind("text").to(this,"label"),t}_createStatusView(e){const t=new m.Z(this.locale),s=this.bindTemplate;return t.setTemplate({tag:"div",attributes:{class:["ck","ck-labeled-field-view__status",s.if("errorText","ck-labeled-field-view__status_error"),s.if("_statusText","ck-hidden",(e=>!e))],id:e,role:s.if("errorText","alert")},children:[{text:s.to("_statusText")}]}),t}focus(){this.fieldView.focus()}}function te(e,t,s){const o=new G(e.locale);return o.set({id:t,ariaDescribedById:s}),o.bind("isReadOnly").to(e,"isEnabled",(e=>!e)),o.bind("hasError").to(e,"errorText",(e=>!!e)),o.on("input",(()=>{e.errorText=null})),e.bind("isEmpty","isFocused","placeholder").to(o),o}function se(e,t,s){const o=new J(e.locale);return o.set({id:t,ariaDescribedById:s,inputMode:"numeric"}),o.bind("isReadOnly").to(e,"isEnabled",(e=>!e)),o.bind("hasError").to(e,"errorText",(e=>!!e)),o.on("input",(()=>{e.errorText=null})),e.bind("isEmpty","isFocused","placeholder").to(o),o}function oe(e,t,s){const o=(0,S.t9)(e.locale);return o.set({id:t,ariaDescribedById:s}),o.bind("isEnabled").to(e),o}var ie=s("./packages/ckeditor5-ui/src/list/listitemview.js"),re=s("./packages/ckeditor5-ui/src/list/listview.js"),ne=s("./packages/ckeditor5-core/src/contextplugin.js");class ae extends ne.Z{static get pluginName(){return"Notification"}init(){this.on("show:warning",((e,t)=>{window.alert(t.message)}),{priority:"lowest"})}showSuccess(e,t={}){this._showNotification({message:e,type:"success",namespace:t.namespace,title:t.title})}showInfo(e,t={}){this._showNotification({message:e,type:"info",namespace:t.namespace,title:t.title})}showWarning(e,t={}){this._showNotification({message:e,type:"warning",namespace:t.namespace,title:t.title})}_showNotification(e){const t=`show:${e.type}`+(e.namespace?`:${e.namespace}`:"");this.fire(t,{message:e.message,type:e.type,title:e.title||""})}}var ce=s("./packages/ckeditor5-utils/src/mix.ts"),le=s("./packages/ckeditor5-utils/src/observablemixin.ts"),de=s("./node_modules/lodash-es/assignIn.js");class he{constructor(e,t){t&&(0,de.Z)(this,t),e&&this.set(e)}}(0,ce.Z)(he,le.Z);var ue=s("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),pe=s("./packages/ckeditor5-ui/src/panel/balloon/contextualballoon.js"),ge=s("./packages/ckeditor5-utils/src/dom/global.ts"),fe=s("./packages/ckeditor5-utils/src/dom/tounit.ts"),me=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/panel/stickypanel.css"),ke={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(me.Z,ke);me.Z.locals;const be=(0,fe.Z)("px");class _e extends m.Z{constructor(e){super(e);const t=this.bindTemplate;this.set("isActive",!1),this.set("isSticky",!1),this.set("limiterElement",null),this.set("limiterBottomOffset",50),this.set("viewportTopOffset",0),this.set("_marginLeft",null),this.set("_isStickyToTheLimiter",!1),this.set("_hasViewportTopOffset",!1),this.content=this.createCollection(),this._contentPanelPlaceholder=new a.ZP({tag:"div",attributes:{class:["ck","ck-sticky-panel__placeholder"],style:{display:t.to("isSticky",(e=>e?"block":"none")),height:t.to("isSticky",(e=>e?be(this._panelRect.height):null))}}}).render(),this._contentPanel=new a.ZP({tag:"div",attributes:{class:["ck","ck-sticky-panel__content",t.if("isSticky","ck-sticky-panel__content_sticky"),t.if("_isStickyToTheLimiter","ck-sticky-panel__content_sticky_bottom-limit")],style:{width:t.to("isSticky",(e=>e?be(this._contentPanelPlaceholder.getBoundingClientRect().width):null)),top:t.to("_hasViewportTopOffset",(e=>e?be(this.viewportTopOffset):null)),bottom:t.to("_isStickyToTheLimiter",(e=>e?be(this.limiterBottomOffset):null)),marginLeft:t.to("_marginLeft")}},children:this.content}).render(),this.setTemplate({tag:"div",attributes:{class:["ck","ck-sticky-panel"]},children:[this._contentPanelPlaceholder,this._contentPanel]})}render(){super.render(),this._checkIfShouldBeSticky(),this.listenTo(ge.Z.window,"scroll",(()=>{this._checkIfShouldBeSticky()})),this.listenTo(this,"change:isActive",(()=>{this._checkIfShouldBeSticky()}))}_checkIfShouldBeSticky(){const e=this._panelRect=this._contentPanel.getBoundingClientRect();let t;this.limiterElement?(t=this._limiterRect=this.limiterElement.getBoundingClientRect(),this.isSticky=this.isActive&&t.top<this.viewportTopOffset&&this._panelRect.height+this.limiterBottomOffset<t.height):this.isSticky=!1,this.isSticky?(this._isStickyToTheLimiter=t.bottom<e.height+this.limiterBottomOffset+this.viewportTopOffset,this._hasViewportTopOffset=!this._isStickyToTheLimiter&&!!this.viewportTopOffset,this._marginLeft=this._isStickyToTheLimiter?null:be(-ge.Z.window.scrollX)):(this._isStickyToTheLimiter=!1,this._hasViewportTopOffset=!1,this._marginLeft=null)}}var we=s("./packages/ckeditor5-ui/src/tooltipmanager.js"),ve=s("./packages/ckeditor5-ui/src/toolbar/toolbarview.js"),ye=s("./packages/ckeditor5-ui/src/toolbar/toolbarseparatorview.js"),Ze=s("./packages/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js"),Pe=s("./packages/ckeditor5-core/src/plugin.js"),xe=s("./packages/ckeditor5-utils/src/dom/rect.ts"),Te=s("./node_modules/lodash-es/debounce.js"),Ae=s("./packages/ckeditor5-utils/src/dom/resizeobserver.ts"),Ce=s("./packages/ckeditor5-utils/src/index.ts");const Ee=(0,fe.Z)("px");class Se extends Pe.Z{static get pluginName(){return"BalloonToolbar"}static get requires(){return[pe.Z]}constructor(e){super(e),this._balloonConfig=(0,Ze.Z)(e.config.get("balloonToolbar")),this.toolbarView=this._createToolbarView(),this.focusTracker=new b.Z,e.ui.once("ready",(()=>{this.focusTracker.add(e.ui.getEditableElement()),this.focusTracker.add(this.toolbarView.element)})),e.ui.addToolbar(this.toolbarView,{beforeFocus:()=>this.show(!0),afterBlur:()=>this.hide(),isContextual:!0}),this._resizeObserver=null,this._balloon=e.plugins.get(pe.Z),this._fireSelectionChangeDebounced=(0,Te.Z)((()=>this.fire("_selectionChangeDebounced")),200),this.decorate("show")}init(){const e=this.editor,t=e.model.document.selection;this.listenTo(this.focusTracker,"change:isFocused",((e,t,s)=>{const o=this._balloon.visibleView===this.toolbarView;!s&&o?this.hide():s&&this.show()})),this.listenTo(t,"change:range",((e,s)=>{(s.directChange||t.isCollapsed)&&this.hide(),this._fireSelectionChangeDebounced()})),this.listenTo(this,"_selectionChangeDebounced",(()=>{this.editor.editing.view.document.isFocused&&this.show()})),this._balloonConfig.shouldNotGroupWhenFull||this.listenTo(e,"ready",(()=>{const t=e.ui.view.editable.element;this._resizeObserver=new Ae.Z(t,(()=>{this.toolbarView.maxWidth=Ee(.9*new xe.Z(t).width)}))})),this.listenTo(this.toolbarView,"groupedItemsUpdate",(()=>{this._updatePosition()}))}afterInit(){const e=this.editor.ui.componentFactory;this.toolbarView.fillFromConfig(this._balloonConfig,e)}_createToolbarView(){const e=this.editor.locale.t,t=!this._balloonConfig.shouldNotGroupWhenFull,s=new ve.Z(this.editor.locale,{shouldGroupWhenFull:t,isFloating:!0});return s.ariaLabel=e("Editor contextual toolbar"),s.render(),s}show(e=!1){const t=this.editor,s=t.model.document.selection,o=t.model.schema;this._balloon.hasView(this.toolbarView)||s.isCollapsed&&!e||function(e,t){if(1===e.rangeCount)return!1;return[...e.getRanges()].every((e=>{const s=e.getContainedElement();return s&&t.isSelectable(s)}))}(s,o)||Array.from(this.toolbarView.items).every((e=>void 0!==e.isEnabled&&!e.isEnabled))||(this.listenTo(this.editor.ui,"update",(()=>{this._updatePosition()})),this._balloon.add({view:this.toolbarView,position:this._getBalloonPositionData(),balloonClassName:"ck-toolbar-container"}))}hide(){this._balloon.hasView(this.toolbarView)&&(this.stopListening(this.editor.ui,"update"),this._balloon.remove(this.toolbarView))}_getBalloonPositionData(){const e=this.editor.editing.view,t=e.document,s=t.selection,o=t.selection.isBackward;return{target:()=>{const t=o?s.getFirstRange():s.getLastRange(),i=xe.Z.getDomRangeRects(e.domConverter.viewRangeToDom(t));return o?i[0]:(i.length>1&&0===i[i.length-1].width&&i.pop(),i[i.length-1])},positions:this._getBalloonPositions(o)}}_updatePosition(){this._balloon.updatePosition(this._getBalloonPositionData())}destroy(){super.destroy(),this.stopListening(),this._fireSelectionChangeDebounced.cancel(),this.toolbarView.destroy(),this.focusTracker.destroy(),this._resizeObserver&&this._resizeObserver.destroy()}_getBalloonPositions(e){const t=Ce.OB.isSafari&&Ce.OB.isiOS?(0,ue.M)({heightOffset:Math.max(ue.Z.arrowHeightOffset,Math.round(20/Ce.CO.window.visualViewport.scale))}):ue.Z.defaultPositions;return e?[t.northWestArrowSouth,t.northWestArrowSouthWest,t.northWestArrowSouthEast,t.northWestArrowSouthMiddleEast,t.northWestArrowSouthMiddleWest,t.southWestArrowNorth,t.southWestArrowNorthWest,t.southWestArrowNorthEast,t.southWestArrowNorthMiddleWest,t.southWestArrowNorthMiddleEast]:[t.southEastArrowNorth,t.southEastArrowNorthEast,t.southEastArrowNorthWest,t.southEastArrowNorthMiddleEast,t.southEastArrowNorthMiddleWest,t.northEastArrowSouth,t.northEastArrowSouthEast,t.northEastArrowSouthWest,t.northEastArrowSouthMiddleEast,t.northEastArrowSouthMiddleWest]}}var je=s("./packages/ckeditor5-core/theme/icons/pilcrow.svg"),Oe=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-ui/theme/components/toolbar/blocktoolbar.css"),Re={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};v()(Oe.Z,Re);Oe.Z.locals;const Me=(0,fe.Z)("px");class Ne extends h.Z{constructor(e){super(e);const t=this.bindTemplate;this.isVisible=!1,this.isToggleable=!0,this.set("top",0),this.set("left",0),this.extendTemplate({attributes:{class:"ck-block-toolbar-button",style:{top:t.to("top",(e=>Me(e))),left:t.to("left",(e=>Me(e)))}}})}}var Ve=s("./packages/ckeditor5-utils/src/dom/position.ts");const Ie=(0,fe.Z)("px");class De extends Pe.Z{static get pluginName(){return"BlockToolbar"}constructor(e){super(e),this._blockToolbarConfig=(0,Ze.Z)(this.editor.config.get("blockToolbar")),this.toolbarView=this._createToolbarView(),this.panelView=this._createPanelView(),this.buttonView=this._createButtonView(),this._resizeObserver=null,(0,o.Z)({emitter:this.panelView,contextElements:[this.panelView.element,this.buttonView.element],activator:()=>this.panelView.isVisible,callback:()=>this._hidePanel()})}init(){const e=this.editor;this.listenTo(e.model.document.selection,"change:range",((e,t)=>{t.directChange&&this._hidePanel()})),this.listenTo(e.ui,"update",(()=>this._updateButton())),this.listenTo(e,"change:isReadOnly",(()=>this._updateButton()),{priority:"low"}),this.listenTo(e.ui.focusTracker,"change:isFocused",(()=>this._updateButton())),this.listenTo(this.buttonView,"change:isVisible",((e,t,s)=>{s?this.buttonView.listenTo(window,"resize",(()=>this._updateButton())):(this.buttonView.stopListening(window,"resize"),this._hidePanel())})),e.ui.addToolbar(this.toolbarView,{beforeFocus:()=>this._showPanel(),afterBlur:()=>this._hidePanel()})}afterInit(){const e=this.editor.ui.componentFactory,t=this._blockToolbarConfig;this.toolbarView.fillFromConfig(t,e);for(const e of this.toolbarView.items)e.on("execute",(()=>this._hidePanel(!0)),{priority:"high"});t.shouldNotGroupWhenFull||this.listenTo(this.editor,"ready",(()=>{const e=this.editor.ui.view.editable.element;this._resizeObserver=new Ae.Z(e,(()=>{this.toolbarView.maxWidth=this._getToolbarMaxWidth()}))}))}destroy(){super.destroy(),this.panelView.destroy(),this.buttonView.destroy(),this.toolbarView.destroy(),this._resizeObserver&&this._resizeObserver.destroy()}_createToolbarView(){const e=this.editor.locale.t,t=!this._blockToolbarConfig.shouldNotGroupWhenFull,s=new ve.Z(this.editor.locale,{shouldGroupWhenFull:t,isFloating:!0});return s.ariaLabel=e("Editor block content toolbar"),s.focusTracker.on("change:isFocused",((e,t,s)=>{s||this._hidePanel()})),s}_createPanelView(){const e=this.editor,t=new ue.Z(e.locale);return t.content.add(this.toolbarView),t.class="ck-toolbar-container",e.ui.view.body.add(t),e.ui.focusTracker.add(t.element),this.toolbarView.keystrokes.set("Esc",((e,t)=>{this._hidePanel(!0),t()})),t}_createButtonView(){const e=this.editor,t=e.t,s=new Ne(e.locale);return s.set({label:t("Edit block"),icon:je.Z,withText:!1}),s.bind("isOn").to(this.panelView,"isVisible"),s.bind("tooltip").to(this.panelView,"isVisible",(e=>!e)),this.listenTo(s,"execute",(()=>{this.panelView.isVisible?this._hidePanel(!0):this._showPanel()})),e.ui.view.body.add(s),e.ui.focusTracker.add(s.element),s}_updateButton(){const e=this.editor,t=e.model,s=e.editing.view;if(!e.ui.focusTracker.isFocused)return void this._hideButton();if(e.isReadOnly)return void this._hideButton();const o=Array.from(t.document.selection.getSelectedBlocks())[0];if(!o||Array.from(this.toolbarView.items).every((e=>!e.isEnabled)))return void this._hideButton();const i=s.domConverter.mapViewToDom(e.editing.mapper.toViewElement(o));this.buttonView.isVisible=!0,this._attachButtonToElement(i),this.panelView.isVisible&&this._showPanel()}_hideButton(){this.buttonView.isVisible=!1}_showPanel(){if(!this.buttonView.isVisible)return;const e=this.panelView.isVisible;this.panelView.show(),this.toolbarView.maxWidth=this._getToolbarMaxWidth(),this.panelView.pin({target:this.buttonView.element,limiter:this.editor.ui.getEditableElement()}),e||this.toolbarView.items.get(0).focus()}_hidePanel(e){this.panelView.isVisible=!1,e&&this.editor.editing.view.focus()}_attachButtonToElement(e){const t=window.getComputedStyle(e),s=new xe.Z(this.editor.ui.getEditableElement()),o=parseInt(t.paddingTop,10),i=parseInt(t.lineHeight,10)||1.2*parseInt(t.fontSize,10),r=(0,Ve.x)({element:this.buttonView.element,target:e,positions:[(e,t)=>{let r;return r="ltr"===this.editor.locale.uiLanguageDirection?s.left-t.width:s.right,{top:e.top+o+(i-t.height)/2,left:r}}]});this.buttonView.top=r.top,this.buttonView.left=r.left}_getToolbarMaxWidth(){const e=this.editor.ui.view.editable.element,t=new xe.Z(e),s=new xe.Z(this.buttonView.element),o="rtl"===this.editor.locale.uiLanguageDirection?s.left-t.right+s.width:t.left-s.left;return Ie(t.width+o)}}},"./src/undo.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Undo:()=>m,UndoEditing:()=>h,UndoUi:()=>f});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/command.js"),r=s("./packages/ckeditor5-engine/src/model/operation/transform.ts");class n extends i.Z{constructor(e){super(e),this._stack=[],this._createdBatches=new WeakSet,this.refresh(),this.listenTo(e.data,"set",((e,t)=>{t[1]={...t[1]};const s=t[1];s.batchType||(s.batchType={isUndoable:!1})}),{priority:"high"}),this.listenTo(e.data,"set",((e,t)=>{t[1].batchType.isUndoable||this.clearStack()}))}refresh(){this.isEnabled=this._stack.length>0}addBatch(e){const t=this.editor.model.document.selection,s={ranges:t.hasOwnRange?Array.from(t.getRanges()):[],isBackward:t.isBackward};this._stack.push({batch:e,selection:s}),this.refresh()}clearStack(){this._stack=[],this.refresh()}_restoreSelection(e,t,s){const o=this.editor.model,i=o.document,r=[],n=e.map((e=>e.getTransformedByOperations(s))),l=n.flat();for(const e of n){const t=e.filter((e=>e.root!=i.graveyard)).filter((e=>!c(e,l)));t.length&&(a(t),r.push(t[0]))}r.length&&o.change((e=>{e.setSelection(r,{backward:t})}))}_undo(e,t){const s=this.editor.model,o=s.document;this._createdBatches.add(t);const i=e.operations.slice().filter((e=>e.isDocumentOperation));i.reverse();for(const e of i){const i=e.baseVersion+1,n=Array.from(o.history.getOperations(i)),a=(0,r.R)([e.getReversed()],n,{useRelations:!0,document:this.editor.model.document,padWithNoOps:!1,forceWeakRemove:!0}).operationsA;for(const i of a)t.addOperation(i),s.applyOperation(i),o.history.setOperationAsUndone(e,i)}}}function a(e){e.sort(((e,t)=>e.start.isBefore(t.start)?-1:1));for(let t=1;t<e.length;t++){const s=e[t-1].getJoined(e[t],!0);s&&(t--,e.splice(t,2,s))}}function c(e,t){return t.some((t=>t!==e&&t.containsRange(e,!0)))}class l extends n{execute(e=null){const t=e?this._stack.findIndex((t=>t.batch==e)):this._stack.length-1,s=this._stack.splice(t,1)[0],o=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(o,(()=>{this._undo(s.batch,o);const e=this.editor.model.document.history.getOperations(s.batch.baseVersion);this._restoreSelection(s.selection.ranges,s.selection.isBackward,e),this.fire("revert",s.batch,o)})),this.refresh()}}class d extends n{execute(){const e=this._stack.pop(),t=this.editor.model.createBatch({isUndo:!0});this.editor.model.enqueueChange(t,(()=>{const s=e.batch.operations[e.batch.operations.length-1].baseVersion+1,o=this.editor.model.document.history.getOperations(s);this._restoreSelection(e.selection.ranges,e.selection.isBackward,o),this._undo(e.batch,t)})),this.refresh()}}class h extends o.Z{static get pluginName(){return"UndoEditing"}constructor(e){super(e),this._batchRegistry=new WeakSet}init(){const e=this.editor;this._undoCommand=new l(e),this._redoCommand=new d(e),e.commands.add("undo",this._undoCommand),e.commands.add("redo",this._redoCommand),this.listenTo(e.model,"applyOperation",((e,t)=>{const s=t[0];if(!s.isDocumentOperation)return;const o=s.batch,i=this._redoCommand._createdBatches.has(o),r=this._undoCommand._createdBatches.has(o);this._batchRegistry.has(o)||(this._batchRegistry.add(o),o.isUndoable&&(i?this._undoCommand.addBatch(o):r||(this._undoCommand.addBatch(o),this._redoCommand.clearStack())))}),{priority:"highest"}),this.listenTo(this._undoCommand,"revert",((e,t,s)=>{this._redoCommand.addBatch(s)})),e.keystrokes.set("CTRL+Z","undo"),e.keystrokes.set("CTRL+Y","redo"),e.keystrokes.set("CTRL+SHIFT+Z","redo")}}var u=s("./packages/ckeditor5-ui/src/button/buttonview.js");const p='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m5.042 9.367 2.189 1.837a.75.75 0 0 1-.965 1.149l-3.788-3.18a.747.747 0 0 1-.21-.284.75.75 0 0 1 .17-.945L6.23 4.762a.75.75 0 1 1 .964 1.15L4.863 7.866h8.917A.75.75 0 0 1 14 7.9a4 4 0 1 1-1.477 7.718l.344-1.489a2.5 2.5 0 1 0 1.094-4.73l.008-.032H5.042z"/></svg>',g='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m14.958 9.367-2.189 1.837a.75.75 0 0 0 .965 1.149l3.788-3.18a.747.747 0 0 0 .21-.284.75.75 0 0 0-.17-.945L13.77 4.762a.75.75 0 1 0-.964 1.15l2.331 1.955H6.22A.75.75 0 0 0 6 7.9a4 4 0 1 0 1.477 7.718l-.344-1.489A2.5 2.5 0 1 1 6.039 9.4l-.008-.032h8.927z"/></svg>';class f extends o.Z{static get pluginName(){return"UndoUI"}init(){const e=this.editor,t=e.locale,s=e.t,o="ltr"==t.uiLanguageDirection?p:g,i="ltr"==t.uiLanguageDirection?g:p;this._addButton("undo",s("Undo"),"CTRL+Z",o),this._addButton("redo",s("Redo"),"CTRL+Y",i)}_addButton(e,t,s,o){const i=this.editor;i.ui.componentFactory.add(e,(r=>{const n=i.commands.get(e),a=new u.Z(r);return a.set({label:t,icon:o,keystroke:s,tooltip:!0}),a.bind("isEnabled").to(n,"isEnabled"),this.listenTo(a,"execute",(()=>{i.execute(e),i.editing.view.focus()})),a}))}}class m extends o.Z{static get requires(){return[h,f]}static get pluginName(){return"Undo"}}},"./src/upload.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{Base64UploadAdapter:()=>k,FileDialogButtonView:()=>f,FileRepository:()=>h,SimpleUploadAdapter:()=>_});var o=s("./packages/ckeditor5-core/src/plugin.js"),i=s("./packages/ckeditor5-core/src/pendingactions.js"),r=s("./packages/ckeditor5-utils/src/ckeditorerror.ts"),n=s("./packages/ckeditor5-utils/src/observablemixin.ts"),a=s("./packages/ckeditor5-utils/src/collection.ts"),c=s("./packages/ckeditor5-utils/src/mix.ts");class l{constructor(){const e=new window.FileReader;this._reader=e,this._data=void 0,this.set("loaded",0),e.onprogress=e=>{this.loaded=e.loaded}}get error(){return this._reader.error}get data(){return this._data}read(e){const t=this._reader;return this.total=e.size,new Promise(((s,o)=>{t.onload=()=>{const e=t.result;this._data=e,s(e)},t.onerror=()=>{o("error")},t.onabort=()=>{o("aborted")},this._reader.readAsDataURL(e)}))}abort(){this._reader.abort()}}(0,c.Z)(l,n.Z);var d=s("./packages/ckeditor5-utils/src/uid.ts");class h extends o.Z{static get pluginName(){return"FileRepository"}static get requires(){return[i.Z]}init(){this.loaders=new a.Z,this.loaders.on("add",(()=>this._updatePendingAction())),this.loaders.on("remove",(()=>this._updatePendingAction())),this._loadersMap=new Map,this._pendingAction=null,this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((e,t)=>t?e/t*100:0))}getLoader(e){return this._loadersMap.get(e)||null}createLoader(e){if(!this.createUploadAdapter)return(0,r.KE)("filerepository-no-upload-adapter"),null;const t=new u(Promise.resolve(e),this.createUploadAdapter);return this.loaders.add(t),this._loadersMap.set(e,t),e instanceof Promise&&t.file.then((e=>{this._loadersMap.set(e,t)})).catch((()=>{})),t.on("change:uploaded",(()=>{let e=0;for(const t of this.loaders)e+=t.uploaded;this.uploaded=e})),t.on("change:uploadTotal",(()=>{let e=0;for(const t of this.loaders)t.uploadTotal&&(e+=t.uploadTotal);this.uploadTotal=e})),t}destroyLoader(e){const t=e instanceof u?e:this.getLoader(e);t._destroy(),this.loaders.remove(t),this._loadersMap.forEach(((e,s)=>{e===t&&this._loadersMap.delete(s)}))}_updatePendingAction(){const e=this.editor.plugins.get(i.Z);if(this.loaders.length){if(!this._pendingAction){const t=this.editor.t,s=e=>`${t("Upload in progress")} ${parseInt(e)}%.`;this._pendingAction=e.add(s(this.uploadedPercent)),this._pendingAction.bind("message").to(this,"uploadedPercent",s)}}else e.remove(this._pendingAction),this._pendingAction=null}}(0,c.Z)(h,n.Z);class u{constructor(e,t){this.id=(0,d.Z)(),this._filePromiseWrapper=this._createFilePromiseWrapper(e),this._adapter=t(this),this._reader=new l,this.set("status","idle"),this.set("uploaded",0),this.set("uploadTotal",null),this.bind("uploadedPercent").to(this,"uploaded",this,"uploadTotal",((e,t)=>t?e/t*100:0)),this.set("uploadResponse",null)}get file(){return this._filePromiseWrapper?this._filePromiseWrapper.promise.then((e=>this._filePromiseWrapper?e:null)):Promise.resolve(null)}get data(){return this._reader.data}read(){if("idle"!=this.status)throw new r.ZP("filerepository-read-wrong-status",this);return this.status="reading",this.file.then((e=>this._reader.read(e))).then((e=>{if("reading"!==this.status)throw this.status;return this.status="idle",e})).catch((e=>{if("aborted"===e)throw this.status="aborted","aborted";throw this.status="error",this._reader.error?this._reader.error:e}))}upload(){if("idle"!=this.status)throw new r.ZP("filerepository-upload-wrong-status",this);return this.status="uploading",this.file.then((()=>this._adapter.upload())).then((e=>(this.uploadResponse=e,this.status="idle",e))).catch((e=>{if("aborted"===this.status)throw"aborted";throw this.status="error",e}))}abort(){const e=this.status;this.status="aborted",this._filePromiseWrapper.isFulfilled?"reading"==e?this._reader.abort():"uploading"==e&&this._adapter.abort&&this._adapter.abort():(this._filePromiseWrapper.promise.catch((()=>{})),this._filePromiseWrapper.rejecter("aborted")),this._destroy()}_destroy(){this._filePromiseWrapper=void 0,this._reader=void 0,this._adapter=void 0,this.uploadResponse=void 0}_createFilePromiseWrapper(e){const t={};return t.promise=new Promise(((s,o)=>{t.rejecter=o,t.isFulfilled=!1,e.then((e=>{t.isFulfilled=!0,s(e)})).catch((e=>{t.isFulfilled=!0,o(e)}))})),t}}(0,c.Z)(u,n.Z);var p=s("./packages/ckeditor5-ui/src/button/buttonview.js"),g=s("./packages/ckeditor5-ui/src/view.js");class f extends g.Z{constructor(e){super(e),this.buttonView=new p.Z(e),this._fileInputView=new m(e),this._fileInputView.bind("acceptedType").to(this),this._fileInputView.bind("allowMultipleFiles").to(this),this._fileInputView.delegate("done").to(this),this.setTemplate({tag:"span",attributes:{class:"ck-file-dialog-button"},children:[this.buttonView,this._fileInputView]}),this.buttonView.on("execute",(()=>{this._fileInputView.open()}))}focus(){this.buttonView.focus()}}class m extends g.Z{constructor(e){super(e),this.set("acceptedType"),this.set("allowMultipleFiles",!1);const t=this.bindTemplate;this.setTemplate({tag:"input",attributes:{class:["ck-hidden"],type:"file",tabindex:"-1",accept:t.to("acceptedType"),multiple:t.to("allowMultipleFiles")},on:{change:t.to((()=>{this.element&&this.element.files&&this.element.files.length&&this.fire("done",this.element.files),this.element.value=""}))}})}open(){this.element.click()}}class k extends o.Z{static get requires(){return[h]}static get pluginName(){return"Base64UploadAdapter"}init(){this.editor.plugins.get(h).createUploadAdapter=e=>new b(e)}}class b{constructor(e){this.loader=e}upload(){return new Promise(((e,t)=>{const s=this.reader=new window.FileReader;s.addEventListener("load",(()=>{e({default:s.result})})),s.addEventListener("error",(e=>{t(e)})),s.addEventListener("abort",(()=>{t()})),this.loader.file.then((e=>{s.readAsDataURL(e)}))}))}abort(){this.reader.abort()}}class _ extends o.Z{static get requires(){return[h]}static get pluginName(){return"SimpleUploadAdapter"}init(){const e=this.editor.config.get("simpleUpload");e&&(e.uploadUrl?this.editor.plugins.get(h).createUploadAdapter=t=>new w(t,e):(0,r.KE)("simple-upload-adapter-missing-uploadurl"))}}class w{constructor(e,t){this.loader=e,this.options=t}upload(){return this.loader.file.then((e=>new Promise(((t,s)=>{this._initRequest(),this._initListeners(t,s,e),this._sendRequest(e)}))))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){const e=this.xhr=new XMLHttpRequest;e.open("POST",this.options.uploadUrl,!0),e.responseType="json"}_initListeners(e,t,s){const o=this.xhr,i=this.loader,r=`Couldn't upload file: ${s.name}.`;o.addEventListener("error",(()=>t(r))),o.addEventListener("abort",(()=>t())),o.addEventListener("load",(()=>{const s=o.response;if(!s||s.error)return t(s&&s.error&&s.error.message?s.error.message:r);const i=s.url?{default:s.url}:s.urls;e({...s,urls:i})})),o.upload&&o.upload.addEventListener("progress",(e=>{e.lengthComputable&&(i.uploadTotal=e.total,i.uploaded=e.loaded)}))}_sendRequest(e){const t=this.options.headers||{},s=this.options.withCredentials||!1;for(const e of Object.keys(t))this.xhr.setRequestHeader(e,t[e]);this.xhr.withCredentials=s;const o=new FormData;o.append("upload",e),this.xhr.send(o)}}},"./src/utils.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{CKEditorError:()=>o.Bb,Collection:()=>o.FE,DomEmitterMixin:()=>o.Xu,ElementReplacer:()=>o.a6,EmitterMixin:()=>o.ln,FocusTracker:()=>o.Rh,KeystrokeHandler:()=>o.VD,Locale:()=>o.go,ObservableMixin:()=>o.Re,Rect:()=>o.UL,ResizeObserver:()=>o.do,createElement:()=>o.az,diff:()=>o.Hg,env:()=>o.OB,first:()=>o.Ps,getCode:()=>o.Cq,getDataFromElement:()=>o.yy,getEnvKeystrokeText:()=>o.XU,getLanguageDirection:()=>o.j9,getLocalizedArrowKeyCodeDirection:()=>o.mA,global:()=>o.CO,isArrowKeyCode:()=>o.dj,isForwardArrowKeyCode:()=>o.Zt,isVisible:()=>o.pn,keyCodes:()=>o.Do,logError:()=>o.H,logWarning:()=>o.KE,mix:()=>o.CD,parseKeystroke:()=>o.Zz,priorities:()=>o.tA,scrollAncestorsToShowTarget:()=>o.F0,scrollViewportToShowTarget:()=>o.mR,setDataInElement:()=>o.jS,toArray:()=>o.qo,toMap:()=>o.qL,toUnit:()=>o.nn,uid:()=>o.hQ,version:()=>o.i8});var o=s("./packages/ckeditor5-utils/src/index.ts")},"./src/widget.js":(e,t,s)=>{"use strict";s.r(t),s.d(t,{WIDGET_CLASS_NAME:()=>c.s4,WIDGET_SELECTED_CLASS_NAME:()=>c.Uo,Widget:()=>o.Z,WidgetResize:()=>j,WidgetToolbarRepository:()=>d,WidgetTypeAround:()=>O.Z,findOptimalInsertionRange:()=>c.KT,getLabel:()=>c.id,isWidget:()=>c.Qd,setHighlightHandling:()=>c.em,setLabel:()=>c.l6,toWidget:()=>c.XC,toWidgetEditable:()=>c.sC,viewToModelPositionOutsideModelElement:()=>c.$n});var o=s("./packages/ckeditor5-widget/src/widget.js"),i=s("./packages/ckeditor5-core/src/plugin.js"),r=s("./packages/ckeditor5-ui/src/panel/balloon/contextualballoon.js"),n=s("./packages/ckeditor5-ui/src/toolbar/toolbarview.js"),a=s("./packages/ckeditor5-ui/src/panel/balloon/balloonpanelview.js"),c=s("./packages/ckeditor5-widget/src/utils.js"),l=s("./packages/ckeditor5-utils/src/ckeditorerror.ts");class d extends i.Z{static get requires(){return[r.Z]}static get pluginName(){return"WidgetToolbarRepository"}init(){const e=this.editor;if(e.plugins.has("BalloonToolbar")){const t=e.plugins.get("BalloonToolbar");this.listenTo(t,"show",(t=>{(function(e){const t=e.getSelectedElement();return!(!t||!(0,c.Qd)(t))})(e.editing.view.document.selection)&&t.stop()}),{priority:"high"})}this._toolbarDefinitions=new Map,this._balloon=this.editor.plugins.get("ContextualBalloon"),this.on("change:isEnabled",(()=>{this._updateToolbarsVisibility()})),this.listenTo(e.ui,"update",(()=>{this._updateToolbarsVisibility()})),this.listenTo(e.ui.focusTracker,"change:isFocused",(()=>{this._updateToolbarsVisibility()}),{priority:"low"})}destroy(){super.destroy();for(const e of this._toolbarDefinitions.values())e.view.destroy()}register(e,{ariaLabel:t,items:s,getRelatedElement:o,balloonClassName:i="ck-toolbar-container"}){if(!s.length)return void(0,l.KE)("widget-toolbar-no-items",{toolbarId:e});const r=this.editor,a=r.t,c=new n.Z(r.locale);if(c.ariaLabel=t||a("Widget toolbar"),this._toolbarDefinitions.has(e))throw new l.ZP("widget-toolbar-duplicated",this,{toolbarId:e});c.fillFromConfig(s,r.ui.componentFactory);const d={view:c,getRelatedElement:o,balloonClassName:i};r.ui.addToolbar(c,{isContextual:!0,beforeFocus:()=>{const e=o(r.editing.view.document.selection);e&&this._showToolbar(d,e)},afterBlur:()=>{this._hideToolbar(d)}}),this._toolbarDefinitions.set(e,d)}_updateToolbarsVisibility(){let e=0,t=null,s=null;for(const o of this._toolbarDefinitions.values()){const i=o.getRelatedElement(this.editor.editing.view.document.selection);if(this.isEnabled&&i)if(this.editor.ui.focusTracker.isFocused){const r=i.getAncestors().length;r>e&&(e=r,t=i,s=o)}else this._isToolbarVisible(o)&&this._hideToolbar(o);else this._isToolbarInBalloon(o)&&this._hideToolbar(o)}s&&this._showToolbar(s,t)}_hideToolbar(e){this._balloon.remove(e.view),this.stopListening(this._balloon,"change:visibleView")}_showToolbar(e,t){this._isToolbarVisible(e)?h(this.editor,t):this._isToolbarInBalloon(e)||(this._balloon.add({view:e.view,position:u(this.editor,t),balloonClassName:e.balloonClassName}),this.listenTo(this._balloon,"change:visibleView",(()=>{for(const e of this._toolbarDefinitions.values())if(this._isToolbarVisible(e)){const t=e.getRelatedElement(this.editor.editing.view.document.selection);h(this.editor,t)}})))}_isToolbarVisible(e){return this._balloon.visibleView===e.view}_isToolbarInBalloon(e){return this._balloon.hasView(e.view)}}function h(e,t){const s=e.plugins.get("ContextualBalloon"),o=u(e,t);s.updatePosition(o)}function u(e,t){const s=e.editing.view,o=a.Z.defaultPositions;return{target:s.domConverter.mapViewToDom(t),positions:[o.northArrowSouth,o.northArrowSouthWest,o.northArrowSouthEast,o.southArrowNorth,o.southArrowNorthWest,o.southArrowNorthEast,o.viewportStickyNorth]}}var p=s("./packages/ckeditor5-ui/src/template.js"),g=s("./packages/ckeditor5-utils/src/dom/rect.ts"),f=s("./packages/ckeditor5-utils/src/comparearrays.ts"),m=s("./packages/ckeditor5-utils/src/observablemixin.ts"),k=s("./packages/ckeditor5-utils/src/mix.ts");class b{constructor(e){this.set("activeHandlePosition",null),this.set("proposedWidthPercents",null),this.set("proposedWidth",null),this.set("proposedHeight",null),this.set("proposedHandleHostWidth",null),this.set("proposedHandleHostHeight",null),this._options=e,this._referenceCoordinates=null}begin(e,t,s){const o=new g.Z(t);this.activeHandlePosition=function(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const s of t)if(e.classList.contains(_(s)))return s}(e),this._referenceCoordinates=function(e,t){const s=new g.Z(e),o=t.split("-"),i={x:"right"==o[1]?s.right:s.left,y:"bottom"==o[0]?s.bottom:s.top};return i.x+=e.ownerDocument.defaultView.scrollX,i.y+=e.ownerDocument.defaultView.scrollY,i}(t,function(e){const t=e.split("-"),s={top:"bottom",bottom:"top",left:"right",right:"left"};return`${s[t[0]]}-${s[t[1]]}`}(this.activeHandlePosition)),this.originalWidth=o.width,this.originalHeight=o.height,this.aspectRatio=o.width/o.height;const i=s.style.width;i&&i.match(/^\d+(\.\d*)?%$/)?this.originalWidthPercents=parseFloat(i):this.originalWidthPercents=function(e,t){const s=e.parentElement,o=parseFloat(s.ownerDocument.defaultView.getComputedStyle(s).width);return t.width/o*100}(s,o)}update(e){this.proposedWidth=e.width,this.proposedHeight=e.height,this.proposedWidthPercents=e.widthPercents,this.proposedHandleHostWidth=e.handleHostWidth,this.proposedHandleHostHeight=e.handleHostHeight}}function _(e){return`ck-widget__resizer__handle-${e}`}(0,k.Z)(b,m.Z);var w=s("./packages/ckeditor5-ui/src/view.js");class v extends w.Z{constructor(){super();const e=this.bindTemplate;this.setTemplate({tag:"div",attributes:{class:["ck","ck-size-view",e.to("_viewPosition",(e=>e?`ck-orientation-${e}`:""))],style:{display:e.if("_isVisible","none",(e=>!e))}},children:[{text:e.to("_label")}]})}_bindToState(e,t){this.bind("_isVisible").to(t,"proposedWidth",t,"proposedHeight",((e,t)=>null!==e&&null!==t)),this.bind("_label").to(t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",t,"proposedWidthPercents",((t,s,o)=>"px"===e.unit?`${t}×${s}`:`${o}%`)),this.bind("_viewPosition").to(t,"activeHandlePosition",t,"proposedHandleHostWidth",t,"proposedHandleHostHeight",((e,t,s)=>t<50||s<50?"above-center":e))}_dismiss(){this.unbind(),this._isVisible=!1}}class y{constructor(e){this._options=e,this._viewResizerWrapper=null,this.set("isEnabled",!0),this.decorate("begin"),this.decorate("cancel"),this.decorate("commit"),this.decorate("updateSize"),this.on("commit",(e=>{this.state.proposedWidth||this.state.proposedWidthPercents||(this._cleanup(),e.stop())}),{priority:"high"}),this.on("change:isEnabled",(()=>{this.isEnabled&&this.redraw()}))}attach(){const e=this,t=this._options.viewElement;this._options.editor.editing.view.change((s=>{const o=s.createUIElement("div",{class:"ck ck-reset_all ck-widget__resizer"},(function(t){const s=this.toDomElement(t);return e._appendHandles(s),e._appendSizeUI(s),e.on("change:isEnabled",((e,t,o)=>{s.style.display=o?"":"none"})),s.style.display=e.isEnabled?"":"none",s}));s.insert(s.createPositionAt(t,"end"),o),s.addClass("ck-widget_with-resizer",t),this._viewResizerWrapper=o}))}begin(e){this.state=new b(this._options),this._sizeView._bindToState(this._options,this.state),this._initialViewWidth=this._options.viewElement.getStyle("width"),this.state.begin(e,this._getHandleHost(),this._getResizeHost())}updateSize(e){const t=this._proposeNewSize(e);this._options.editor.editing.view.change((e=>{const s=this._options.unit||"%",o=("%"===s?t.widthPercents:t.width)+s;e.setStyle("width",o,this._options.viewElement)}));const s=this._getHandleHost(),o=new g.Z(s);t.handleHostWidth=Math.round(o.width),t.handleHostHeight=Math.round(o.height);const i=new g.Z(s);t.width=Math.round(i.width),t.height=Math.round(i.height),this.redraw(o),this.state.update(t)}commit(){const e=this._options.unit||"%",t=("%"===e?this.state.proposedWidthPercents:this.state.proposedWidth)+e;this._options.editor.editing.view.change((()=>{this._cleanup(),this._options.onCommit(t)}))}cancel(){this._cleanup()}destroy(){this.cancel()}redraw(e){const t=this._domResizerWrapper;if(!((s=t)&&s.ownerDocument&&s.ownerDocument.contains(s)))return;var s;const o=t.parentElement,i=this._getHandleHost(),r=this._viewResizerWrapper,n=[r.getStyle("width"),r.getStyle("height"),r.getStyle("left"),r.getStyle("top")];let a;if(o.isSameNode(i)){const t=e||new g.Z(i);a=[t.width+"px",t.height+"px",void 0,void 0]}else a=[i.offsetWidth+"px",i.offsetHeight+"px",i.offsetLeft+"px",i.offsetTop+"px"];"same"!==(0,f.Z)(n,a)&&this._options.editor.editing.view.change((e=>{e.setStyle({width:a[0],height:a[1],left:a[2],top:a[3]},r)}))}containsHandle(e){return this._domResizerWrapper.contains(e)}static isResizeHandle(e){return e.classList.contains("ck-widget__resizer__handle")}_cleanup(){this._sizeView._dismiss();this._options.editor.editing.view.change((e=>{e.setStyle("width",this._initialViewWidth,this._options.viewElement)}))}_proposeNewSize(e){const t=this.state,s={x:(o=e).pageX,y:o.pageY};var o;const i=!this._options.isCentered||this._options.isCentered(this),r={x:t._referenceCoordinates.x-(s.x+t.originalWidth),y:s.y-t.originalHeight-t._referenceCoordinates.y};i&&t.activeHandlePosition.endsWith("-right")&&(r.x=s.x-(t._referenceCoordinates.x+t.originalWidth)),i&&(r.x*=2);const n={width:Math.abs(t.originalWidth+r.x),height:Math.abs(t.originalHeight+r.y)};n.dominant=n.width/t.aspectRatio>n.height?"width":"height",n.max=n[n.dominant];const a={width:n.width,height:n.height};return"width"==n.dominant?a.height=a.width/t.aspectRatio:a.width=a.height*t.aspectRatio,{width:Math.round(a.width),height:Math.round(a.height),widthPercents:Math.min(Math.round(t.originalWidthPercents/t.originalWidth*a.width*100)/100,100)}}_getResizeHost(){const e=this._domResizerWrapper.parentElement;return this._options.getResizeHost(e)}_getHandleHost(){const e=this._domResizerWrapper.parentElement;return this._options.getHandleHost(e)}get _domResizerWrapper(){return this._options.editor.editing.view.domConverter.mapViewToDom(this._viewResizerWrapper)}_appendHandles(e){const t=["top-left","top-right","bottom-right","bottom-left"];for(const o of t)e.appendChild(new p.ZP({tag:"div",attributes:{class:"ck-widget__resizer__handle "+(s=o,`ck-widget__resizer__handle-${s}`)}}).render());var s}_appendSizeUI(e){this._sizeView=new v,this._sizeView.render(),e.appendChild(this._sizeView.element)}}(0,k.Z)(y,m.Z);var Z=s("./packages/ckeditor5-utils/src/dom/emittermixin.ts"),P=s("./packages/ckeditor5-utils/src/dom/global.ts"),x=s("./packages/ckeditor5-engine/src/view/observer/mouseobserver.ts"),T=s("./node_modules/lodash-es/throttle.js"),A=s("./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js"),C=s.n(A),E=s("./node_modules/css-loader/dist/cjs.js!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[1].use[2]!./packages/ckeditor5-widget/theme/widgetresize.css"),S={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};C()(E.Z,S);E.Z.locals;class j extends i.Z{static get pluginName(){return"WidgetResize"}init(){const e=this.editor.editing,t=P.Z.window.document;this.set("visibleResizer",null),this.set("_activeResizer",null),this._resizers=new Map,e.view.addObserver(x.Z),this._observer=Object.create(Z.Z),this.listenTo(e.view.document,"mousedown",this._mouseDownListener.bind(this),{priority:"high"}),this._observer.listenTo(t,"mousemove",this._mouseMoveListener.bind(this)),this._observer.listenTo(t,"mouseup",this._mouseUpListener.bind(this));const s=()=>{this.visibleResizer&&this.visibleResizer.redraw()};this._redrawFocusedResizerThrottled=(0,T.Z)(s,200),this.on("change:visibleResizer",s),this.editor.ui.on("update",this._redrawFocusedResizerThrottled),this.editor.model.document.on("change",(()=>{for(const[e,t]of this._resizers)e.isAttached()||(this._resizers.delete(e),t.destroy())}),{priority:"lowest"}),this._observer.listenTo(P.Z.window,"resize",this._redrawFocusedResizerThrottled);const o=this.editor.editing.view.document.selection;o.on("change",(()=>{const e=o.getSelectedElement();this.visibleResizer=this.getResizerByViewElement(e)||null}))}destroy(){this._observer.stopListening();for(const e of this._resizers.values())e.destroy();this._redrawFocusedResizerThrottled.cancel()}attachTo(e){const t=new y(e),s=this.editor.plugins;if(t.attach(),s.has("WidgetToolbarRepository")){const e=s.get("WidgetToolbarRepository");t.on("begin",(()=>{e.forceDisabled("resize")}),{priority:"lowest"}),t.on("cancel",(()=>{e.clearForceDisabled("resize")}),{priority:"highest"}),t.on("commit",(()=>{e.clearForceDisabled("resize")}),{priority:"highest"})}this._resizers.set(e.viewElement,t);const o=this.editor.editing.view.document.selection.getSelectedElement();return this.getResizerByViewElement(o)==t&&(this.visibleResizer=t),t}getResizerByViewElement(e){return this._resizers.get(e)}_getResizerByHandle(e){for(const t of this._resizers.values())if(t.containsHandle(e))return t}_mouseDownListener(e,t){const s=t.domTarget;y.isResizeHandle(s)&&(this._activeResizer=this._getResizerByHandle(s),this._activeResizer&&(this._activeResizer.begin(s),e.stop(),t.preventDefault()))}_mouseMoveListener(e,t){this._activeResizer&&this._activeResizer.updateSize(t)}_mouseUpListener(){this._activeResizer&&(this._activeResizer.commit(),this._activeResizer=null)}}(0,k.Z)(j,m.Z);var O=s("./packages/ckeditor5-widget/src/widgettypearound/widgettypearound.js")},"?7cdd":(e,t,s)=>{e.exports=s},"./node_modules/lodash-es/_ListCache.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});const o=function(){this.__data__=[],this.size=0};var i=s("./node_modules/lodash-es/eq.js");const r=function(e,t){for(var s=e.length;s--;)if((0,i.Z)(e[s][0],t))return s;return-1};var n=Array.prototype.splice;const a=function(e){var t=this.__data__,s=r(t,e);return!(s<0)&&(s==t.length-1?t.pop():n.call(t,s,1),--this.size,!0)};const c=function(e){var t=this.__data__,s=r(t,e);return s<0?void 0:t[s][1]};const l=function(e){return r(this.__data__,e)>-1};const d=function(e,t){var s=this.__data__,o=r(s,e);return o<0?(++this.size,s.push([e,t])):s[o][1]=t,this};function h(e){var t=-1,s=null==e?0:e.length;for(this.clear();++t<s;){var o=e[t];this.set(o[0],o[1])}}h.prototype.clear=o,h.prototype.delete=a,h.prototype.get=c,h.prototype.has=l,h.prototype.set=d;const u=h},"./node_modules/lodash-es/_Map.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_getNative.js"),i=s("./node_modules/lodash-es/_root.js");const r=(0,o.Z)(i.Z,"Map")},"./node_modules/lodash-es/_MapCache.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Z});const o=(0,s("./node_modules/lodash-es/_getNative.js").Z)(Object,"create");const i=function(){this.__data__=o?o(null):{},this.size=0};const r=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t};var n=Object.prototype.hasOwnProperty;const a=function(e){var t=this.__data__;if(o){var s=t[e];return"__lodash_hash_undefined__"===s?void 0:s}return n.call(t,e)?t[e]:void 0};var c=Object.prototype.hasOwnProperty;const l=function(e){var t=this.__data__;return o?void 0!==t[e]:c.call(t,e)};const d=function(e,t){var s=this.__data__;return this.size+=this.has(e)?0:1,s[e]=o&&void 0===t?"__lodash_hash_undefined__":t,this};function h(e){var t=-1,s=null==e?0:e.length;for(this.clear();++t<s;){var o=e[t];this.set(o[0],o[1])}}h.prototype.clear=i,h.prototype.delete=r,h.prototype.get=a,h.prototype.has=l,h.prototype.set=d;const u=h;var p=s("./node_modules/lodash-es/_ListCache.js"),g=s("./node_modules/lodash-es/_Map.js");const f=function(){this.size=0,this.__data__={hash:new u,map:new(g.Z||p.Z),string:new u}};const m=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e};const k=function(e,t){var s=e.__data__;return m(t)?s["string"==typeof t?"string":"hash"]:s.map};const b=function(e){var t=k(this,e).delete(e);return this.size-=t?1:0,t};const _=function(e){return k(this,e).get(e)};const w=function(e){return k(this,e).has(e)};const v=function(e,t){var s=k(this,e),o=s.size;return s.set(e,t),this.size+=s.size==o?0:1,this};function y(e){var t=-1,s=null==e?0:e.length;for(this.clear();++t<s;){var o=e[t];this.set(o[0],o[1])}}y.prototype.clear=f,y.prototype.delete=b,y.prototype.get=_,y.prototype.has=w,y.prototype.set=v;const Z=y},"./node_modules/lodash-es/_Stack.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./node_modules/lodash-es/_ListCache.js");const i=function(){this.__data__=new o.Z,this.size=0};const r=function(e){var t=this.__data__,s=t.delete(e);return this.size=t.size,s};const n=function(e){return this.__data__.get(e)};const a=function(e){return this.__data__.has(e)};var c=s("./node_modules/lodash-es/_Map.js"),l=s("./node_modules/lodash-es/_MapCache.js");const d=function(e,t){var s=this.__data__;if(s instanceof o.Z){var i=s.__data__;if(!c.Z||i.length<199)return i.push([e,t]),this.size=++s.size,this;s=this.__data__=new l.Z(i)}return s.set(e,t),this.size=s.size,this};function h(e){var t=this.__data__=new o.Z(e);this.size=t.size}h.prototype.clear=i,h.prototype.delete=r,h.prototype.get=n,h.prototype.has=a,h.prototype.set=d;const u=h},"./node_modules/lodash-es/_Symbol.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=s("./node_modules/lodash-es/_root.js").Z.Symbol},"./node_modules/lodash-es/_Uint8Array.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=s("./node_modules/lodash-es/_root.js").Z.Uint8Array},"./node_modules/lodash-es/_arrayLikeKeys.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});const o=function(e,t){for(var s=-1,o=Array(e);++s<e;)o[s]=t(s);return o};var i=s("./node_modules/lodash-es/isArguments.js"),r=s("./node_modules/lodash-es/isArray.js"),n=s("./node_modules/lodash-es/isBuffer.js"),a=s("./node_modules/lodash-es/_isIndex.js"),c=s("./node_modules/lodash-es/isTypedArray.js"),l=Object.prototype.hasOwnProperty;const d=function(e,t){var s=(0,r.Z)(e),d=!s&&(0,i.Z)(e),h=!s&&!d&&(0,n.Z)(e),u=!s&&!d&&!h&&(0,c.Z)(e),p=s||d||h||u,g=p?o(e.length,String):[],f=g.length;for(var m in e)!t&&!l.call(e,m)||p&&("length"==m||h&&("offset"==m||"parent"==m)||u&&("buffer"==m||"byteLength"==m||"byteOffset"==m)||(0,a.Z)(m,f))||g.push(m);return g}},"./node_modules/lodash-es/_arrayPush.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e,t){for(var s=-1,o=t.length,i=e.length;++s<o;)e[i+s]=t[s];return e}},"./node_modules/lodash-es/_assignValue.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./node_modules/lodash-es/_baseAssignValue.js"),i=s("./node_modules/lodash-es/eq.js"),r=Object.prototype.hasOwnProperty;const n=function(e,t,s){var n=e[t];r.call(e,t)&&(0,i.Z)(n,s)&&(void 0!==s||t in e)||(0,o.Z)(e,t,s)}},"./node_modules/lodash-es/_baseAssignValue.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_defineProperty.js");const i=function(e,t,s){"__proto__"==t&&o.Z?(0,o.Z)(e,t,{configurable:!0,enumerable:!0,value:s,writable:!0}):e[t]=s}},"./node_modules/lodash-es/_baseClone.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Y});var o=s("./node_modules/lodash-es/_Stack.js");const i=function(e,t){for(var s=-1,o=null==e?0:e.length;++s<o&&!1!==t(e[s],s,e););return e};var r=s("./node_modules/lodash-es/_assignValue.js"),n=s("./node_modules/lodash-es/_copyObject.js"),a=s("./node_modules/lodash-es/keys.js");const c=function(e,t){return e&&(0,n.Z)(t,(0,a.Z)(t),e)};var l=s("./node_modules/lodash-es/keysIn.js");const d=function(e,t){return e&&(0,n.Z)(t,(0,l.Z)(t),e)};var h=s("./node_modules/lodash-es/_cloneBuffer.js"),u=s("./node_modules/lodash-es/_copyArray.js"),p=s("./node_modules/lodash-es/_getSymbols.js");const g=function(e,t){return(0,n.Z)(e,(0,p.Z)(e),t)};var f=s("./node_modules/lodash-es/_arrayPush.js"),m=s("./node_modules/lodash-es/_getPrototype.js"),k=s("./node_modules/lodash-es/stubArray.js");const b=Object.getOwnPropertySymbols?function(e){for(var t=[];e;)(0,f.Z)(t,(0,p.Z)(e)),e=(0,m.Z)(e);return t}:k.Z;const _=function(e,t){return(0,n.Z)(e,b(e),t)};var w=s("./node_modules/lodash-es/_getAllKeys.js"),v=s("./node_modules/lodash-es/_baseGetAllKeys.js");const y=function(e){return(0,v.Z)(e,l.Z,b)};var Z=s("./node_modules/lodash-es/_getTag.js"),P=Object.prototype.hasOwnProperty;const x=function(e){var t=e.length,s=new e.constructor(t);return t&&"string"==typeof e[0]&&P.call(e,"index")&&(s.index=e.index,s.input=e.input),s};var T=s("./node_modules/lodash-es/_cloneArrayBuffer.js");const A=function(e,t){var s=t?(0,T.Z)(e.buffer):e.buffer;return new e.constructor(s,e.byteOffset,e.byteLength)};var C=/\w*$/;const E=function(e){var t=new e.constructor(e.source,C.exec(e));return t.lastIndex=e.lastIndex,t};var S=s("./node_modules/lodash-es/_Symbol.js"),j=S.Z?S.Z.prototype:void 0,O=j?j.valueOf:void 0;const R=function(e){return O?Object(O.call(e)):{}};var M=s("./node_modules/lodash-es/_cloneTypedArray.js");const N=function(e,t,s){var o=e.constructor;switch(t){case"[object ArrayBuffer]":return(0,T.Z)(e);case"[object Boolean]":case"[object Date]":return new o(+e);case"[object DataView]":return A(e,s);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return(0,M.Z)(e,s);case"[object Map]":case"[object Set]":return new o;case"[object Number]":case"[object String]":return new o(e);case"[object RegExp]":return E(e);case"[object Symbol]":return R(e)}};var V=s("./node_modules/lodash-es/_initCloneObject.js"),I=s("./node_modules/lodash-es/isArray.js"),D=s("./node_modules/lodash-es/isBuffer.js"),z=s("./node_modules/lodash-es/isObjectLike.js");const B=function(e){return(0,z.Z)(e)&&"[object Map]"==(0,Z.Z)(e)};var F=s("./node_modules/lodash-es/_baseUnary.js"),L=s("./node_modules/lodash-es/_nodeUtil.js"),W=L.Z&&L.Z.isMap;const $=W?(0,F.Z)(W):B;var q=s("./node_modules/lodash-es/isObject.js");const H=function(e){return(0,z.Z)(e)&&"[object Set]"==(0,Z.Z)(e)};var U=L.Z&&L.Z.isSet;const K=U?(0,F.Z)(U):H;var G="[object Arguments]",J="[object Function]",Q="[object Object]",X={};X[G]=X["[object Array]"]=X["[object ArrayBuffer]"]=X["[object DataView]"]=X["[object Boolean]"]=X["[object Date]"]=X["[object Float32Array]"]=X["[object Float64Array]"]=X["[object Int8Array]"]=X["[object Int16Array]"]=X["[object Int32Array]"]=X["[object Map]"]=X["[object Number]"]=X[Q]=X["[object RegExp]"]=X["[object Set]"]=X["[object String]"]=X["[object Symbol]"]=X["[object Uint8Array]"]=X["[object Uint8ClampedArray]"]=X["[object Uint16Array]"]=X["[object Uint32Array]"]=!0,X["[object Error]"]=X[J]=X["[object WeakMap]"]=!1;const Y=function e(t,s,n,p,f,m){var k,b=1&s,v=2&s,P=4&s;if(n&&(k=f?n(t,p,f,m):n(t)),void 0!==k)return k;if(!(0,q.Z)(t))return t;var T=(0,I.Z)(t);if(T){if(k=x(t),!b)return(0,u.Z)(t,k)}else{var A=(0,Z.Z)(t),C=A==J||"[object GeneratorFunction]"==A;if((0,D.Z)(t))return(0,h.Z)(t,b);if(A==Q||A==G||C&&!f){if(k=v||C?{}:(0,V.Z)(t),!b)return v?_(t,d(k,t)):g(t,c(k,t))}else{if(!X[A])return f?t:{};k=N(t,A,b)}}m||(m=new o.Z);var E=m.get(t);if(E)return E;m.set(t,k),K(t)?t.forEach((function(o){k.add(e(o,s,n,o,t,m))})):$(t)&&t.forEach((function(o,i){k.set(i,e(o,s,n,i,t,m))}));var S=P?v?y:w.Z:v?l.Z:a.Z,j=T?void 0:S(t);return i(j||t,(function(o,i){j&&(o=t[i=o]),(0,r.Z)(k,i,e(o,s,n,i,t,m))})),k}},"./node_modules/lodash-es/_baseGetAllKeys.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_arrayPush.js"),i=s("./node_modules/lodash-es/isArray.js");const r=function(e,t,s){var r=t(e);return(0,i.Z)(e)?r:(0,o.Z)(r,s(e))}},"./node_modules/lodash-es/_baseGetTag.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>u});var o=s("./node_modules/lodash-es/_Symbol.js"),i=Object.prototype,r=i.hasOwnProperty,n=i.toString,a=o.Z?o.Z.toStringTag:void 0;const c=function(e){var t=r.call(e,a),s=e[a];try{e[a]=void 0;var o=!0}catch(e){}var i=n.call(e);return o&&(t?e[a]=s:delete e[a]),i};var l=Object.prototype.toString;const d=function(e){return l.call(e)};var h=o.Z?o.Z.toStringTag:void 0;const u=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":h&&h in Object(e)?c(e):d(e)}},"./node_modules/lodash-es/_baseIsEqual.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>R});var o=s("./node_modules/lodash-es/_Stack.js"),i=s("./node_modules/lodash-es/_MapCache.js");const r=function(e){return this.__data__.set(e,"__lodash_hash_undefined__"),this};const n=function(e){return this.__data__.has(e)};function a(e){var t=-1,s=null==e?0:e.length;for(this.__data__=new i.Z;++t<s;)this.add(e[t])}a.prototype.add=a.prototype.push=r,a.prototype.has=n;const c=a;const l=function(e,t){for(var s=-1,o=null==e?0:e.length;++s<o;)if(t(e[s],s,e))return!0;return!1};const d=function(e,t){return e.has(t)};const h=function(e,t,s,o,i,r){var n=1&s,a=e.length,h=t.length;if(a!=h&&!(n&&h>a))return!1;var u=r.get(e),p=r.get(t);if(u&&p)return u==t&&p==e;var g=-1,f=!0,m=2&s?new c:void 0;for(r.set(e,t),r.set(t,e);++g<a;){var k=e[g],b=t[g];if(o)var _=n?o(b,k,g,t,e,r):o(k,b,g,e,t,r);if(void 0!==_){if(_)continue;f=!1;break}if(m){if(!l(t,(function(e,t){if(!d(m,t)&&(k===e||i(k,e,s,o,r)))return m.push(t)}))){f=!1;break}}else if(k!==b&&!i(k,b,s,o,r)){f=!1;break}}return r.delete(e),r.delete(t),f};var u=s("./node_modules/lodash-es/_Symbol.js"),p=s("./node_modules/lodash-es/_Uint8Array.js"),g=s("./node_modules/lodash-es/eq.js");const f=function(e){var t=-1,s=Array(e.size);return e.forEach((function(e,o){s[++t]=[o,e]})),s};const m=function(e){var t=-1,s=Array(e.size);return e.forEach((function(e){s[++t]=e})),s};var k=u.Z?u.Z.prototype:void 0,b=k?k.valueOf:void 0;const _=function(e,t,s,o,i,r,n){switch(s){case"[object DataView]":if(e.byteLength!=t.byteLength||e.byteOffset!=t.byteOffset)return!1;e=e.buffer,t=t.buffer;case"[object ArrayBuffer]":return!(e.byteLength!=t.byteLength||!r(new p.Z(e),new p.Z(t)));case"[object Boolean]":case"[object Date]":case"[object Number]":return(0,g.Z)(+e,+t);case"[object Error]":return e.name==t.name&&e.message==t.message;case"[object RegExp]":case"[object String]":return e==t+"";case"[object Map]":var a=f;case"[object Set]":var c=1&o;if(a||(a=m),e.size!=t.size&&!c)return!1;var l=n.get(e);if(l)return l==t;o|=2,n.set(e,t);var d=h(a(e),a(t),o,i,r,n);return n.delete(e),d;case"[object Symbol]":if(b)return b.call(e)==b.call(t)}return!1};var w=s("./node_modules/lodash-es/_getAllKeys.js"),v=Object.prototype.hasOwnProperty;const y=function(e,t,s,o,i,r){var n=1&s,a=(0,w.Z)(e),c=a.length;if(c!=(0,w.Z)(t).length&&!n)return!1;for(var l=c;l--;){var d=a[l];if(!(n?d in t:v.call(t,d)))return!1}var h=r.get(e),u=r.get(t);if(h&&u)return h==t&&u==e;var p=!0;r.set(e,t),r.set(t,e);for(var g=n;++l<c;){var f=e[d=a[l]],m=t[d];if(o)var k=n?o(m,f,d,t,e,r):o(f,m,d,e,t,r);if(!(void 0===k?f===m||i(f,m,s,o,r):k)){p=!1;break}g||(g="constructor"==d)}if(p&&!g){var b=e.constructor,_=t.constructor;b==_||!("constructor"in e)||!("constructor"in t)||"function"==typeof b&&b instanceof b&&"function"==typeof _&&_ instanceof _||(p=!1)}return r.delete(e),r.delete(t),p};var Z=s("./node_modules/lodash-es/_getTag.js"),P=s("./node_modules/lodash-es/isArray.js"),x=s("./node_modules/lodash-es/isBuffer.js"),T=s("./node_modules/lodash-es/isTypedArray.js"),A="[object Arguments]",C="[object Array]",E="[object Object]",S=Object.prototype.hasOwnProperty;const j=function(e,t,s,i,r,n){var a=(0,P.Z)(e),c=(0,P.Z)(t),l=a?C:(0,Z.Z)(e),d=c?C:(0,Z.Z)(t),u=(l=l==A?E:l)==E,p=(d=d==A?E:d)==E,g=l==d;if(g&&(0,x.Z)(e)){if(!(0,x.Z)(t))return!1;a=!0,u=!1}if(g&&!u)return n||(n=new o.Z),a||(0,T.Z)(e)?h(e,t,s,i,r,n):_(e,t,l,s,i,r,n);if(!(1&s)){var f=u&&S.call(e,"__wrapped__"),m=p&&S.call(t,"__wrapped__");if(f||m){var k=f?e.value():e,b=m?t.value():t;return n||(n=new o.Z),r(k,b,s,i,n)}}return!!g&&(n||(n=new o.Z),y(e,t,s,i,r,n))};var O=s("./node_modules/lodash-es/isObjectLike.js");const R=function e(t,s,o,i,r){return t===s||(null==t||null==s||!(0,O.Z)(t)&&!(0,O.Z)(s)?t!=t&&s!=s:j(t,s,o,i,e,r))}},"./node_modules/lodash-es/_baseUnary.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e){return function(t){return e(t)}}},"./node_modules/lodash-es/_cloneArrayBuffer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_Uint8Array.js");const i=function(e){var t=new e.constructor(e.byteLength);return new o.Z(t).set(new o.Z(e)),t}},"./node_modules/lodash-es/_cloneBuffer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./node_modules/lodash-es/_root.js"),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,r=i&&"object"==typeof module&&module&&!module.nodeType&&module,n=r&&r.exports===i?o.Z.Buffer:void 0,a=n?n.allocUnsafe:void 0;const c=function(e,t){if(t)return e.slice();var s=e.length,o=a?a(s):new e.constructor(s);return e.copy(o),o}},"./node_modules/lodash-es/_cloneTypedArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_cloneArrayBuffer.js");const i=function(e,t){var s=t?(0,o.Z)(e.buffer):e.buffer;return new e.constructor(s,e.byteOffset,e.length)}},"./node_modules/lodash-es/_copyArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e,t){var s=-1,o=e.length;for(t||(t=Array(o));++s<o;)t[s]=e[s];return t}},"./node_modules/lodash-es/_copyObject.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_assignValue.js"),i=s("./node_modules/lodash-es/_baseAssignValue.js");const r=function(e,t,s,r){var n=!s;s||(s={});for(var a=-1,c=t.length;++a<c;){var l=t[a],d=r?r(s[l],e[l],l,s,e):void 0;void 0===d&&(d=e[l]),n?(0,i.Z)(s,l,d):(0,o.Z)(s,l,d)}return s}},"./node_modules/lodash-es/_createAssigner.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});const o=function(e){return e};const i=function(e,t,s){switch(s.length){case 0:return e.call(t);case 1:return e.call(t,s[0]);case 2:return e.call(t,s[0],s[1]);case 3:return e.call(t,s[0],s[1],s[2])}return e.apply(t,s)};var r=Math.max;const n=function(e,t,s){return t=r(void 0===t?e.length-1:t,0),function(){for(var o=arguments,n=-1,a=r(o.length-t,0),c=Array(a);++n<a;)c[n]=o[t+n];n=-1;for(var l=Array(t+1);++n<t;)l[n]=o[n];return l[t]=s(c),i(e,this,l)}};const a=function(e){return function(){return e}};var c=s("./node_modules/lodash-es/_defineProperty.js");const l=c.Z?function(e,t){return(0,c.Z)(e,"toString",{configurable:!0,enumerable:!1,value:a(t),writable:!0})}:o;var d=Date.now;const h=function(e){var t=0,s=0;return function(){var o=d(),i=16-(o-s);if(s=o,i>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}(l);const u=function(e,t){return h(n(e,t,o),e+"")};var p=s("./node_modules/lodash-es/eq.js"),g=s("./node_modules/lodash-es/isArrayLike.js"),f=s("./node_modules/lodash-es/_isIndex.js"),m=s("./node_modules/lodash-es/isObject.js");const k=function(e,t,s){if(!(0,m.Z)(s))return!1;var o=typeof t;return!!("number"==o?(0,g.Z)(s)&&(0,f.Z)(t,s.length):"string"==o&&t in s)&&(0,p.Z)(s[t],e)};const b=function(e){return u((function(t,s){var o=-1,i=s.length,r=i>1?s[i-1]:void 0,n=i>2?s[2]:void 0;for(r=e.length>3&&"function"==typeof r?(i--,r):void 0,n&&k(s[0],s[1],n)&&(r=i<3?void 0:r,i=1),t=Object(t);++o<i;){var a=s[o];a&&e(t,a,o,r)}return t}))}},"./node_modules/lodash-es/_defineProperty.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_getNative.js");const i=function(){try{var e=(0,o.Z)(Object,"defineProperty");return e({},"",{}),e}catch(e){}}()},"./node_modules/lodash-es/_freeGlobal.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o="object"==typeof global&&global&&global.Object===Object&&global},"./node_modules/lodash-es/_getAllKeys.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./node_modules/lodash-es/_baseGetAllKeys.js"),i=s("./node_modules/lodash-es/_getSymbols.js"),r=s("./node_modules/lodash-es/keys.js");const n=function(e){return(0,o.Z)(e,r.Z,i.Z)}},"./node_modules/lodash-es/_getNative.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});var o=s("./node_modules/lodash-es/isFunction.js");const i=s("./node_modules/lodash-es/_root.js").Z["__core-js_shared__"];var r,n=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";const a=function(e){return!!n&&n in e};var c=s("./node_modules/lodash-es/isObject.js"),l=s("./node_modules/lodash-es/_toSource.js"),d=/^\[object .+?Constructor\]$/,h=Function.prototype,u=Object.prototype,p=h.toString,g=u.hasOwnProperty,f=RegExp("^"+p.call(g).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const m=function(e){return!(!(0,c.Z)(e)||a(e))&&((0,o.Z)(e)?f:d).test((0,l.Z)(e))};const k=function(e,t){return null==e?void 0:e[t]};const b=function(e,t){var s=k(e,t);return m(s)?s:void 0}},"./node_modules/lodash-es/_getPrototype.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=(0,s("./node_modules/lodash-es/_overArg.js").Z)(Object.getPrototypeOf,Object)},"./node_modules/lodash-es/_getSymbols.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});const o=function(e,t){for(var s=-1,o=null==e?0:e.length,i=0,r=[];++s<o;){var n=e[s];t(n,s,e)&&(r[i++]=n)}return r};var i=s("./node_modules/lodash-es/stubArray.js"),r=Object.prototype.propertyIsEnumerable,n=Object.getOwnPropertySymbols;const a=n?function(e){return null==e?[]:(e=Object(e),o(n(e),(function(t){return r.call(e,t)})))}:i.Z},"./node_modules/lodash-es/_getTag.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>Z});var o=s("./node_modules/lodash-es/_getNative.js"),i=s("./node_modules/lodash-es/_root.js");const r=(0,o.Z)(i.Z,"DataView");var n=s("./node_modules/lodash-es/_Map.js");const a=(0,o.Z)(i.Z,"Promise");const c=(0,o.Z)(i.Z,"Set");const l=(0,o.Z)(i.Z,"WeakMap");var d=s("./node_modules/lodash-es/_baseGetTag.js"),h=s("./node_modules/lodash-es/_toSource.js"),u="[object Map]",p="[object Promise]",g="[object Set]",f="[object WeakMap]",m="[object DataView]",k=(0,h.Z)(r),b=(0,h.Z)(n.Z),_=(0,h.Z)(a),w=(0,h.Z)(c),v=(0,h.Z)(l),y=d.Z;(r&&y(new r(new ArrayBuffer(1)))!=m||n.Z&&y(new n.Z)!=u||a&&y(a.resolve())!=p||c&&y(new c)!=g||l&&y(new l)!=f)&&(y=function(e){var t=(0,d.Z)(e),s="[object Object]"==t?e.constructor:void 0,o=s?(0,h.Z)(s):"";if(o)switch(o){case k:return m;case b:return u;case _:return p;case w:return g;case v:return f}return t});const Z=y},"./node_modules/lodash-es/_initCloneObject.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./node_modules/lodash-es/isObject.js"),i=Object.create;const r=function(){function e(){}return function(t){if(!(0,o.Z)(t))return{};if(i)return i(t);e.prototype=t;var s=new e;return e.prototype=void 0,s}}();var n=s("./node_modules/lodash-es/_getPrototype.js"),a=s("./node_modules/lodash-es/_isPrototype.js");const c=function(e){return"function"!=typeof e.constructor||(0,a.Z)(e)?{}:r((0,n.Z)(e))}},"./node_modules/lodash-es/_isIndex.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=/^(?:0|[1-9]\d*)$/;const i=function(e,t){var s=typeof e;return!!(t=null==t?9007199254740991:t)&&("number"==s||"symbol"!=s&&o.test(e))&&e>-1&&e%1==0&&e<t}},"./node_modules/lodash-es/_isPrototype.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=Object.prototype;const i=function(e){var t=e&&e.constructor;return e===("function"==typeof t&&t.prototype||o)}},"./node_modules/lodash-es/_nodeUtil.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>a});var o=s("./node_modules/lodash-es/_freeGlobal.js"),i="object"==typeof exports&&exports&&!exports.nodeType&&exports,r=i&&"object"==typeof module&&module&&!module.nodeType&&module,n=r&&r.exports===i&&o.Z.process;const a=function(){try{var e=r&&r.require&&r.require("util").types;return e||n&&n.binding&&n.binding("util")}catch(e){}}()},"./node_modules/lodash-es/_overArg.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e,t){return function(s){return e(t(s))}}},"./node_modules/lodash-es/_root.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_freeGlobal.js"),i="object"==typeof self&&self&&self.Object===Object&&self;const r=o.Z||i||Function("return this")()},"./node_modules/lodash-es/_toSource.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=Function.prototype.toString;const i=function(e){if(null!=e){try{return o.call(e)}catch(e){}try{return e+""}catch(e){}}return""}},"./node_modules/lodash-es/assignIn.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>n});var o=s("./node_modules/lodash-es/_copyObject.js"),i=s("./node_modules/lodash-es/_createAssigner.js"),r=s("./node_modules/lodash-es/keysIn.js");const n=(0,i.Z)((function(e,t){(0,o.Z)(t,(0,r.Z)(t),e)}))},"./node_modules/lodash-es/clone.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_baseClone.js");const i=function(e){return(0,o.Z)(e,4)}},"./node_modules/lodash-es/cloneDeep.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_baseClone.js");const i=function(e){return(0,o.Z)(e,5)}},"./node_modules/lodash-es/cloneDeepWith.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>i});var o=s("./node_modules/lodash-es/_baseClone.js");const i=function(e,t){return t="function"==typeof t?t:void 0,(0,o.Z)(e,5,t)}},"./node_modules/lodash-es/debounce.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>b});var o=s("./node_modules/lodash-es/isObject.js"),i=s("./node_modules/lodash-es/_root.js");const r=function(){return i.Z.Date.now()};var n=/\s/;const a=function(e){for(var t=e.length;t--&&n.test(e.charAt(t)););return t};var c=/^\s+/;const l=function(e){return e?e.slice(0,a(e)+1).replace(c,""):e};var d=s("./node_modules/lodash-es/isSymbol.js"),h=/^[-+]0x[0-9a-f]+$/i,u=/^0b[01]+$/i,p=/^0o[0-7]+$/i,g=parseInt;const f=function(e){if("number"==typeof e)return e;if((0,d.Z)(e))return NaN;if((0,o.Z)(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=(0,o.Z)(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=l(e);var s=u.test(e);return s||p.test(e)?g(e.slice(2),s?2:8):h.test(e)?NaN:+e};var m=Math.max,k=Math.min;const b=function(e,t,s){var i,n,a,c,l,d,h=0,u=!1,p=!1,g=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function b(t){var s=i,o=n;return i=n=void 0,h=t,c=e.apply(o,s)}function _(e){return h=e,l=setTimeout(v,t),u?b(e):c}function w(e){var s=e-d;return void 0===d||s>=t||s<0||p&&e-h>=a}function v(){var e=r();if(w(e))return y(e);l=setTimeout(v,function(e){var s=t-(e-d);return p?k(s,a-(e-h)):s}(e))}function y(e){return l=void 0,g&&i?b(e):(i=n=void 0,c)}function Z(){var e=r(),s=w(e);if(i=arguments,n=this,d=e,s){if(void 0===l)return _(d);if(p)return clearTimeout(l),l=setTimeout(v,t),b(d)}return void 0===l&&(l=setTimeout(v,t)),c}return t=f(t)||0,(0,o.Z)(s)&&(u=!!s.leading,a=(p="maxWait"in s)?m(f(s.maxWait)||0,t):a,g="trailing"in s?!!s.trailing:g),Z.cancel=function(){void 0!==l&&clearTimeout(l),h=0,i=d=n=l=void 0},Z.flush=function(){return void 0===l?c:y(r())},Z}},"./node_modules/lodash-es/eq.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e,t){return e===t||e!=e&&t!=t}},"./node_modules/lodash-es/isArguments.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/isObjectLike.js");const r=function(e){return(0,i.Z)(e)&&"[object Arguments]"==(0,o.Z)(e)};var n=Object.prototype,a=n.hasOwnProperty,c=n.propertyIsEnumerable;const l=r(function(){return arguments}())?r:function(e){return(0,i.Z)(e)&&a.call(e,"callee")&&!c.call(e,"callee")}},"./node_modules/lodash-es/isArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=Array.isArray},"./node_modules/lodash-es/isArrayLike.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/isFunction.js"),i=s("./node_modules/lodash-es/isLength.js");const r=function(e){return null!=e&&(0,i.Z)(e.length)&&!(0,o.Z)(e)}},"./node_modules/lodash-es/isBuffer.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>c});var o=s("./node_modules/lodash-es/_root.js");const i=function(){return!1};var r="object"==typeof exports&&exports&&!exports.nodeType&&exports,n=r&&"object"==typeof module&&module&&!module.nodeType&&module,a=n&&n.exports===r?o.Z.Buffer:void 0;const c=(a?a.isBuffer:void 0)||i},"./node_modules/lodash-es/isElement.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/isObjectLike.js"),i=s("./node_modules/lodash-es/isPlainObject.js");const r=function(e){return(0,o.Z)(e)&&1===e.nodeType&&!(0,i.Z)(e)}},"./node_modules/lodash-es/isFunction.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/isObject.js");const r=function(e){if(!(0,i.Z)(e))return!1;var t=(0,o.Z)(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},"./node_modules/lodash-es/isLength.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=9007199254740991}},"./node_modules/lodash-es/isObject.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},"./node_modules/lodash-es/isObjectLike.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(e){return null!=e&&"object"==typeof e}},"./node_modules/lodash-es/isPlainObject.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/_getPrototype.js"),r=s("./node_modules/lodash-es/isObjectLike.js"),n=Function.prototype,a=Object.prototype,c=n.toString,l=a.hasOwnProperty,d=c.call(Object);const h=function(e){if(!(0,r.Z)(e)||"[object Object]"!=(0,o.Z)(e))return!1;var t=(0,i.Z)(e);if(null===t)return!0;var s=l.call(t,"constructor")&&t.constructor;return"function"==typeof s&&s instanceof s&&c.call(s)==d}},"./node_modules/lodash-es/isSymbol.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/isObjectLike.js");const r=function(e){return"symbol"==typeof e||(0,i.Z)(e)&&"[object Symbol]"==(0,o.Z)(e)}},"./node_modules/lodash-es/isTypedArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>h});var o=s("./node_modules/lodash-es/_baseGetTag.js"),i=s("./node_modules/lodash-es/isLength.js"),r=s("./node_modules/lodash-es/isObjectLike.js"),n={};n["[object Float32Array]"]=n["[object Float64Array]"]=n["[object Int8Array]"]=n["[object Int16Array]"]=n["[object Int32Array]"]=n["[object Uint8Array]"]=n["[object Uint8ClampedArray]"]=n["[object Uint16Array]"]=n["[object Uint32Array]"]=!0,n["[object Arguments]"]=n["[object Array]"]=n["[object ArrayBuffer]"]=n["[object Boolean]"]=n["[object DataView]"]=n["[object Date]"]=n["[object Error]"]=n["[object Function]"]=n["[object Map]"]=n["[object Number]"]=n["[object Object]"]=n["[object RegExp]"]=n["[object Set]"]=n["[object String]"]=n["[object WeakMap]"]=!1;const a=function(e){return(0,r.Z)(e)&&(0,i.Z)(e.length)&&!!n[(0,o.Z)(e)]};var c=s("./node_modules/lodash-es/_baseUnary.js"),l=s("./node_modules/lodash-es/_nodeUtil.js"),d=l.Z&&l.Z.isTypedArray;const h=d?(0,c.Z)(d):a},"./node_modules/lodash-es/keys.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var o=s("./node_modules/lodash-es/_arrayLikeKeys.js"),i=s("./node_modules/lodash-es/_isPrototype.js");const r=(0,s("./node_modules/lodash-es/_overArg.js").Z)(Object.keys,Object);var n=Object.prototype.hasOwnProperty;const a=function(e){if(!(0,i.Z)(e))return r(e);var t=[];for(var s in Object(e))n.call(e,s)&&"constructor"!=s&&t.push(s);return t};var c=s("./node_modules/lodash-es/isArrayLike.js");const l=function(e){return(0,c.Z)(e)?(0,o.Z)(e):a(e)}},"./node_modules/lodash-es/keysIn.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});var o=s("./node_modules/lodash-es/_arrayLikeKeys.js"),i=s("./node_modules/lodash-es/isObject.js"),r=s("./node_modules/lodash-es/_isPrototype.js");const n=function(e){var t=[];if(null!=e)for(var s in Object(e))t.push(s);return t};var a=Object.prototype.hasOwnProperty;const c=function(e){if(!(0,i.Z)(e))return n(e);var t=(0,r.Z)(e),s=[];for(var o in e)("constructor"!=o||!t&&a.call(e,o))&&s.push(o);return s};var l=s("./node_modules/lodash-es/isArrayLike.js");const d=function(e){return(0,l.Z)(e)?(0,o.Z)(e,!0):c(e)}},"./node_modules/lodash-es/stubArray.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>o});const o=function(){return[]}},"./node_modules/lodash-es/throttle.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>r});var o=s("./node_modules/lodash-es/debounce.js"),i=s("./node_modules/lodash-es/isObject.js");const r=function(e,t,s){var r=!0,n=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return(0,i.Z)(s)&&(r="leading"in s?!!s.leading:r,n="trailing"in s?!!s.trailing:n),(0,o.Z)(e,t,{leading:r,maxWait:t,trailing:n})}},"./node_modules/lodash-es/toString.js":(e,t,s)=>{"use strict";s.d(t,{Z:()=>d});var o=s("./node_modules/lodash-es/_Symbol.js");const i=function(e,t){for(var s=-1,o=null==e?0:e.length,i=Array(o);++s<o;)i[s]=t(e[s],s,e);return i};var r=s("./node_modules/lodash-es/isArray.js"),n=s("./node_modules/lodash-es/isSymbol.js"),a=o.Z?o.Z.prototype:void 0,c=a?a.toString:void 0;const l=function e(t){if("string"==typeof t)return t;if((0,r.Z)(t))return i(t,e)+"";if((0,n.Z)(t))return c?c.call(t):"";var s=t+"";return"0"==s&&1/t==-Infinity?"-0":s};const d=function(e){return null==e?"":l(e)}}},t={};function s(o){var i=t[o];if(void 0!==i)return i.exports;var r=t[o]={id:o,exports:{}};return e[o](r,r.exports,s),r.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var o in t)s.o(t,o)&&!s.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nc=void 0;var o=s("?7cdd");(window.CKEditor5=window.CKEditor5||{}).dll=o})(),function(e){e.CKEditor5=e.CKEditor5||{};const t=["utils","core","engine","ui","clipboard","enter","paragraph","select-all","typing","undo","upload","widget"];for(const s of t){const t=s.replace(/-([a-z])/g,((e,t)=>t.toUpperCase()));e.CKEditor5[t]=e.CKEditor5.dll(`./src/${s}.js`)}}(window); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ar.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ar.js index b2088994468afdc2c885bdd29faa4d6e64e69fc3..6593d30edf3aebac109bd474233b5a664197a69e 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ar.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ar.js @@ -1 +1 @@ -!function(e){const r=e.ar=e.ar||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 من %1",Aquamarine:"أخضر زبرجد",Black:"أسود",Blue:"أزرق",Cancel:"إلغاء","Cannot upload file:":"لا يمكن رفع الملف:","Dim grey":"رمادي خافت","Dropdown toolbar":"شريط أدوات القائمة المنسدلة","Edit block":"كتلة التحرير","Editor editing area: %0":"منطقة تحرير المحرر: %0","Editor toolbar":"شريط أدوات المحرر",Green:"أخضر",Grey:"رمادي","Insert paragraph after block":"إدراج فقرة بعد الكتلة","Insert paragraph before block":"إدراج فقرة قبل الكتلة","Light blue":"أزرق فاتح","Light green":"أخضر فاتح","Light grey":"رمادي فاتح",Next:"التالي",Orange:"برتقالي",Previous:"السابق",Purple:"أرجواني",Red:"أحمر",Redo:"إعادة","Remove color":"إزالة اللون","Restore default":"استعادة الافتراضي","Rich Text Editor":"معالج نصوص","Rich Text Editor. Editing area: %0":"محرر النصوص المنسّقة. منطقة التحرير: %0",Save:"حفظ","Select all":"تحديد الكل","Show more items":"عرض المزيد من العناصر",Turquoise:"فيروزي",Undo:"تراجع","Upload in progress":"جاري الرفع",White:"أبيض","Widget toolbar":"شريط أدوات الواجهة",Yellow:"أصفر"}),r.getPluralForm=function(e){return 0==e?0:1==e?1:2==e?2:e%100>=3&&e%100<=10?3:e%100>=11&&e%100<=99?4:5}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.ar=o.ar||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 من %1",Aquamarine:"أخضر زبرجد",Black:"أسود",Blue:"أزرق",Cancel:"إلغاء","Cannot upload file:":"لا يمكن رفع الملف:","Dim grey":"رمادي خافت","Dropdown toolbar":"شريط أدوات القائمة المنسدلة","Edit block":"كتلة التحرير","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"منطقة تحرير المحرر: %0","Editor toolbar":"شريط أدوات المحرر",Green:"أخضر",Grey:"رمادي","Insert paragraph after block":"إدراج فقرة بعد الكتلة","Insert paragraph before block":"إدراج فقرة قبل الكتلة","Light blue":"أزرق فاتح","Light green":"أخضر فاتح","Light grey":"رمادي فاتح",Next:"التالي",Orange:"برتقالي",Previous:"السابق",Purple:"أرجواني",Red:"أحمر",Redo:"إعادة","Remove color":"إزالة اللون","Restore default":"استعادة الافتراضي","Rich Text Editor":"معالج نصوص","Rich Text Editor. Editing area: %0":"محرر النصوص المنسّقة. منطقة التحرير: %0",Save:"حفظ","Select all":"تحديد الكل","Show more items":"عرض المزيد من العناصر",Turquoise:"فيروزي",Undo:"تراجع","Upload in progress":"جاري الرفع",White:"أبيض","Widget toolbar":"شريط أدوات الواجهة",Yellow:"أصفر"}),e.getPluralForm=function(o){return 0==o?0:1==o?1:2==o?2:o%100>=3&&o%100<=10?3:o%100>=11&&o%100<=99?4:5}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ast.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ast.js index f8f114e4c3b6d3d98b9cf52adda208a818583912..5ad481f676291a5f0120c0a12f3dcdd28de6f2dc 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ast.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ast.js @@ -1 +1 @@ -!function(e){const r=e.ast=e.ast||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Encaboxar","Cannot upload file:":"","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Refacer","Remove color":"","Restore default":"","Rich Text Editor":"Editor de testu arriquecíu","Rich Text Editor. Editing area: %0":"",Save:"Guardar","Show more items":"",Turquoise:"",Undo:"Desfacer",White:"",Yellow:""}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const o=e.ast=e.ast||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Encaboxar","Cannot upload file:":"","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Refacer","Remove color":"","Restore default":"","Rich Text Editor":"Editor de testu arriquecíu","Rich Text Editor. Editing area: %0":"",Save:"Guardar","Show more items":"",Turquoise:"",Undo:"Desfacer",White:"",Yellow:""}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/az.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/az.js index 4aa41e99b261736f70700c99825374c4f15a2f75..3556b32ef0afc7563f03b6e7a1fa489ceb759849 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/az.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/az.js @@ -1 +1 @@ -!function(a){const e=a.az=a.az||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%1-dən %0",Aquamarine:"Akvamarin",Black:"Qara",Blue:"Mavi",Cancel:"İmtina et","Cannot upload file:":"Fayl yüklənə bilmir","Dim grey":"Tünd boz","Dropdown toolbar":"Açılan paneli","Edit block":"Redaktə etmək bloku","Editor editing area: %0":"","Editor toolbar":"Redaktorun paneli",Green:"Yaşıl",Grey:"Boz","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"Açıq mavi","Light green":"Açıq yaşıl","Light grey":"Açıq boz",Next:"Növbəti",Orange:"Narıncı",Previous:"Əvvəlki",Purple:"Bənövşəyi",Red:"Qırmızı",Redo:"Təkrar et","Remove color":"Rəngi ləğv et","Restore default":"","Rich Text Editor":"Rich Text Redaktoru","Rich Text Editor. Editing area: %0":"",Save:"Yadda saxla","Show more items":"Daha çox əşyanı göstərin",Turquoise:"Firuzəyi",Undo:"İmtina et","Upload in progress":"Yüklənir",White:"Ağ","Widget toolbar":"Vidgetin paneli",Yellow:"Sarı"}),e.getPluralForm=function(a){return 1!=a}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(a){const e=a.az=a.az||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%1-dən %0",Aquamarine:"Akvamarin",Black:"Qara",Blue:"Mavi",Cancel:"İmtina et","Cannot upload file:":"Fayl yüklənə bilmir","Dim grey":"Tünd boz","Dropdown toolbar":"Açılan paneli","Edit block":"Redaktə etmək bloku","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"Redaktorun paneli",Green:"Yaşıl",Grey:"Boz","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"Açıq mavi","Light green":"Açıq yaşıl","Light grey":"Açıq boz",Next:"Növbəti",Orange:"Narıncı",Previous:"Əvvəlki",Purple:"Bənövşəyi",Red:"Qırmızı",Redo:"Təkrar et","Remove color":"Rəngi ləğv et","Restore default":"","Rich Text Editor":"Rich Text Redaktoru","Rich Text Editor. Editing area: %0":"",Save:"Yadda saxla","Show more items":"Daha çox əşyanı göstərin",Turquoise:"Firuzəyi",Undo:"İmtina et","Upload in progress":"Yüklənir",White:"Ağ","Widget toolbar":"Vidgetin paneli",Yellow:"Sarı"}),e.getPluralForm=function(a){return 1!=a}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/bg.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/bg.js index 8cdc6a919ca188e68e60c58bb73b9f89aa30a4fc..1087a23d0748a3e1edba1506422fcac4641ba908 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/bg.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/bg.js @@ -1 +1 @@ -!function(e){const o=e.bg=e.bg||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 от %1",Aquamarine:"Аквамарин",Black:"Черен",Blue:"Син",Cancel:"Отказ","Cannot upload file:":"Не може да качи файл:","Dim grey":"Тъмно сив","Dropdown toolbar":"Лента с падащо меню","Edit block":"Редактирай блок","Editor editing area: %0":"Зона за редактиране на редактора: %0","Editor toolbar":"Лента за редакция",Green:"Зелен",Grey:"Сив","Insert paragraph after block":"Въведи параграф след блока","Insert paragraph before block":"Въведи параграф преди блока","Light blue":"Светло син","Light green":"Светло зелен","Light grey":"Светло сив",Next:"Следващ",Orange:"Оранжев",Previous:"Предишен",Purple:"Лилав",Red:"Червен",Redo:"Повтори","Remove color":"Премахни цвят","Restore default":"Възстанови първоначалните настройки","Rich Text Editor":"Богат текстов редактор","Rich Text Editor. Editing area: %0":"Rich Text Editor. Зона за редактиране: %0",Save:"Запазване","Select all":"Избери всички","Show more items":"Покажи повече единици",Turquoise:"Тюркоазен",Undo:"Отмени","Upload in progress":"Качването е в процес",White:"Бял","Widget toolbar":"Лента с помощни средства",Yellow:"Жълт"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.bg=o.bg||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 от %1",Aquamarine:"Аквамарин",Black:"Черен",Blue:"Син",Cancel:"Отказ","Cannot upload file:":"Не може да качи файл:","Dim grey":"Тъмно сив","Dropdown toolbar":"Лента с падащо меню","Edit block":"Редактирай блок","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Зона за редактиране на редактора: %0","Editor toolbar":"Лента за редакция",Green:"Зелен",Grey:"Сив","Insert paragraph after block":"Въведи параграф след блока","Insert paragraph before block":"Въведи параграф преди блока","Light blue":"Светло син","Light green":"Светло зелен","Light grey":"Светло сив",Next:"Следващ",Orange:"Оранжев",Previous:"Предишен",Purple:"Лилав",Red:"Червен",Redo:"Повтори","Remove color":"Премахни цвят","Restore default":"Възстанови първоначалните настройки","Rich Text Editor":"Богат текстов редактор","Rich Text Editor. Editing area: %0":"Rich Text Editor. Зона за редактиране: %0",Save:"Запазване","Select all":"Избери всички","Show more items":"Покажи повече единици",Turquoise:"Тюркоазен",Undo:"Отмени","Upload in progress":"Качването е в процес",White:"Бял","Widget toolbar":"Лента с помощни средства",Yellow:"Жълт"}),e.getPluralForm=function(o){return 1!=o}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/bn.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/bn.js index 5589aee93f89d011d444757e91447bdd2aa1526f..740eb375295858dda62d0e07f67b41b65f4921c6 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/bn.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/bn.js @@ -1 +1 @@ -!function(e){const o=e.bn=e.bn||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 এর %1",Aquamarine:"ফেকাশে সবুজবর্ণ",Black:"কালো",Blue:"নীল ",Cancel:"বাতিল করুন","Cannot upload file:":"ফাইল আপলোড করা যাবে নাঃ","Dim grey":"আবছা ধূসর","Dropdown toolbar":"ড্রপডাউন টুলবার","Edit block":"এডিট ব্লক","Editor editing area: %0":"সম্পাদক সম্পাদনার ক্ষেত্র: %0","Editor toolbar":"সম্পাদক টুলবার",Green:"সবুজ",Grey:"ধূসর","Insert paragraph after block":"ব্লকের পর অনুচ্ছেদ ঢোকান","Insert paragraph before block":"ব্লক করার আগে অনুচ্ছেদ ঢোকান","Light blue":"হালকা নীল","Light green":"হালকা সবুজ","Light grey":"হালকা ধূসর",Next:"পরবর্তী",Orange:"কমলা",Previous:"পূর্ববর্তী",Purple:"বেগুনি",Red:"লাল",Redo:"রেডো","Remove color":"রং মুছে ফেলুন","Restore default":"পূর্বাবস্থায় ফিরিয়ে আনুন","Rich Text Editor":"রিচ টেক্সট এডিটর","Rich Text Editor. Editing area: %0":"রিচ টেক্সট এডিটর। সম্পাদনার ক্ষেত্র: %0",Save:"সংরক্ষণ করুন","Select all":"সব নির্বাচন করুন","Show more items":"আরও আইটেম দেখান",Turquoise:"ফিরোজা",Undo:"পূর্বাবস্থায় ফেরান","Upload in progress":"আপলোড চলছে",White:"সাদা","Widget toolbar":"উইজেট টুলবার",Yellow:"হলুদ "}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.bn=o.bn||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 এর %1",Aquamarine:"ফেকাশে সবুজবর্ণ",Black:"কালো",Blue:"নীল ",Cancel:"বাতিল করুন","Cannot upload file:":"ফাইল আপলোড করা যাবে নাঃ","Dim grey":"আবছা ধূসর","Dropdown toolbar":"ড্রপডাউন টুলবার","Edit block":"এডিট ব্লক","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"সম্পাদক সম্পাদনার ক্ষেত্র: %0","Editor toolbar":"সম্পাদক টুলবার",Green:"সবুজ",Grey:"ধূসর","Insert paragraph after block":"ব্লকের পর অনুচ্ছেদ ঢোকান","Insert paragraph before block":"ব্লক করার আগে অনুচ্ছেদ ঢোকান","Light blue":"হালকা নীল","Light green":"হালকা সবুজ","Light grey":"হালকা ধূসর",Next:"পরবর্তী",Orange:"কমলা",Previous:"পূর্ববর্তী",Purple:"বেগুনি",Red:"লাল",Redo:"রেডো","Remove color":"রং মুছে ফেলুন","Restore default":"পূর্বাবস্থায় ফিরিয়ে আনুন","Rich Text Editor":"রিচ টেক্সট এডিটর","Rich Text Editor. Editing area: %0":"রিচ টেক্সট এডিটর। সম্পাদনার ক্ষেত্র: %0",Save:"সংরক্ষণ করুন","Select all":"সব নির্বাচন করুন","Show more items":"আরও আইটেম দেখান",Turquoise:"ফিরোজা",Undo:"পূর্বাবস্থায় ফেরান","Upload in progress":"আপলোড চলছে",White:"সাদা","Widget toolbar":"উইজেট টুলবার",Yellow:"হলুদ "}),e.getPluralForm=function(o){return 1!=o}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ca.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ca.js index 5cbfb30d4e0907606de2e3acbcc7155ec18602d5..215a5cc2b265b0643a11a99f2ebd5816803a6d25 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ca.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ca.js @@ -1 +1 @@ -!function(e){const r=e.ca=e.ca||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Aiguamarina",Black:"Negre",Blue:"Blau",Cancel:"Cancel·lar","Cannot upload file:":"No es pot pujar l'arxiu:","Dim grey":"Gris fosc","Dropdown toolbar":"Barra d'eines desplegable","Edit block":"Editar bloc","Editor editing area: %0":"Àrea d'edició d'editor: %0","Editor toolbar":"Barra d'eines de l'editor",Green:"Verd",Grey:"Gris","Insert paragraph after block":"Inserir un paràgraf després del bloc","Insert paragraph before block":"Inserir un paràgraf abans del bloc","Light blue":"Blau clar","Light green":"Verd clar","Light grey":"Gris clar",Next:"Següent",Orange:"Taronja",Previous:"Anterior",Purple:"Lila",Red:"Vermell",Redo:"Refer","Remove color":"Eliminar el color","Restore default":"Restaurar el valor predeterminat","Rich Text Editor":"Editor de text enriquit","Rich Text Editor. Editing area: %0":"Editor de text enriquit. Àrea d'edició: %0",Save:"Desar","Select all":"Seleccionar-ho tot","Show more items":"Mostrar més elements",Turquoise:"Turquesa",Undo:"Desfer","Upload in progress":"Carrega en curs",White:"Blanc","Widget toolbar":"Barra d'eines de ginys",Yellow:"Groc"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const r=e.ca=e.ca||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Aiguamarina",Black:"Negre",Blue:"Blau",Cancel:"Cancel·lar","Cannot upload file:":"No es pot pujar l'arxiu:","Dim grey":"Gris fosc","Dropdown toolbar":"Barra d'eines desplegable","Edit block":"Editar bloc","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Àrea d'edició d'editor: %0","Editor toolbar":"Barra d'eines de l'editor",Green:"Verd",Grey:"Gris","Insert paragraph after block":"Inserir un paràgraf després del bloc","Insert paragraph before block":"Inserir un paràgraf abans del bloc","Light blue":"Blau clar","Light green":"Verd clar","Light grey":"Gris clar",Next:"Següent",Orange:"Taronja",Previous:"Anterior",Purple:"Lila",Red:"Vermell",Redo:"Refer","Remove color":"Eliminar el color","Restore default":"Restaurar el valor predeterminat","Rich Text Editor":"Editor de text enriquit","Rich Text Editor. Editing area: %0":"Editor de text enriquit. Àrea d'edició: %0",Save:"Desar","Select all":"Seleccionar-ho tot","Show more items":"Mostrar més elements",Turquoise:"Turquesa",Undo:"Desfer","Upload in progress":"Carrega en curs",White:"Blanc","Widget toolbar":"Barra d'eines de ginys",Yellow:"Groc"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/cs.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/cs.js index 52eb03e9a7625ec6d7e5f18f52ffc66be3a52027..45caf02d332e821675097454fcc5b2005421d67b 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/cs.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/cs.js @@ -1 +1 @@ -!function(o){const e=o.cs=o.cs||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 z %1",Aquamarine:"Akvamarínová",Black:"Černá",Blue:"Modrá",Cancel:"Zrušit","Cannot upload file:":"Soubor nelze nahrát:","Dim grey":"Tmavě šedá","Dropdown toolbar":"Rozbalovací panel nástrojů","Edit block":"Upravit blok","Editor editing area: %0":"Editační oblast editoru: %0","Editor toolbar":"Panel nástrojů editoru",Green:"Zelená",Grey:"Šedá","Insert paragraph after block":"Vložte odstavec za blok","Insert paragraph before block":"Vložte odstavec před blok","Light blue":"Světle modrá","Light green":"Světle zelená","Light grey":"Světle šedá",Next:"Další",Orange:"Oranžová",Previous:"Předchozí",Purple:"Fialová",Red:"Červená",Redo:"Znovu","Remove color":"Odstranit barvu","Restore default":"Obnovit výchozí","Rich Text Editor":"Textový editor","Rich Text Editor. Editing area: %0":"Editační oblast rich text editoru: %0",Save:"Uložit","Select all":"Vybrat vše","Show more items":"Zobrazit další položky",Turquoise:"Tyrkysová",Undo:"Zpět","Upload in progress":"Probíhá nahrávání",White:"Bílá","Widget toolbar":"Panel nástrojů ovládacího prvku",Yellow:"Žlutá"}),e.getPluralForm=function(o){return 1==o&&o%1==0?0:o>=2&&o<=4&&o%1==0?1:o%1!=0?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.cs=o.cs||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 z %1",Aquamarine:"Akvamarínová",Black:"Černá",Blue:"Modrá",Cancel:"Zrušit","Cannot upload file:":"Soubor nelze nahrát:","Dim grey":"Tmavě šedá","Dropdown toolbar":"Rozbalovací panel nástrojů","Edit block":"Upravit blok","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Editační oblast editoru: %0","Editor toolbar":"Panel nástrojů editoru",Green:"Zelená",Grey:"Šedá","Insert paragraph after block":"Vložte odstavec za blok","Insert paragraph before block":"Vložte odstavec před blok","Light blue":"Světle modrá","Light green":"Světle zelená","Light grey":"Světle šedá",Next:"Další",Orange:"Oranžová",Previous:"Předchozí",Purple:"Fialová",Red:"Červená",Redo:"Znovu","Remove color":"Odstranit barvu","Restore default":"Obnovit výchozí","Rich Text Editor":"Textový editor","Rich Text Editor. Editing area: %0":"Editační oblast rich text editoru: %0",Save:"Uložit","Select all":"Vybrat vše","Show more items":"Zobrazit další položky",Turquoise:"Tyrkysová",Undo:"Zpět","Upload in progress":"Probíhá nahrávání",White:"Bílá","Widget toolbar":"Panel nástrojů ovládacího prvku",Yellow:"Žlutá"}),e.getPluralForm=function(o){return 1==o&&o%1==0?0:o>=2&&o<=4&&o%1==0?1:o%1!=0?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/da.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/da.js index 08ff8496f687b619f8e9f52d4bb7168128d14dd1..a2f701288bb63a9ce5ceb2ce38acb5b88ce432ef 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/da.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/da.js @@ -1 +1 @@ -!function(e){const r=e.da=e.da||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 af %1",Aquamarine:"Marineblå",Black:"Sort",Blue:"Blå",Cancel:"Annullér","Cannot upload file:":"Kan ikke uploade fil:","Dim grey":"Dunkel grå","Dropdown toolbar":"Dropdown værktøjslinje","Edit block":"Redigér blok","Editor editing area: %0":"Redigeringsområde: %0","Editor toolbar":"Editor værktøjslinje",Green:"Grøn",Grey:"Grå","Insert paragraph after block":"Indsæt paragraf efter blok","Insert paragraph before block":"Indsæt paragraf før blok","Light blue":"Lys blå","Light green":"Lys grøn","Light grey":"Lys grå",Next:"Næste",Orange:"Orange",Previous:"Forrige",Purple:"Lilla",Red:"Rød",Redo:"Gentag","Remove color":"Fjern farve","Restore default":"Nulstil","Rich Text Editor":"Wysiwyg editor","Rich Text Editor. Editing area: %0":"Rich text redigering. Redigeringsområde: %0",Save:"Gem","Select all":"Vælg alt","Show more items":"Vis flere emner",Turquoise:"Turkis",Undo:"Fortryd","Upload in progress":"Upload i gang",White:"Hvid","Widget toolbar":"Widget værktøjslinje",Yellow:"Gyl"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const r=e.da=e.da||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 af %1",Aquamarine:"Marineblå",Black:"Sort",Blue:"Blå",Cancel:"Annullér","Cannot upload file:":"Kan ikke uploade fil:","Dim grey":"Dunkel grå","Dropdown toolbar":"Dropdown værktøjslinje","Edit block":"Redigér blok","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Redigeringsområde: %0","Editor toolbar":"Editor værktøjslinje",Green:"Grøn",Grey:"Grå","Insert paragraph after block":"Indsæt paragraf efter blok","Insert paragraph before block":"Indsæt paragraf før blok","Light blue":"Lys blå","Light green":"Lys grøn","Light grey":"Lys grå",Next:"Næste",Orange:"Orange",Previous:"Forrige",Purple:"Lilla",Red:"Rød",Redo:"Gentag","Remove color":"Fjern farve","Restore default":"Nulstil","Rich Text Editor":"Wysiwyg editor","Rich Text Editor. Editing area: %0":"Rich text redigering. Redigeringsområde: %0",Save:"Gem","Select all":"Vælg alt","Show more items":"Vis flere emner",Turquoise:"Turkis",Undo:"Fortryd","Upload in progress":"Upload i gang",White:"Hvid","Widget toolbar":"Widget værktøjslinje",Yellow:"Gyl"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/de-ch.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/de-ch.js index 444b97f73ff3aa42eb36a56d24e48d1f31268042..906d2f4fa1f0740a93cfc46c6c464ab76b82d1ed 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/de-ch.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/de-ch.js @@ -1 +1 @@ -!function(e){const r=e["de-ch"]=e["de-ch"]||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Abbrechen","Cannot upload file:":"Datei kann nicht hochgeladen werden:","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Insert paragraph after block":"Absatz nach Block einfügen","Insert paragraph before block":"Absatz vor Block einfügen","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Wiederherstellen","Remove color":"Farbe entfernen","Restore default":"","Rich Text Editor":"Rich-Text-Edito","Rich Text Editor. Editing area: %0":"",Save:"Speichern","Select all":"Alles auswählen","Show more items":"",Turquoise:"",Undo:"Rückgängig","Upload in progress":"Upload läuft",White:"","Widget toolbar":"Widget Werkzeugleiste",Yellow:""}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const o=e["de-ch"]=e["de-ch"]||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Abbrechen","Cannot upload file:":"Datei kann nicht hochgeladen werden:","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Insert paragraph after block":"Absatz nach Block einfügen","Insert paragraph before block":"Absatz vor Block einfügen","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Wiederherstellen","Remove color":"Farbe entfernen","Restore default":"","Rich Text Editor":"Rich-Text-Edito","Rich Text Editor. Editing area: %0":"",Save:"Speichern","Select all":"Alles auswählen","Show more items":"",Turquoise:"",Undo:"Rückgängig","Upload in progress":"Upload läuft",White:"","Widget toolbar":"Widget Werkzeugleiste",Yellow:""}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/de.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/de.js index f95e8b7c967c1daed4bab324b0a80ba412fc5c21..589d2c4f8cdd39518f1732360687ff6329a79b20 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/de.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/de.js @@ -1 +1 @@ -!function(e){const r=e.de=e.de||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 von %1",Aquamarine:"Aquamarinblau",Black:"Schwarz",Blue:"Blau",Cancel:"Abbrechen","Cannot upload file:":"Die Datei kann nicht hochgeladen werden:","Dim grey":"Dunkelgrau","Dropdown toolbar":"Dropdown-Liste Werkzeugleiste","Edit block":"Absatz bearbeiten","Editor editing area: %0":"Bearbeitungsbereich des Editors: %0","Editor toolbar":"Editor Werkzeugleiste",Green:"Grün",Grey:"Grau","Insert paragraph after block":"Absatz nach Block einfügen","Insert paragraph before block":"Absatz vor Block einfügen","Light blue":"Hellblau","Light green":"Hellgrün","Light grey":"Hellgrau",Next:"Nächste",Orange:"Orange",Previous:"vorherige",Purple:"Violett",Red:"Rot",Redo:"Wiederherstellen","Remove color":"Farbe entfernen","Restore default":"Standard wiederherstellen","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"Rich Text Editor. Bearbeitungsbereich: %0",Save:"Speichern","Select all":"Alles auswählen","Show more items":"Mehr anzeigen",Turquoise:"Türkis",Undo:"Rückgängig","Upload in progress":"Upload läuft",White:"Weiß","Widget toolbar":"Widget Werkzeugleiste",Yellow:"Gelb"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const r=e.de=e.de||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 von %1",Aquamarine:"Aquamarinblau",Black:"Schwarz",Blue:"Blau",Cancel:"Abbrechen","Cannot upload file:":"Die Datei kann nicht hochgeladen werden:","Dim grey":"Dunkelgrau","Dropdown toolbar":"Dropdown-Liste Werkzeugleiste","Edit block":"Absatz bearbeiten","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Bearbeitungsbereich des Editors: %0","Editor toolbar":"Editor Werkzeugleiste",Green:"Grün",Grey:"Grau","Insert paragraph after block":"Absatz nach Block einfügen","Insert paragraph before block":"Absatz vor Block einfügen","Light blue":"Hellblau","Light green":"Hellgrün","Light grey":"Hellgrau",Next:"Nächste",Orange:"Orange",Previous:"vorherige",Purple:"Violett",Red:"Rot",Redo:"Wiederherstellen","Remove color":"Farbe entfernen","Restore default":"Standard wiederherstellen","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"Rich Text Editor. Bearbeitungsbereich: %0",Save:"Speichern","Select all":"Alles auswählen","Show more items":"Mehr anzeigen",Turquoise:"Türkis",Undo:"Rückgängig","Upload in progress":"Upload läuft",White:"Weiß","Widget toolbar":"Widget Werkzeugleiste",Yellow:"Gelb"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/el.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/el.js index 76b4d22aa5b96254e33879f6af6d35cd51dfa022..0993d4b294291fa1f34ac553891e5d285abda9ed 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/el.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/el.js @@ -1 +1 @@ -!function(e){const o=e.el=e.el||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 από %1",Aquamarine:"Ακουαμαρίνα",Black:"Μαύρο",Blue:"Μπλε",Cancel:"Ακύρωση","Cannot upload file:":"Αδύνατη η αποστολή του αρχείου:","Dim grey":"Θολό γκρι","Dropdown toolbar":"Γραμμή εργαλείων αναδυόμενου μενού","Edit block":"Επεξεργασία τμήματος","Editor editing area: %0":"Περιοχή επεξεργασίας προγράμματος επεξεργασίας: %0","Editor toolbar":"Γραμμή εργαλείων επεξεργαστή",Green:"Πράσινο",Grey:"Γκρι","Insert paragraph after block":"Εισαγωγή παραγράφου μετά το τμήμα","Insert paragraph before block":"Εισαγωγή παραγράφου πριν το τμήμα","Light blue":"Φωτινό μπλε","Light green":"Φωτινό πράσινο","Light grey":"Φωτινό γκρι",Next:"Επόμενο",Orange:"Πορτοκαλί",Previous:"Προηγούμενο",Purple:"Πορφυρό",Red:"Κόκκινο",Redo:"Επανάληψη","Remove color":"Απομάκρυνση χρώματος","Restore default":"Επαναφορά προεπιλογής","Rich Text Editor":"Επεξεργαστής εμπλουτισμένου κειμένου","Rich Text Editor. Editing area: %0":"Πρόγραμμα επεξεργασίας εμπλουτισμένου κειμένου. Περιοχή επεξεργασίας: %0",Save:"Αποθήκευση","Select all":"Επιλογή όλων","Show more items":"Προβολή περισσότερων αντικειμένων",Turquoise:"Τιρκουάζ",Undo:"Αναίρεση","Upload in progress":"Αποστολή σε εξέλιξη",White:"Λευκό","Widget toolbar":"Γραμμή εργαλείων γραφικού στοιχείου",Yellow:"Κίτρινο"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const o=e.el=e.el||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 από %1",Aquamarine:"Ακουαμαρίνα",Black:"Μαύρο",Blue:"Μπλε",Cancel:"Ακύρωση","Cannot upload file:":"Αδύνατη η αποστολή του αρχείου:","Dim grey":"Θολό γκρι","Dropdown toolbar":"Γραμμή εργαλείων αναδυόμενου μενού","Edit block":"Επεξεργασία τμήματος","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Περιοχή επεξεργασίας προγράμματος επεξεργασίας: %0","Editor toolbar":"Γραμμή εργαλείων επεξεργαστή",Green:"Πράσινο",Grey:"Γκρι","Insert paragraph after block":"Εισαγωγή παραγράφου μετά το τμήμα","Insert paragraph before block":"Εισαγωγή παραγράφου πριν το τμήμα","Light blue":"Φωτινό μπλε","Light green":"Φωτινό πράσινο","Light grey":"Φωτινό γκρι",Next:"Επόμενο",Orange:"Πορτοκαλί",Previous:"Προηγούμενο",Purple:"Πορφυρό",Red:"Κόκκινο",Redo:"Επανάληψη","Remove color":"Απομάκρυνση χρώματος","Restore default":"Επαναφορά προεπιλογής","Rich Text Editor":"Επεξεργαστής εμπλουτισμένου κειμένου","Rich Text Editor. Editing area: %0":"Πρόγραμμα επεξεργασίας εμπλουτισμένου κειμένου. Περιοχή επεξεργασίας: %0",Save:"Αποθήκευση","Select all":"Επιλογή όλων","Show more items":"Προβολή περισσότερων αντικειμένων",Turquoise:"Τιρκουάζ",Undo:"Αναίρεση","Upload in progress":"Αποστολή σε εξέλιξη",White:"Λευκό","Widget toolbar":"Γραμμή εργαλείων γραφικού στοιχείου",Yellow:"Κίτρινο"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/en-au.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/en-au.js index db7b3d7c63659f759ed13f7cec5c6d36bb3f54ac..000c899639b8547cfdff95682a9cdfec74c833f8 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/en-au.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/en-au.js @@ -1 +1 @@ -!function(e){const o=e["en-au"]=e["en-au"]||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Aquamarine",Black:"Black",Blue:"Blue",Cancel:"Cancel","Cannot upload file:":"Cannot upload file:","Dim grey":"Dim grey","Dropdown toolbar":"Dropdown toolbar","Edit block":"Edit block","Editor editing area: %0":"","Editor toolbar":"Editor toolbar",Green:"Green",Grey:"Grey","Insert paragraph after block":"Insert paragraph after block","Insert paragraph before block":"Insert paragraph before block","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Next:"Next",Orange:"Orange",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove colour","Restore default":"Restore default","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"",Save:"Save","Select all":"Select all","Show more items":"Show more items",Turquoise:"Turquoise",Undo:"Undo","Upload in progress":"Upload in progress",White:"White","Widget toolbar":"Widget toolbar",Yellow:"Yellow"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const o=e["en-au"]=e["en-au"]||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Aquamarine",Black:"Black",Blue:"Blue",Cancel:"Cancel","Cannot upload file:":"Cannot upload file:","Dim grey":"Dim grey","Dropdown toolbar":"Dropdown toolbar","Edit block":"Edit block","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Editor editing area: %0","Editor toolbar":"Editor toolbar",Green:"Green",Grey:"Grey","Insert paragraph after block":"Insert paragraph after block","Insert paragraph before block":"Insert paragraph before block","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Next:"Next",Orange:"Orange",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove colour","Restore default":"Restore default","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"",Save:"Save","Select all":"Select all","Show more items":"Show more items",Turquoise:"Turquoise",Undo:"Undo","Upload in progress":"Upload in progress",White:"White","Widget toolbar":"Widget toolbar",Yellow:"Yellow"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/en-gb.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/en-gb.js index 6eae0f05edf345bb37376c311dfa478ab1ac0846..41b1e99828c4f043fcd3be92d40da57ba1ede876 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/en-gb.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/en-gb.js @@ -1 +1 @@ -!function(e){const o=e["en-gb"]=e["en-gb"]||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Aquamarine",Black:"Black",Blue:"Blue",Cancel:"Cancel","Cannot upload file:":"Cannot upload file:","Dim grey":"Dim grey","Dropdown toolbar":"","Edit block":"Edit block","Editor editing area: %0":"","Editor toolbar":"",Green:"Green",Grey:"Grey","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Next:"Next",Orange:"Orange",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove colour","Restore default":"","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"",Save:"Save","Show more items":"",Turquoise:"Turquoise",Undo:"Undo","Upload in progress":"Upload in progress",White:"White",Yellow:"Yellow"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const o=e["en-gb"]=e["en-gb"]||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Aquamarine",Black:"Black",Blue:"Blue",Cancel:"Cancel","Cannot upload file:":"Cannot upload file:","Dim grey":"Dim grey","Dropdown toolbar":"","Edit block":"Edit block","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"",Green:"Green",Grey:"Grey","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Next:"Next",Orange:"Orange",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove colour","Restore default":"","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"",Save:"Save","Show more items":"",Turquoise:"Turquoise",Undo:"Undo","Upload in progress":"Upload in progress",White:"White",Yellow:"Yellow"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/eo.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/eo.js index 0bdffa9e8e08146169dd2e8f99e45f97a620c209..c4275a96512d37c48dbb2fa305c746e83c172c7b 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/eo.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/eo.js @@ -1 +1 @@ -!function(e){const o=e.eo=e.eo||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Nuligi","Cannot upload file:":"","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Refari","Remove color":"","Restore default":"","Rich Text Editor":"Redaktilo de Riĉa Teksto","Rich Text Editor. Editing area: %0":"",Save:"Konservi","Show more items":"",Turquoise:"",Undo:"Malfari",White:"",Yellow:""}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.eo=o.eo||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Nuligi","Cannot upload file:":"","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Refari","Remove color":"","Restore default":"","Rich Text Editor":"Redaktilo de Riĉa Teksto","Rich Text Editor. Editing area: %0":"",Save:"Konservi","Show more items":"",Turquoise:"",Undo:"Malfari",White:"",Yellow:""}),e.getPluralForm=function(o){return 1!=o}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/es.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/es.js index 11bb7e3b7a9f1b4b8c734387fd385678e9f7cf16..64a911f3e73cbe6c639c20202ca7923e5abe606a 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/es.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/es.js @@ -1 +1 @@ -!function(e){const r=e.es=e.es||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Aguamarina",Black:"Negro",Blue:"Azul",Cancel:"Cancelar","Cannot upload file:":"No se pudo cargar el archivo:","Dim grey":"Gris Oscuro","Dropdown toolbar":"Barra de herramientas desplegable","Edit block":"Cuadro de edición","Editor editing area: %0":"Área de edición del editor: %0","Editor toolbar":"Barra de herramientas de edición",Green:"Verde",Grey:"Gris","Insert paragraph after block":"Insertar párrafo después del bloque","Insert paragraph before block":"Insertar párrafo antes del bloque","Light blue":"Azul Claro","Light green":"Verde Claro","Light grey":"Gris Claro",Next:"Siguiente",Orange:"Anaranjado",Previous:"Anterior",Purple:"Morado",Red:"Rojo",Redo:"Rehacer","Remove color":"Quitar color","Restore default":"Restaurar valores predeterminados","Rich Text Editor":"Editor de Texto Enriquecido","Rich Text Editor. Editing area: %0":"Editor de texto enriquecido. Área de edición: %0",Save:"Guardar","Select all":"Seleccionar todo","Show more items":"Mostrar más elementos",Turquoise:"Turquesa",Undo:"Deshacer","Upload in progress":"Subida en progreso",White:"Blanco","Widget toolbar":"Barra de herramientas del widget",Yellow:"Amarillo"}),r.getPluralForm=function(e){return 1==e?0:0!=e&&e%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const r=e.es=e.es||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Aguamarina",Black:"Negro",Blue:"Azul",Cancel:"Cancelar","Cannot upload file:":"No se pudo cargar el archivo:","Dim grey":"Gris Oscuro","Dropdown toolbar":"Barra de herramientas desplegable","Edit block":"Cuadro de edición","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Área de edición del editor: %0","Editor toolbar":"Barra de herramientas de edición",Green:"Verde",Grey:"Gris","Insert paragraph after block":"Insertar párrafo después del bloque","Insert paragraph before block":"Insertar párrafo antes del bloque","Light blue":"Azul Claro","Light green":"Verde Claro","Light grey":"Gris Claro",Next:"Siguiente",Orange:"Anaranjado",Previous:"Anterior",Purple:"Morado",Red:"Rojo",Redo:"Rehacer","Remove color":"Quitar color","Restore default":"Restaurar valores predeterminados","Rich Text Editor":"Editor de Texto Enriquecido","Rich Text Editor. Editing area: %0":"Editor de texto enriquecido. Área de edición: %0",Save:"Guardar","Select all":"Seleccionar todo","Show more items":"Mostrar más elementos",Turquoise:"Turquesa",Undo:"Deshacer","Upload in progress":"Subida en progreso",White:"Blanco","Widget toolbar":"Barra de herramientas del widget",Yellow:"Amarillo"}),r.getPluralForm=function(e){return 1==e?0:0!=e&&e%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/et.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/et.js index d339071e5c507ee538ec99d74afe07b2fec8336c..69d31c3f718e9c630a6b8cdc725a16237774aa98 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/et.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/et.js @@ -1 +1 @@ -!function(e){const i=e.et=e.et||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"Akvamariin",Black:"Must",Blue:"Sinine",Cancel:"Loobu","Cannot upload file:":"Faili ei suudeta üles laadida:","Dim grey":"Tumehall","Dropdown toolbar":"Avatav tööriistariba","Edit block":"Muuda plokki","Editor editing area: %0":"Redaktori redigeerimisala: %0","Editor toolbar":"Redaktori tööriistariba",Green:"Roheline",Grey:"Hall","Insert paragraph after block":"Sisesta lõik pärast plokki","Insert paragraph before block":"Sisesta lõik enne plokki","Light blue":"Helesinine","Light green":"Heleroheline","Light grey":"Helehall",Next:"Järgmine",Orange:"Oranž",Previous:"Eelmine",Purple:"Lilla",Red:"Punane",Redo:"Tee uuesti","Remove color":"Eemalda värv","Restore default":"Taasta algne","Rich Text Editor":"Tekstiredaktor","Rich Text Editor. Editing area: %0":"Rikastekstiredaktor. Redigeerimisala: %0",Save:"Salvesta","Select all":"Vali kõik","Show more items":"Näita veel",Turquoise:"Türkiis",Undo:"Võta tagasi","Upload in progress":"Üleslaadimine pooleli",White:"Valge","Widget toolbar":"Vidinate tööriistariba",Yellow:"Kollane"}),i.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const i=e.et=e.et||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"Akvamariin",Black:"Must",Blue:"Sinine",Cancel:"Loobu","Cannot upload file:":"Faili ei suudeta üles laadida:","Dim grey":"Tumehall","Dropdown toolbar":"Avatav tööriistariba","Edit block":"Muuda plokki","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Redaktori redigeerimisala: %0","Editor toolbar":"Redaktori tööriistariba",Green:"Roheline",Grey:"Hall","Insert paragraph after block":"Sisesta lõik pärast plokki","Insert paragraph before block":"Sisesta lõik enne plokki","Light blue":"Helesinine","Light green":"Heleroheline","Light grey":"Helehall",Next:"Järgmine",Orange:"Oranž",Previous:"Eelmine",Purple:"Lilla",Red:"Punane",Redo:"Tee uuesti","Remove color":"Eemalda värv","Restore default":"Taasta algne","Rich Text Editor":"Tekstiredaktor","Rich Text Editor. Editing area: %0":"Rikastekstiredaktor. Redigeerimisala: %0",Save:"Salvesta","Select all":"Vali kõik","Show more items":"Näita veel",Turquoise:"Türkiis",Undo:"Võta tagasi","Upload in progress":"Üleslaadimine pooleli",White:"Valge","Widget toolbar":"Vidinate tööriistariba",Yellow:"Kollane"}),i.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/eu.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/eu.js index 772665293feee771a5d235892b2363afc6ec9b85..fbffa22d00de2b2c9d3e54e32a44d6c952b9e45d 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/eu.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/eu.js @@ -1 +1 @@ -!function(e){const i=e.eu=e.eu||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Utzi","Cannot upload file:":"Ezin da fitxategia kargatu:","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Berregin","Remove color":"","Restore default":"","Rich Text Editor":"Testu aberastuaren editorea","Rich Text Editor. Editing area: %0":"",Save:"Gorde","Show more items":"",Turquoise:"",Undo:"Desegin",White:"",Yellow:""}),i.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const o=e.eu=e.eu||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Utzi","Cannot upload file:":"Ezin da fitxategia kargatu:","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Berregin","Remove color":"","Restore default":"","Rich Text Editor":"Testu aberastuaren editorea","Rich Text Editor. Editing area: %0":"",Save:"Gorde","Show more items":"",Turquoise:"",Undo:"Desegin",White:"",Yellow:""}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fa.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fa.js index 7949891b7aa859652db9b7666fcc2a7bcd5ed2a3..0a961efbbcb5cb6f6ebe349c40e260707af99a77 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fa.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fa.js @@ -1 +1 @@ -!function(e){const o=e.fa=e.fa||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 از %1",Aquamarine:"زمرد کبود",Black:"سیاه",Blue:"آبی",Cancel:"لغو","Cannot upload file:":"فایل آپلود نمیشود:","Dim grey":"خاکستری تیره","Dropdown toolbar":"نوارابزار کشویی","Edit block":"ویرایش قطعه","Editor editing area: %0":"","Editor toolbar":"نوارابزار ویرایشگر",Green:"سبز",Grey:"خاکستری","Insert paragraph after block":"درج پاراگراف بعد از بلوک","Insert paragraph before block":"درج پاراگراف قبل از بلوک","Light blue":"آبی روشن","Light green":"سبز روشن","Light grey":"خاکستری روشن",Next:"بعدی",Orange:"نارنجی",Previous:"قبلی",Purple:"بنفش",Red:"قرمز",Redo:"باز انجام","Remove color":"حذف رنگ","Restore default":"","Rich Text Editor":"ویرایشگر متن غنی","Rich Text Editor. Editing area: %0":"",Save:"ذخیره","Select all":"انتخاب همه","Show more items":"نمایش گزینههای بیشتر",Turquoise:"فیروزه ای",Undo:"بازگردانی","Upload in progress":"آپلود در حال انجام",White:"سفید","Widget toolbar":"نوار ابزار ویجت",Yellow:"زرد"}),o.getPluralForm=function(e){return e>1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.fa=o.fa||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 از %1",Aquamarine:"زمرد کبود",Black:"سیاه",Blue:"آبی",Cancel:"لغو","Cannot upload file:":"فایل آپلود نمیشود:","Dim grey":"خاکستری تیره","Dropdown toolbar":"نوارابزار کشویی","Edit block":"ویرایش قطعه","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"نوارابزار ویرایشگر",Green:"سبز",Grey:"خاکستری","Insert paragraph after block":"درج پاراگراف بعد از بلوک","Insert paragraph before block":"درج پاراگراف قبل از بلوک","Light blue":"آبی روشن","Light green":"سبز روشن","Light grey":"خاکستری روشن",Next:"بعدی",Orange:"نارنجی",Previous:"قبلی",Purple:"بنفش",Red:"قرمز",Redo:"باز انجام","Remove color":"حذف رنگ","Restore default":"","Rich Text Editor":"ویرایشگر متن غنی","Rich Text Editor. Editing area: %0":"",Save:"ذخیره","Select all":"انتخاب همه","Show more items":"نمایش گزینههای بیشتر",Turquoise:"فیروزه ای",Undo:"بازگردانی","Upload in progress":"آپلود در حال انجام",White:"سفید","Widget toolbar":"نوار ابزار ویجت",Yellow:"زرد"}),e.getPluralForm=function(o){return o>1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fi.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fi.js index e320621e5bf764541a08c3610d19c41526cba3be..a21d36529520f52604dc95f4367355290c6ad326 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fi.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fi.js @@ -1 +1 @@ -!function(a){const e=a.fi=a.fi||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"Akvamariini",Black:"Musta",Blue:"Sininen",Cancel:"Peruuta","Cannot upload file:":"Tiedostoa ei voitu ladata:","Dim grey":"Vaaleanharmaa","Dropdown toolbar":"Pudotusvalikon työkalupalkki","Edit block":"Muokkaa lohkoa","Editor editing area: %0":"Editorin muokkausalue: %0","Editor toolbar":"Editorin työkalupalkki",Green:"Vihreä",Grey:"Harmaa","Insert paragraph after block":"Liitä kappale lohkon jälkeen","Insert paragraph before block":"Liitä kappale ennen lohkoa","Light blue":"Vaaleansininen","Light green":"Vaaleanvihreä","Light grey":"Vaaleanharmaa",Next:"Seuraava",Orange:"Oranssi",Previous:"Edellinen",Purple:"Purppura",Red:"Punainen",Redo:"Tee uudelleen","Remove color":"Poista väri","Restore default":"Palauta oletus","Rich Text Editor":"Rikas tekstieditori","Rich Text Editor. Editing area: %0":"Tekstimuotoilueditori. Muokkausalue: %0",Save:"Tallenna","Select all":"Valitse kaikki","Show more items":"Näytä lisää toimintoja",Turquoise:"Turkoosi",Undo:"Peru","Upload in progress":"Lähetys käynnissä",White:"Valkoinen","Widget toolbar":"Widget-työkalupalkki",Yellow:"Keltainen"}),e.getPluralForm=function(a){return 1!=a}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(a){const e=a.fi=a.fi||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"Akvamariini",Black:"Musta",Blue:"Sininen",Cancel:"Peruuta","Cannot upload file:":"Tiedostoa ei voitu ladata:","Dim grey":"Vaaleanharmaa","Dropdown toolbar":"Pudotusvalikon työkalupalkki","Edit block":"Muokkaa lohkoa","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Editorin muokkausalue: %0","Editor toolbar":"Editorin työkalupalkki",Green:"Vihreä",Grey:"Harmaa","Insert paragraph after block":"Liitä kappale lohkon jälkeen","Insert paragraph before block":"Liitä kappale ennen lohkoa","Light blue":"Vaaleansininen","Light green":"Vaaleanvihreä","Light grey":"Vaaleanharmaa",Next:"Seuraava",Orange:"Oranssi",Previous:"Edellinen",Purple:"Purppura",Red:"Punainen",Redo:"Tee uudelleen","Remove color":"Poista väri","Restore default":"Palauta oletus","Rich Text Editor":"Rikas tekstieditori","Rich Text Editor. Editing area: %0":"Tekstimuotoilueditori. Muokkausalue: %0",Save:"Tallenna","Select all":"Valitse kaikki","Show more items":"Näytä lisää toimintoja",Turquoise:"Turkoosi",Undo:"Peru","Upload in progress":"Lähetys käynnissä",White:"Valkoinen","Widget toolbar":"Widget-työkalupalkki",Yellow:"Keltainen"}),e.getPluralForm=function(a){return 1!=a}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fr.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fr.js index 6cecfbd9c291862aa8a26681f5a769ff31a0d4ac..258ebeea04ad9c78d3bb6f66dfd9adb11258912c 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fr.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/fr.js @@ -1 +1 @@ -!function(e){const r=e.fr=e.fr||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 sur %1",Aquamarine:"Bleu vert",Black:"Noir",Blue:"Bleu",Cancel:"Annuler","Cannot upload file:":"Envoi du fichier échoué :","Dim grey":"Gris pâle","Dropdown toolbar":"Barre d'outils dans un menu déroulant","Edit block":"Modifier le bloc","Editor editing area: %0":"Zone d'édition de l'éditeur : %0","Editor toolbar":"Barre d'outils de l'éditeur",Green:"Vert",Grey:"Gris","Insert paragraph after block":"Insérer du texte après ce bloc","Insert paragraph before block":"Insérer du texte avant ce bloc","Light blue":"Bleu clair","Light green":"Vert clair","Light grey":"Gris clair",Next:"Suivant",Orange:"Orange",Previous:"Précedent",Purple:"Violet",Red:"Rouge",Redo:"Restaurer","Remove color":"Enlever la couleur","Restore default":"Restaurer par défaut","Rich Text Editor":"Éditeur de texte enrichi","Rich Text Editor. Editing area: %0":"Éditeur de texte enrichi. Zone d'édition : %0",Save:"Enregistrer","Select all":"Sélectionner tout","Show more items":"Montrer plus d'éléments",Turquoise:"Turquoise",Undo:"Annuler","Upload in progress":"Téléchargement en cours",White:"Blanc","Widget toolbar":"Barre d'outils du widget",Yellow:"Jaune"}),r.getPluralForm=function(e){return 0==e||1==e?0:0!=e&&e%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const r=e.fr=e.fr||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 sur %1",Aquamarine:"Bleu vert",Black:"Noir",Blue:"Bleu",Cancel:"Annuler","Cannot upload file:":"Envoi du fichier échoué :","Dim grey":"Gris pâle","Dropdown toolbar":"Barre d'outils dans un menu déroulant","Edit block":"Modifier le bloc","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Zone d'édition de l'éditeur : %0","Editor toolbar":"Barre d'outils de l'éditeur",Green:"Vert",Grey:"Gris","Insert paragraph after block":"Insérer du texte après ce bloc","Insert paragraph before block":"Insérer du texte avant ce bloc","Light blue":"Bleu clair","Light green":"Vert clair","Light grey":"Gris clair",Next:"Suivant",Orange:"Orange",Previous:"Précedent",Purple:"Violet",Red:"Rouge",Redo:"Restaurer","Remove color":"Enlever la couleur","Restore default":"Restaurer par défaut","Rich Text Editor":"Éditeur de texte enrichi","Rich Text Editor. Editing area: %0":"Éditeur de texte enrichi. Zone d'édition : %0",Save:"Enregistrer","Select all":"Sélectionner tout","Show more items":"Montrer plus d'éléments",Turquoise:"Turquoise",Undo:"Annuler","Upload in progress":"Téléchargement en cours",White:"Blanc","Widget toolbar":"Barre d'outils du widget",Yellow:"Jaune"}),r.getPluralForm=function(e){return 0==e||1==e?0:0!=e&&e%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/gl.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/gl.js index 6d7964dda7ed14308efc95704ed8bc4fe7e525cd..ddef3a662376f90269f26c6258a9a48c0f406a51 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/gl.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/gl.js @@ -1 +1 @@ -!function(e){const r=e.gl=e.gl||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Augamariña",Black:"Negro",Blue:"Azul",Cancel:"Cancelar","Cannot upload file:":"Non é posíbel cargar o ficheiro:","Dim grey":"Gris fume","Dropdown toolbar":"Barra de ferramentas despregábel","Edit block":"Editar bloque","Editor editing area: %0":"","Editor toolbar":"Barra de ferramentas do editor",Green:"Verde",Grey:"Gris","Insert paragraph after block":"Inserir parágrafo após o bloque","Insert paragraph before block":"Inserir parágrafo antes do bloque","Light blue":"Azul claro","Light green":"Verde claro","Light grey":"Gris claro",Next:"Seguinte",Orange:"Laranxa",Previous:"Anterior",Purple:"Púrpura",Red:"Vermello",Redo:"Refacer","Remove color":"Retirar a cor","Restore default":"Restaurar valores predeterminados","Rich Text Editor":"Editor de texto mellorado","Rich Text Editor. Editing area: %0":"",Save:"Gardar","Select all":"Seleccionar todo","Show more items":"Amosar máis elementos",Turquoise:"Turquesa",Undo:"Desfacer","Upload in progress":"Envío en proceso",White:"Branco","Widget toolbar":"Barra de ferramentas de trebellos",Yellow:"Amarelo"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const r=e.gl=e.gl||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Augamariña",Black:"Negro",Blue:"Azul",Cancel:"Cancelar","Cannot upload file:":"Non é posíbel cargar o ficheiro:","Dim grey":"Gris fume","Dropdown toolbar":"Barra de ferramentas despregábel","Edit block":"Editar bloque","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Área de edición do editor: %0","Editor toolbar":"Barra de ferramentas do editor",Green:"Verde",Grey:"Gris","Insert paragraph after block":"Inserir parágrafo após o bloque","Insert paragraph before block":"Inserir parágrafo antes do bloque","Light blue":"Azul claro","Light green":"Verde claro","Light grey":"Gris claro",Next:"Seguinte",Orange:"Laranxa",Previous:"Anterior",Purple:"Púrpura",Red:"Vermello",Redo:"Refacer","Remove color":"Retirar a cor","Restore default":"Restaurar valores predeterminados","Rich Text Editor":"Editor de texto mellorado","Rich Text Editor. Editing area: %0":"Editor de texto mellorado. Área de edición: %0",Save:"Gardar","Select all":"Seleccionar todo","Show more items":"Amosar máis elementos",Turquoise:"Turquesa",Undo:"Desfacer","Upload in progress":"Envío en proceso",White:"Branco","Widget toolbar":"Barra de ferramentas de trebellos",Yellow:"Amarelo"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/he.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/he.js index b0f74a375a32f88b691581ab79c1e17dd7f11226..e6ab54acc81efb7a303e7cc4b4dd6de357a1941d 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/he.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/he.js @@ -1 +1 @@ -!function(e){const o=e.he=e.he||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 מתוך %1",Aquamarine:"ירוק-כחלחל",Black:"שחור",Blue:"כחול",Cancel:"ביטול","Cannot upload file:":"לא ניתן להעלות את הקובץ הבא:","Dim grey":"אפור עמום","Dropdown toolbar":"סרגל כלים נפתח","Edit block":"הגדרות בלוק","Editor editing area: %0":"אזור עריכה של העורך: %0","Editor toolbar":"סרגל הכלים",Green:"ירוק",Grey:"אפור","Insert paragraph after block":"הוספת פסקה מתחת","Insert paragraph before block":"הוספת פסקה מעל","Light blue":"כחול בהיר","Light green":"ירוק בהיר","Light grey":"אפור בהיר",Next:"הבא",Orange:"כתום",Previous:"הקודם",Purple:"סגול",Red:"אדום",Redo:"ביצוע מחדש","Remove color":"מחיקת צבע","Restore default":"שחזור ברירת מחדל","Rich Text Editor":"עורך טקסט עשיר","Rich Text Editor. Editing area: %0":"עורך פורמט טקסט עשיר. אזור עריכה: %0",Save:"שמירה","Select all":"בחר הכל","Show more items":"הצג פריטים נוספים",Turquoise:"טורקיז",Undo:"ביטול","Upload in progress":"העלאה מתבצעת",White:"לבן","Widget toolbar":"סרגל יישומון",Yellow:"צהוב"}),o.getPluralForm=function(e){return 1==e&&e%1==0?0:2==e&&e%1==0?1:e%10==0&&e%1==0&&e>10?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const o=e.he=e.he||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 מתוך %1",Aquamarine:"ירוק-כחלחל",Black:"שחור",Blue:"כחול",Cancel:"ביטול","Cannot upload file:":"לא ניתן להעלות את הקובץ הבא:","Dim grey":"אפור עמום","Dropdown toolbar":"סרגל כלים נפתח","Edit block":"הגדרות בלוק","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"אזור עריכה של העורך: %0","Editor toolbar":"סרגל הכלים",Green:"ירוק",Grey:"אפור","Insert paragraph after block":"הוספת פסקה מתחת","Insert paragraph before block":"הוספת פסקה מעל","Light blue":"כחול בהיר","Light green":"ירוק בהיר","Light grey":"אפור בהיר",Next:"הבא",Orange:"כתום",Previous:"הקודם",Purple:"סגול",Red:"אדום",Redo:"ביצוע מחדש","Remove color":"מחיקת צבע","Restore default":"שחזור ברירת מחדל","Rich Text Editor":"עורך טקסט עשיר","Rich Text Editor. Editing area: %0":"עורך פורמט טקסט עשיר. אזור עריכה: %0",Save:"שמירה","Select all":"בחר הכל","Show more items":"הצג פריטים נוספים",Turquoise:"טורקיז",Undo:"ביטול","Upload in progress":"העלאה מתבצעת",White:"לבן","Widget toolbar":"סרגל יישומון",Yellow:"צהוב"}),o.getPluralForm=function(e){return 1==e&&e%1==0?0:2==e&&e%1==0?1:e%10==0&&e%1==0&&e>10?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hi.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hi.js index 0d54c1242b8820b01466d66b162f20aa4ddaf2db..8407d4ad1edf6dae08bae1406dbee3d0d5cd3c75 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hi.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hi.js @@ -1 +1 @@ -!function(e){const o=e.hi=e.hi||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Aquamarine",Black:"Black",Blue:"Blue",Cancel:"Cancel","Cannot upload file:":"Cannot upload file:","Dim grey":"Dim grey","Dropdown toolbar":"Dropdown toolbar","Edit block":"Edit block","Editor editing area: %0":"संपादक संपादन क्षेत्र: %0","Editor toolbar":"Editor toolbar",Green:"Green",Grey:"Grey","Insert paragraph after block":"Insert paragraph after block","Insert paragraph before block":"Insert paragraph before block","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Next:"Next",Orange:"Orange",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove color","Restore default":"डिफ़ॉल्ट रिस्टोर कर दें","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"रिच टेक्स्ट एडिटर। संपादन क्षेत्र: %0",Save:"Save","Select all":"Select all","Show more items":"Show more items",Turquoise:"Turquoise",Undo:"Undo","Upload in progress":"Upload in progress",White:"White","Widget toolbar":"Widget toolbar",Yellow:"Yellow"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const o=e.hi=e.hi||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Aquamarine",Black:"Black",Blue:"Blue",Cancel:"Cancel","Cannot upload file:":"Cannot upload file:","Dim grey":"Dim grey","Dropdown toolbar":"Dropdown toolbar","Edit block":"Edit block","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"संपादक संपादन क्षेत्र: %0","Editor toolbar":"Editor toolbar",Green:"Green",Grey:"Grey","Insert paragraph after block":"Insert paragraph after block","Insert paragraph before block":"Insert paragraph before block","Light blue":"Light blue","Light green":"Light green","Light grey":"Light grey",Next:"Next",Orange:"Orange",Previous:"Previous",Purple:"Purple",Red:"Red",Redo:"Redo","Remove color":"Remove color","Restore default":"डिफ़ॉल्ट रिस्टोर कर दें","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"रिच टेक्स्ट एडिटर। संपादन क्षेत्र: %0",Save:"Save","Select all":"Select all","Show more items":"Show more items",Turquoise:"Turquoise",Undo:"Undo","Upload in progress":"Upload in progress",White:"White","Widget toolbar":"Widget toolbar",Yellow:"Yellow"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hr.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hr.js index c744a7b970183a53aa5e643f311969ab2818f7c7..4b2fdb049cb09468f69a1343a91829e369f51ad9 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hr.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hr.js @@ -1 +1 @@ -!function(a){const e=a.hr=a.hr||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 od %1",Aquamarine:"Akvamarin",Black:"Crna",Blue:"Plava",Cancel:"Poništi","Cannot upload file:":"Datoteku nije moguće poslati:","Dim grey":"Tamnosiva","Dropdown toolbar":"Traka padajućeg izbornika","Edit block":"Uredi blok","Editor editing area: %0":"","Editor toolbar":"Traka uređivača",Green:"Zelena",Grey:"Siva","Insert paragraph after block":"Umetni odlomak poslije bloka","Insert paragraph before block":"Umetni odlomak prije bloka","Light blue":"Svijetloplava","Light green":"Svijetlozelena","Light grey":"Svijetlosiva",Next:"Sljedeći",Orange:"Narančasta",Previous:"Prethodni",Purple:"Ljubičasta",Red:"Crvena",Redo:"Ponovi","Remove color":"Ukloni boju","Restore default":"Vrati tvorničke postavke","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"",Save:"Snimi","Select all":"Odaberi sve","Show more items":"Prikaži više stavaka",Turquoise:"Tirkizna",Undo:"Poništi","Upload in progress":"Slanje u tijeku",White:"Bijela","Widget toolbar":"Traka sa spravicama",Yellow:"Žuta"}),e.getPluralForm=function(a){return a%10==1&&a%100!=11?0:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(a){const e=a.hr=a.hr||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 od %1",Aquamarine:"Akvamarin",Black:"Crna",Blue:"Plava",Cancel:"Poništi","Cannot upload file:":"Datoteku nije moguće poslati:","Dim grey":"Tamnosiva","Dropdown toolbar":"Traka padajućeg izbornika","Edit block":"Uredi blok","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"Traka uređivača",Green:"Zelena",Grey:"Siva","Insert paragraph after block":"Umetni odlomak poslije bloka","Insert paragraph before block":"Umetni odlomak prije bloka","Light blue":"Svijetloplava","Light green":"Svijetlozelena","Light grey":"Svijetlosiva",Next:"Sljedeći",Orange:"Narančasta",Previous:"Prethodni",Purple:"Ljubičasta",Red:"Crvena",Redo:"Ponovi","Remove color":"Ukloni boju","Restore default":"Vrati tvorničke postavke","Rich Text Editor":"Rich Text Editor","Rich Text Editor. Editing area: %0":"",Save:"Snimi","Select all":"Odaberi sve","Show more items":"Prikaži više stavaka",Turquoise:"Tirkizna",Undo:"Poništi","Upload in progress":"Slanje u tijeku",White:"Bijela","Widget toolbar":"Traka sa spravicama",Yellow:"Žuta"}),e.getPluralForm=function(a){return a%10==1&&a%100!=11?0:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hu.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hu.js index fcd9b395d8a820f35c90da9aa6e5d2d837b6ad81..2632a83892ce5881c99691851d5798eb71b9bf13 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hu.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/hu.js @@ -1 +1 @@ -!function(e){const t=e.hu=e.hu||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"Kékeszöld",Black:"Fekete",Blue:"Kék",Cancel:"Mégsem","Cannot upload file:":"Nem sikerült a fájl feltöltése:","Dim grey":"Halvány szürke","Dropdown toolbar":"Lenyíló eszköztár","Edit block":"Blokk szerkesztése","Editor editing area: %0":"Szerkesztő szerkesztési területe: %0","Editor toolbar":"Szerkesztő eszköztár",Green:"Zöld",Grey:"Szürke","Insert paragraph after block":"Bekezdés beszúrása utána","Insert paragraph before block":"Bekezdés beszúrása elé","Light blue":"Világoskék","Light green":"Világoszöld","Light grey":"Világosszürke",Next:"Következő",Orange:"Narancs",Previous:"Előző",Purple:"Lila",Red:"Piros",Redo:"Újra","Remove color":"Szín eltávolítása","Restore default":"Alapértelmezés visszaállítása","Rich Text Editor":"Bővített szövegszerkesztő","Rich Text Editor. Editing area: %0":"Rich text szerkesztő. Szerkesztési terület: %0",Save:"Mentés","Select all":"Mindet kijelöl","Show more items":"További elemek",Turquoise:"Türkiz",Undo:"Visszavonás","Upload in progress":"A feltöltés folyamatban",White:"Fehér","Widget toolbar":"Widget eszköztár",Yellow:"Sárga"}),t.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const t=e.hu=e.hu||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"Kékeszöld",Black:"Fekete",Blue:"Kék",Cancel:"Mégsem","Cannot upload file:":"Nem sikerült a fájl feltöltése:","Dim grey":"Halvány szürke","Dropdown toolbar":"Lenyíló eszköztár","Edit block":"Blokk szerkesztése","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Szerkesztő szerkesztési területe: %0","Editor toolbar":"Szerkesztő eszköztár",Green:"Zöld",Grey:"Szürke","Insert paragraph after block":"Bekezdés beszúrása utána","Insert paragraph before block":"Bekezdés beszúrása elé","Light blue":"Világoskék","Light green":"Világoszöld","Light grey":"Világosszürke",Next:"Következő",Orange:"Narancs",Previous:"Előző",Purple:"Lila",Red:"Piros",Redo:"Újra","Remove color":"Szín eltávolítása","Restore default":"Alapértelmezés visszaállítása","Rich Text Editor":"Bővített szövegszerkesztő","Rich Text Editor. Editing area: %0":"Rich text szerkesztő. Szerkesztési terület: %0",Save:"Mentés","Select all":"Mindet kijelöl","Show more items":"További elemek",Turquoise:"Türkiz",Undo:"Visszavonás","Upload in progress":"A feltöltés folyamatban",White:"Fehér","Widget toolbar":"Widget eszköztár",Yellow:"Sárga"}),t.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/id.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/id.js index 977e498180004aceb58f4d0160bc3e2eaae03828..d14217c72260404ca779a2b903d496a568dc7be4 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/id.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/id.js @@ -1 +1 @@ -!function(a){const e=a.id=a.id||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 dari %1",Aquamarine:"Biru laut",Black:"Hitam",Blue:"Biru",Cancel:"Batal","Cannot upload file:":"Tidak dapat mengunggah berkas:","Dim grey":"Kelabu gelap","Dropdown toolbar":"Alat dropdown","Edit block":"Sunting blok","Editor editing area: %0":"Area edit editor: %0","Editor toolbar":"Alat editor",Green:"Hijau",Grey:"Kelabu","Insert paragraph after block":"Tambahkan paragraf setelah blok","Insert paragraph before block":"Tambahkan paragraf sebelum blok","Light blue":"Biru terang","Light green":"Hijau terang","Light grey":"Kelabu terang",Next:"Berikutnya",Orange:"Jingga",Previous:"Sebelumnya",Purple:"Ungu",Red:"Merah",Redo:"Lakukan lagi","Remove color":"Hapus warna","Restore default":"Pulihkan nilai baku","Rich Text Editor":"Editor Teks Kaya","Rich Text Editor. Editing area: %0":"Editor Teks Kaya. Area edit: %0",Save:"Simpan","Select all":"Pilih semua","Show more items":"Tampilkan lebih banyak item",Turquoise:"Turkish",Undo:"Batal","Upload in progress":"Sedang mengunggah",White:"Putih","Widget toolbar":"Alat widget",Yellow:"Kuning"}),e.getPluralForm=function(a){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(a){const e=a.id=a.id||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 dari %1",Aquamarine:"Biru laut",Black:"Hitam",Blue:"Biru",Cancel:"Batal","Cannot upload file:":"Tidak dapat mengunggah berkas:","Dim grey":"Kelabu gelap","Dropdown toolbar":"Alat dropdown","Edit block":"Sunting blok","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Area edit editor: %0","Editor toolbar":"Alat editor",Green:"Hijau",Grey:"Kelabu","Insert paragraph after block":"Tambahkan paragraf setelah blok","Insert paragraph before block":"Tambahkan paragraf sebelum blok","Light blue":"Biru terang","Light green":"Hijau terang","Light grey":"Kelabu terang",Next:"Berikutnya",Orange:"Jingga",Previous:"Sebelumnya",Purple:"Ungu",Red:"Merah",Redo:"Lakukan lagi","Remove color":"Hapus warna","Restore default":"Pulihkan nilai baku","Rich Text Editor":"Editor Teks Kaya","Rich Text Editor. Editing area: %0":"Editor Teks Kaya. Area edit: %0",Save:"Simpan","Select all":"Pilih semua","Show more items":"Tampilkan lebih banyak item",Turquoise:"Turkish",Undo:"Batal","Upload in progress":"Sedang mengunggah",White:"Putih","Widget toolbar":"Alat widget",Yellow:"Kuning"}),e.getPluralForm=function(a){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/it.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/it.js index feeada50082cc9f2a8136c3583a7e6f3554a71b9..c5d6cc7eb696100f0ad29dac9ce75b7dd37ac9a4 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/it.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/it.js @@ -1 +1 @@ -!function(i){const e=i.it=i.it||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 di %1",Aquamarine:"Aquamarina",Black:"Nero",Blue:"Blu",Cancel:"Annulla","Cannot upload file:":"Impossibile caricare il file:","Dim grey":"Grigio tenue","Dropdown toolbar":"Barra degli strumenti del menu a discesa","Edit block":"Modifica blocco","Editor editing area: %0":"Area di modifica dell'editor: %0","Editor toolbar":"Barra degli strumenti dell'editor",Green:"Verde",Grey:"Grigio","Insert paragraph after block":"Inserisci paragrafo dopo blocco","Insert paragraph before block":"Inserisci paragrafo prima di blocco","Light blue":"Azzurro","Light green":"Verde chiaro","Light grey":"Grigio chiaro",Next:"Avanti",Orange:"Arancio",Previous:"Indietro",Purple:"Porpora",Red:"Rosso",Redo:"Ripristina","Remove color":"Rimuovi colore","Restore default":"Ripristina predefinito","Rich Text Editor":"Editor di testo formattato","Rich Text Editor. Editing area: %0":"Editor Rich Text. Area di modifica: %0",Save:"Salva","Select all":"Seleziona tutto","Show more items":"Mostra più elementi",Turquoise:"Turchese",Undo:"Annulla","Upload in progress":"Caricamento in corso",White:"Bianco","Widget toolbar":"Barra degli strumenti del widget",Yellow:"Giallo"}),e.getPluralForm=function(i){return 1==i?0:0!=i&&i%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(i){const o=i.it=i.it||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 di %1",Aquamarine:"Aquamarina",Black:"Nero",Blue:"Blu",Cancel:"Annulla","Cannot upload file:":"Impossibile caricare il file:","Dim grey":"Grigio tenue","Dropdown toolbar":"Barra degli strumenti del menu a discesa","Edit block":"Modifica blocco","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Area di modifica dell'editor: %0","Editor toolbar":"Barra degli strumenti dell'editor",Green:"Verde",Grey:"Grigio","Insert paragraph after block":"Inserisci paragrafo dopo blocco","Insert paragraph before block":"Inserisci paragrafo prima di blocco","Light blue":"Azzurro","Light green":"Verde chiaro","Light grey":"Grigio chiaro",Next:"Avanti",Orange:"Arancio",Previous:"Indietro",Purple:"Porpora",Red:"Rosso",Redo:"Ripristina","Remove color":"Rimuovi colore","Restore default":"Ripristina predefinito","Rich Text Editor":"Editor di testo formattato","Rich Text Editor. Editing area: %0":"Editor Rich Text. Area di modifica: %0",Save:"Salva","Select all":"Seleziona tutto","Show more items":"Mostra più elementi",Turquoise:"Turchese",Undo:"Annulla","Upload in progress":"Caricamento in corso",White:"Bianco","Widget toolbar":"Barra degli strumenti del widget",Yellow:"Giallo"}),o.getPluralForm=function(i){return 1==i?0:0!=i&&i%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ja.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ja.js index 27493cfa199ffe98c92a0f1d9aff5c9c877e44fa..c307b225f034b66f6be163247abfa6b7954d5592 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ja.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ja.js @@ -1 +1 @@ -!function(e){const o=e.ja=e.ja||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0/%1",Aquamarine:"薄い青緑",Black:"黒",Blue:"青",Cancel:"キャンセル","Cannot upload file:":"ファイルをアップロードできません:","Dim grey":"暗い灰色","Dropdown toolbar":"ドロップダウンツールバー","Edit block":"ブロックを編集","Editor editing area: %0":"エディタ編集エリア:%0","Editor toolbar":"エディタツールバー",Green:"緑",Grey:"灰色","Insert paragraph after block":"ブロックの後にパラグラフを挿入","Insert paragraph before block":"ブロックの前にパラグラフを挿入","Light blue":"明るい青","Light green":"明るい緑","Light grey":"明るい灰色",Next:"次へ",Orange:"オレンジ",Previous:"前へ",Purple:"紫",Red:"赤",Redo:"やり直し","Remove color":"カラーを削除","Restore default":"初期値に戻す","Rich Text Editor":"リッチテキストエディター","Rich Text Editor. Editing area: %0":"リッチテキストエディタ。編集エリア:%0",Save:"保存","Select all":"すべて選択","Show more items":"他の項目を表示",Turquoise:"水色",Undo:"元に戻す","Upload in progress":"アップロード中",White:"白","Widget toolbar":"ウィジェットツールバー",Yellow:"黄"}),o.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.ja=o.ja||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0/%1",Aquamarine:"薄い青緑",Black:"黒",Blue:"青",Cancel:"キャンセル","Cannot upload file:":"ファイルをアップロードできません:","Dim grey":"暗い灰色","Dropdown toolbar":"ドロップダウンツールバー","Edit block":"ブロックを編集","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"エディタ編集エリア:%0","Editor toolbar":"エディタツールバー",Green:"緑",Grey:"灰色","Insert paragraph after block":"ブロックの後にパラグラフを挿入","Insert paragraph before block":"ブロックの前にパラグラフを挿入","Light blue":"明るい青","Light green":"明るい緑","Light grey":"明るい灰色",Next:"次へ",Orange:"オレンジ",Previous:"前へ",Purple:"紫",Red:"赤",Redo:"やり直し","Remove color":"カラーを削除","Restore default":"初期値に戻す","Rich Text Editor":"リッチテキストエディター","Rich Text Editor. Editing area: %0":"リッチテキストエディタ。編集エリア:%0",Save:"保存","Select all":"すべて選択","Show more items":"他の項目を表示",Turquoise:"水色",Undo:"元に戻す","Upload in progress":"アップロード中",White:"白","Widget toolbar":"ウィジェットツールバー",Yellow:"黄"}),e.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/km.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/km.js index 699bd127c95cee468343272f0f86c1d2d66e198e..bafb140fa6bc01a85ee2b9d60d5f985bf69e5b52 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/km.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/km.js @@ -1 +1 @@ -!function(e){const o=e.km=e.km||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"បោះបង់","Cannot upload file:":"មិនអាចអាប់ឡូតឯកសារ៖","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"ធ្វើវិញ","Remove color":"","Restore default":"","Rich Text Editor":"កម្មវិធីកែសម្រួលអត្ថបទសម្បូរបែប","Rich Text Editor. Editing area: %0":"",Save:"រក្សាទុ","Show more items":"",Turquoise:"",Undo:"លែងធ្វើវិញ",White:"",Yellow:""}),o.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.km=o.km||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"បោះបង់","Cannot upload file:":"មិនអាចអាប់ឡូតឯកសារ៖","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"ធ្វើវិញ","Remove color":"","Restore default":"","Rich Text Editor":"កម្មវិធីកែសម្រួលអត្ថបទសម្បូរបែប","Rich Text Editor. Editing area: %0":"",Save:"រក្សាទុ","Show more items":"",Turquoise:"",Undo:"លែងធ្វើវិញ",White:"",Yellow:""}),e.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/kn.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/kn.js index 210d888bea60185e8d95b882f141ee447d397269..6d865ef1c41fed172de2fca868bf6a05b42934e4 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/kn.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/kn.js @@ -1 +1 @@ -!function(e){const o=e.kn=e.kn||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"ರದ್ದುಮಾಡು","Cannot upload file:":"","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"ಮತ್ತೆ ಮಾಡು","Remove color":"","Restore default":"","Rich Text Editor":"ಸಮೃದ್ಧ ಪಠ್ಯ ಸಂಪಾದಕ","Rich Text Editor. Editing area: %0":"",Save:"ಉಳಿಸು","Show more items":"",Turquoise:"",Undo:"ರದ್ದು",White:"",Yellow:""}),o.getPluralForm=function(e){return e>1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.kn=o.kn||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"ರದ್ದುಮಾಡು","Cannot upload file:":"","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"ಮತ್ತೆ ಮಾಡು","Remove color":"","Restore default":"","Rich Text Editor":"ಸಮೃದ್ಧ ಪಠ್ಯ ಸಂಪಾದಕ","Rich Text Editor. Editing area: %0":"",Save:"ಉಳಿಸು","Show more items":"",Turquoise:"",Undo:"ರದ್ದು",White:"",Yellow:""}),e.getPluralForm=function(o){return o>1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ko.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ko.js index f331ae3561f35b4ab26cc62082bcd72ebcdf6152..a0205fc86a3bd10d0be64d9702c7edbd38393358 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ko.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ko.js @@ -1 +1 @@ -!function(e){const o=e.ko=e.ko||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"연한 청록색",Black:"검은색",Blue:"파랑색",Cancel:"취소","Cannot upload file:":"파일 업로드할 수 없음: ","Dim grey":"진한 회색","Dropdown toolbar":"드롭다운 툴바","Edit block":"편집 영역","Editor editing area: %0":"편집기 편집 영역: %0","Editor toolbar":"에디터 툴바",Green:"초록색",Grey:"회색","Insert paragraph after block":"블록 뒤에 단락 삽입","Insert paragraph before block":"블록 앞에 단락 삽입","Light blue":"연한 파랑색","Light green":"밝은 초록색","Light grey":"밝은 회색",Next:"다음",Orange:"주황색",Previous:"이전",Purple:"보라색",Red:"빨간색",Redo:"다시 실행","Remove color":"색깔 제거","Restore default":"기본값 복원","Rich Text Editor":"리치 텍스트 편집기","Rich Text Editor. Editing area: %0":"리치 텍스트 편집기. 편집 영역: %0",Save:"저장","Select all":"전체 선택","Show more items":"더보기",Turquoise:"청록색",Undo:"실행 취소","Upload in progress":"업로드 진행 중",White:"흰색","Widget toolbar":"위젯 툴바",Yellow:"노랑색"}),o.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.ko=o.ko||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 / %1",Aquamarine:"연한 청록색",Black:"검은색",Blue:"파랑색",Cancel:"취소","Cannot upload file:":"파일 업로드할 수 없음: ","Dim grey":"진한 회색","Dropdown toolbar":"드롭다운 툴바","Edit block":"편집 영역","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"편집기 편집 영역: %0","Editor toolbar":"에디터 툴바",Green:"초록색",Grey:"회색","Insert paragraph after block":"블록 뒤에 단락 삽입","Insert paragraph before block":"블록 앞에 단락 삽입","Light blue":"연한 파랑색","Light green":"밝은 초록색","Light grey":"밝은 회색",Next:"다음",Orange:"주황색",Previous:"이전",Purple:"보라색",Red:"빨간색",Redo:"다시 실행","Remove color":"색깔 제거","Restore default":"기본값 복원","Rich Text Editor":"리치 텍스트 편집기","Rich Text Editor. Editing area: %0":"리치 텍스트 편집기. 편집 영역: %0",Save:"저장","Select all":"전체 선택","Show more items":"더보기",Turquoise:"청록색",Undo:"실행 취소","Upload in progress":"업로드 진행 중",White:"흰색","Widget toolbar":"위젯 툴바",Yellow:"노랑색"}),e.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ku.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ku.js index 949ba1cc2c88ae618e7c1dd23f6a37bb8ef16795..e04ac8b631b1f286278b95160d4063a39e95ff25 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ku.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ku.js @@ -1 +1 @@ -!function(e){const o=e.ku=e.ku||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 لە %1",Aquamarine:"شینی دەریایی",Black:"ڕەش",Blue:"شین",Cancel:"هەڵوەشاندنەوە","Cannot upload file:":"پەڕگەکە ناتوانرێت باربکرێت:","Dim grey":"ڕەساسی تاریک","Dropdown toolbar":"تووڵامرازی لیستەیی","Edit block":"دەستکاری بلۆک","Editor editing area: %0":"","Editor toolbar":"تووڵامرازی دەسکاریکەر",Green:"سەوز",Grey:"ڕەساسی","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"شینی ڕووناک","Light green":"سەوزی ڕووناک","Light grey":"ڕەساسی ڕووناک",Next:"دواتر",Orange:"پرتەقاڵی",Previous:"پێشتر",Purple:"مۆر",Red:"سور",Redo:"هەلگەڕاندنەوە","Remove color":"لابردنی ڕەنگ","Restore default":"","Rich Text Editor":"سەرنوسەری دەقی بەپیت","Rich Text Editor. Editing area: %0":"",Save:"پاشکەوتکردن","Show more items":"بڕگەی زیاتر نیشانبدە",Turquoise:"شینی ئاسمانی",Undo:"وەک خۆی لێ بکەوە","Upload in progress":"بارکردنەکە لە جێبەجێکردن دایە",White:"سپی","Widget toolbar":"تووڵامرازی ویدجێت",Yellow:"زەرد"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.ku=o.ku||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 لە %1",Aquamarine:"شینی دەریایی",Black:"ڕەش",Blue:"شین",Cancel:"هەڵوەشاندنەوە","Cannot upload file:":"پەڕگەکە ناتوانرێت باربکرێت:","Dim grey":"ڕەساسی تاریک","Dropdown toolbar":"تووڵامرازی لیستەیی","Edit block":"دەستکاری بلۆک","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"تووڵامرازی دەسکاریکەر",Green:"سەوز",Grey:"ڕەساسی","Insert paragraph after block":"","Insert paragraph before block":"","Light blue":"شینی ڕووناک","Light green":"سەوزی ڕووناک","Light grey":"ڕەساسی ڕووناک",Next:"دواتر",Orange:"پرتەقاڵی",Previous:"پێشتر",Purple:"مۆر",Red:"سور",Redo:"هەلگەڕاندنەوە","Remove color":"لابردنی ڕەنگ","Restore default":"","Rich Text Editor":"سەرنوسەری دەقی بەپیت","Rich Text Editor. Editing area: %0":"",Save:"پاشکەوتکردن","Show more items":"بڕگەی زیاتر نیشانبدە",Turquoise:"شینی ئاسمانی",Undo:"وەک خۆی لێ بکەوە","Upload in progress":"بارکردنەکە لە جێبەجێکردن دایە",White:"سپی","Widget toolbar":"تووڵامرازی ویدجێت",Yellow:"زەرد"}),e.getPluralForm=function(o){return 1!=o}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/lt.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/lt.js index 1247f3f4c9191bef2e6314e0df4f4b0ef7b9470b..f68c1854251de0cdd3ba1c423b8952dce838ea97 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/lt.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/lt.js @@ -1 +1 @@ -!function(i){const a=i.lt=i.lt||{};a.dictionary=Object.assign(a.dictionary||{},{"%0 of %1":"%0 iš %1",Aquamarine:"Aquamarine",Black:"Juoda",Blue:"Mėlyna",Cancel:"Atšaukti","Cannot upload file:":"Negalima įkelti failo:","Dim grey":"Pilkšva","Dropdown toolbar":"Įrankių juosta pasirenkamajame sąraše","Edit block":"Redaguoti bloką","Editor editing area: %0":"Redaktoriaus redagavimo sritis: %0","Editor toolbar":"Redaktoriaus įrankių juosta",Green:"Žalia",Grey:"Pilka","Insert paragraph after block":"Įkelti pastraipą po bloko","Insert paragraph before block":"Įkelti pastraipą prieš bloką","Light blue":"Šviesiai mėlyna","Light green":"Šviesiai žalia","Light grey":"Šviesiai pilka",Next:"Kitas",Orange:"Oranžinė",Previous:"Buvęs",Purple:"Violetinė",Red:"Raudona",Redo:"Pirmyn","Remove color":"Pašalinti spalvą","Restore default":"Atkurti numatytuosius","Rich Text Editor":"Raiškiojo teksto redaktorius","Rich Text Editor. Editing area: %0":"Raiškiojo teksto redaktorius. Redagavimo sritis: %0",Save:"Išsaugoti","Select all":"Pasirinkti viską","Show more items":"Rodyti daugiau elementų",Turquoise:"Turkio",Undo:"Atgal","Upload in progress":"Įkelima",White:"Balta","Widget toolbar":"Valdiklių įrankių juosta",Yellow:"Geltona"}),a.getPluralForm=function(i){return i%10==1&&(i%100>19||i%100<11)?0:i%10>=2&&i%10<=9&&(i%100>19||i%100<11)?1:i%1!=0?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(i){const a=i.lt=i.lt||{};a.dictionary=Object.assign(a.dictionary||{},{"%0 of %1":"%0 iš %1",Aquamarine:"Aquamarine",Black:"Juoda",Blue:"Mėlyna",Cancel:"Atšaukti","Cannot upload file:":"Negalima įkelti failo:","Dim grey":"Pilkšva","Dropdown toolbar":"Įrankių juosta pasirenkamajame sąraše","Edit block":"Redaguoti bloką","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Redaktoriaus redagavimo sritis: %0","Editor toolbar":"Redaktoriaus įrankių juosta",Green:"Žalia",Grey:"Pilka","Insert paragraph after block":"Įkelti pastraipą po bloko","Insert paragraph before block":"Įkelti pastraipą prieš bloką","Light blue":"Šviesiai mėlyna","Light green":"Šviesiai žalia","Light grey":"Šviesiai pilka",Next:"Kitas",Orange:"Oranžinė",Previous:"Buvęs",Purple:"Violetinė",Red:"Raudona",Redo:"Pirmyn","Remove color":"Pašalinti spalvą","Restore default":"Atkurti numatytuosius","Rich Text Editor":"Raiškiojo teksto redaktorius","Rich Text Editor. Editing area: %0":"Raiškiojo teksto redaktorius. Redagavimo sritis: %0",Save:"Išsaugoti","Select all":"Pasirinkti viską","Show more items":"Rodyti daugiau elementų",Turquoise:"Turkio",Undo:"Atgal","Upload in progress":"Įkelima",White:"Balta","Widget toolbar":"Valdiklių įrankių juosta",Yellow:"Geltona"}),a.getPluralForm=function(i){return i%10==1&&(i%100>19||i%100<11)?0:i%10>=2&&i%10<=9&&(i%100>19||i%100<11)?1:i%1!=0?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/lv.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/lv.js index 2d35ef62664652606c94b2054a2f33ac06e1cf69..cf478284534ea7a1ceac1d86a70d5b3917fecc82 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/lv.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/lv.js @@ -1 +1 @@ -!function(a){const e=a.lv=a.lv||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 no %1",Aquamarine:"Akvamarīns",Black:"Melns",Blue:"Zils",Cancel:"Atcelt","Cannot upload file:":"Nevar augšupielādēt failu:","Dim grey":"Blāvi pelēks","Dropdown toolbar":"Papildus izvēlnes rīkjosla","Edit block":"Labot bloku","Editor editing area: %0":"Redaktora rediģēšanas zona: %0","Editor toolbar":"Redaktora rīkjosla",Green:"Zaļš",Grey:"Pelēks","Insert paragraph after block":"Ievietot paragrāfu aiz bloka","Insert paragraph before block":"Ievietot paragrāfu pirms bloka","Light blue":"Gaiši zils","Light green":"Gaiši zaļš","Light grey":"Gaiši pelēks",Next:"Nākamā",Orange:"Oranžs",Previous:"Iepriekšējā",Purple:"Violets",Red:"Sarkans",Redo:"Uz priekšu","Remove color":"Noņemt krāsu","Restore default":"Atgriezt noklusējumu","Rich Text Editor":"Bagātinātais Teksta Redaktors","Rich Text Editor. Editing area: %0":"Bagātīga Teksta Redaktors. Rediģēšanas zona: %0",Save:"Saglabāt","Select all":"Izvēlēties visu","Show more items":"Parādīt vairāk vienumus",Turquoise:"Tirkīza",Undo:"Atsaukt","Upload in progress":"Notiek augšupielāde",White:"Balts","Widget toolbar":"Sīkrīku rīkjosla",Yellow:"Dzeltens"}),e.getPluralForm=function(a){return a%10==1&&a%100!=11?0:0!=a?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(a){const e=a.lv=a.lv||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 no %1",Aquamarine:"Akvamarīns",Black:"Melns",Blue:"Zils",Cancel:"Atcelt","Cannot upload file:":"Nevar augšupielādēt failu:","Dim grey":"Blāvi pelēks","Dropdown toolbar":"Papildus izvēlnes rīkjosla","Edit block":"Labot bloku","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Redaktora rediģēšanas zona: %0","Editor toolbar":"Redaktora rīkjosla",Green:"Zaļš",Grey:"Pelēks","Insert paragraph after block":"Ievietot paragrāfu aiz bloka","Insert paragraph before block":"Ievietot paragrāfu pirms bloka","Light blue":"Gaiši zils","Light green":"Gaiši zaļš","Light grey":"Gaiši pelēks",Next:"Nākamā",Orange:"Oranžs",Previous:"Iepriekšējā",Purple:"Violets",Red:"Sarkans",Redo:"Uz priekšu","Remove color":"Noņemt krāsu","Restore default":"Atgriezt noklusējumu","Rich Text Editor":"Bagātinātais Teksta Redaktors","Rich Text Editor. Editing area: %0":"Bagātīga Teksta Redaktors. Rediģēšanas zona: %0",Save:"Saglabāt","Select all":"Izvēlēties visu","Show more items":"Parādīt vairāk vienumus",Turquoise:"Tirkīza",Undo:"Atsaukt","Upload in progress":"Notiek augšupielāde",White:"Balts","Widget toolbar":"Sīkrīku rīkjosla",Yellow:"Dzeltens"}),e.getPluralForm=function(a){return a%10==1&&a%100!=11?0:0!=a?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ms.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ms.js index 50bbcf58230efafbca0239227c48410ae633a6b5..a08176bec5191952431bb88f144afa734adf5f13 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ms.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ms.js @@ -1 +1 @@ -!function(a){const e=a.ms=a.ms||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 daripada %1",Aquamarine:"Akuamarin",Black:"Hitam",Blue:"Biru",Cancel:"Batal","Cannot upload file:":"Gagal memuat naik fail","Dim grey":"Kelabu malap","Dropdown toolbar":"Bar alat capaian tetingkap","Edit block":"Sunting blok","Editor editing area: %0":"Ruang suntingan editor: %0","Editor toolbar":"Bar alat capaian suntingan",Green:"Hijau",Grey:"Kelabu","Insert paragraph after block":"Masukkan perenggan sebelum blok","Insert paragraph before block":"Masukkan perenggan sebelum blok","Light blue":"Biru cerah","Light green":"Hijau cerah","Light grey":"Kelabu cerah",Next:"Seterusnya",Orange:"Oren",Previous:"Sebelumnya",Purple:"Ungu",Red:"Merah",Redo:"Buat semula","Remove color":"Buang warna","Restore default":"Pulihkan lalai","Rich Text Editor":"Penyunting Teks Kaya","Rich Text Editor. Editing area: %0":"Editor Teks Kaya. Ruang suntingan: %0",Save:"Simpan","Select all":"Pilih seterusnya","Show more items":"Tunjukkan item lain",Turquoise:"Firus",Undo:"Buat asal","Upload in progress":"Muat naik sedang berlangsung",White:"Putih","Widget toolbar":"Bar alat capaian widget",Yellow:"Kuning"}),e.getPluralForm=function(a){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(a){const e=a.ms=a.ms||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 daripada %1",Aquamarine:"Akuamarin",Black:"Hitam",Blue:"Biru",Cancel:"Batal","Cannot upload file:":"Gagal memuat naik fail","Dim grey":"Kelabu malap","Dropdown toolbar":"Bar alat capaian tetingkap","Edit block":"Sunting blok","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Ruang suntingan editor: %0","Editor toolbar":"Bar alat capaian suntingan",Green:"Hijau",Grey:"Kelabu","Insert paragraph after block":"Masukkan perenggan sebelum blok","Insert paragraph before block":"Masukkan perenggan sebelum blok","Light blue":"Biru cerah","Light green":"Hijau cerah","Light grey":"Kelabu cerah",Next:"Seterusnya",Orange:"Oren",Previous:"Sebelumnya",Purple:"Ungu",Red:"Merah",Redo:"Buat semula","Remove color":"Buang warna","Restore default":"Pulihkan lalai","Rich Text Editor":"Penyunting Teks Kaya","Rich Text Editor. Editing area: %0":"Editor Teks Kaya. Ruang suntingan: %0",Save:"Simpan","Select all":"Pilih seterusnya","Show more items":"Tunjukkan item lain",Turquoise:"Firus",Undo:"Buat asal","Upload in progress":"Muat naik sedang berlangsung",White:"Putih","Widget toolbar":"Bar alat capaian widget",Yellow:"Kuning"}),e.getPluralForm=function(a){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/nb.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/nb.js index 14d02a4d2682f5f54a0b06c6077f6156b8c9a7ec..1a0c63550ebe08d0debfa46ab3be26556bad7be8 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/nb.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/nb.js @@ -1 +1 @@ -!function(e){const o=e.nb=e.nb||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Avbryt","Cannot upload file:":"Kan ikke laste opp fil:","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Gjør om","Remove color":"","Restore default":"","Rich Text Editor":"Rikteksteditor","Rich Text Editor. Editing area: %0":"",Save:"Lagre","Show more items":"",Turquoise:"",Undo:"Angre","Upload in progress":"Opplasting pågår",White:"",Yellow:""}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.nb=o.nb||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Avbryt","Cannot upload file:":"Kan ikke laste opp fil:","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Gjør om","Remove color":"","Restore default":"","Rich Text Editor":"Rikteksteditor","Rich Text Editor. Editing area: %0":"",Save:"Lagre","Show more items":"",Turquoise:"",Undo:"Angre","Upload in progress":"Opplasting pågår",White:"",Yellow:""}),e.getPluralForm=function(o){return 1!=o}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ne.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ne.js index d47094a9b9a711bf1186c2b457e9044871206693..0c5f41701e3f17ea40aec2bf0ccd6ae68d9dd5d1 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ne.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ne.js @@ -1 +1 @@ -!function(e){const o=e.ne=e.ne||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 मध्ये %1",Aquamarine:"अव्कवामरिन",Black:"कालो",Blue:"निलो",Cancel:"रद्द गर्नुहोस्","Cannot upload file:":"फाइल अपलोड गर्न मिल्दैन","Dim grey":"धमिलो खैरो","Dropdown toolbar":"","Edit block":"ब्लक सम्पादन गर्न","Editor editing area: %0":"","Editor toolbar":"",Green:"हरियो",Grey:"खैरो","Light blue":"हल्का निलो","Light green":"हल्का हरियो","Light grey":"हल्का खैरो",Next:"अर्को",Orange:"सुन्तला रंग",Previous:"अघिल्लो",Purple:"बैंगनी रंग",Red:"रातो",Redo:"रिडु","Remove color":"रंग हटाउन","Restore default":"","Rich Text Editor":"धनी पाठ सम्पादक","Rich Text Editor. Editing area: %0":"",Save:"सुरक्षित गर्नुहोस्","Show more items":"",Turquoise:"त्रकोइस",Undo:"पूर्ववत","Upload in progress":"अपलोड हुदैछ",White:"सेतो",Yellow:"पहेंलो"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.ne=o.ne||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 मध्ये %1",Aquamarine:"अव्कवामरिन",Black:"कालो",Blue:"निलो",Cancel:"रद्द गर्नुहोस्","Cannot upload file:":"फाइल अपलोड गर्न मिल्दैन","Dim grey":"धमिलो खैरो","Dropdown toolbar":"","Edit block":"ब्लक सम्पादन गर्न","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"",Green:"हरियो",Grey:"खैरो","Light blue":"हल्का निलो","Light green":"हल्का हरियो","Light grey":"हल्का खैरो",Next:"अर्को",Orange:"सुन्तला रंग",Previous:"अघिल्लो",Purple:"बैंगनी रंग",Red:"रातो",Redo:"रिडु","Remove color":"रंग हटाउन","Restore default":"","Rich Text Editor":"धनी पाठ सम्पादक","Rich Text Editor. Editing area: %0":"",Save:"सुरक्षित गर्नुहोस्","Show more items":"",Turquoise:"त्रकोइस",Undo:"पूर्ववत","Upload in progress":"अपलोड हुदैछ",White:"सेतो",Yellow:"पहेंलो"}),e.getPluralForm=function(o){return 1!=o}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/nl.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/nl.js index dd5900a74b5672dba6e7927217153f2002ce7f9f..a6fd1603ddeabd03390b32017a36dc9a99cf2c62 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/nl.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/nl.js @@ -1 +1 @@ -!function(e){const r=e.nl=e.nl||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 van %1",Aquamarine:"Aquamarijn",Black:"Zwart",Blue:"Blauw",Cancel:"Annuleren","Cannot upload file:":"Kan bestand niet uploaden:","Dim grey":"Gedimd grijs","Dropdown toolbar":"Drop-down werkbalk","Edit block":"Blok aanpassen","Editor editing area: %0":"Bewerkingsgebied: %0","Editor toolbar":"Editor welkbalk",Green:"Groen",Grey:"Grijs","Insert paragraph after block":"Voeg paragraaf toe na blok","Insert paragraph before block":"Voeg paragraaf toe voor blok","Light blue":"Lichtblauw","Light green":"Lichtgroen","Light grey":"Lichtgrijs",Next:"Volgende",Orange:"Oranje",Previous:"Vorige",Purple:"Paars",Red:"Rood",Redo:"Opnieuw","Remove color":"Verwijder kleur","Restore default":"Standaardinstellingen terugzetten","Rich Text Editor":"Tekstbewerker","Rich Text Editor. Editing area: %0":"Rich Text Editor. Bewerkingsgebied: %0",Save:"Opslaan","Select all":"Selecteer alles","Show more items":"Meer items weergeven",Turquoise:"Turquoise",Undo:"Ongedaan maken","Upload in progress":"Bezig met uploaden",White:"Wit","Widget toolbar":"Widget werkbalk",Yellow:"Geel"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const r=e.nl=e.nl||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 van %1",Aquamarine:"Aquamarijn",Black:"Zwart",Blue:"Blauw",Cancel:"Annuleren","Cannot upload file:":"Kan bestand niet uploaden:","Dim grey":"Gedimd grijs","Dropdown toolbar":"Drop-down werkbalk","Edit block":"Blok aanpassen","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Bewerkingsgebied: %0","Editor toolbar":"Editor welkbalk",Green:"Groen",Grey:"Grijs","Insert paragraph after block":"Voeg paragraaf toe na blok","Insert paragraph before block":"Voeg paragraaf toe voor blok","Light blue":"Lichtblauw","Light green":"Lichtgroen","Light grey":"Lichtgrijs",Next:"Volgende",Orange:"Oranje",Previous:"Vorige",Purple:"Paars",Red:"Rood",Redo:"Opnieuw","Remove color":"Verwijder kleur","Restore default":"Standaardinstellingen terugzetten","Rich Text Editor":"Tekstbewerker","Rich Text Editor. Editing area: %0":"Rich Text Editor. Bewerkingsgebied: %0",Save:"Opslaan","Select all":"Selecteer alles","Show more items":"Meer items weergeven",Turquoise:"Turquoise",Undo:"Ongedaan maken","Upload in progress":"Bezig met uploaden",White:"Wit","Widget toolbar":"Widget werkbalk",Yellow:"Geel"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/no.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/no.js index d7381deb8eb90a0b91941706139d1bbb3808483f..bc3ccdb83ebf9704257086481368b7e87e212819 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/no.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/no.js @@ -1 +1 @@ -!function(e){const r=e.no=e.no||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 av %1",Aquamarine:"Akvamarin",Black:"Svart",Blue:"Blå",Cancel:"Avbryt","Cannot upload file:":"Kan ikke laste opp fil:","Dim grey":"Svak grå","Dropdown toolbar":"Verktøylinje for nedtrekksliste","Edit block":"Rediger blokk","Editor editing area: %0":"Redigeringsområde for redigeringsverktøyet: %0","Editor toolbar":"Verktøylinje for redigeringsverktøy",Green:"Grønn",Grey:"Grå","Insert paragraph after block":"Sett inn paragraf etter blokk","Insert paragraph before block":"Sett inn paragraf foran blokk","Light blue":"Lyseblå","Light green":"Lysegrønn","Light grey":"Lysegrå",Next:"Neste",Orange:"Oransje",Previous:"Forrige",Purple:"Lilla",Red:"Rød",Redo:"Gjør om","Remove color":"Fjern farge","Restore default":"Tilbakestill til standard","Rich Text Editor":"Tekstredigeringsverktøy for rik tekst","Rich Text Editor. Editing area: %0":"Redigeringsverktøy for rik tekst. Redigeringsområde: %0",Save:"Lagre","Select all":"Velg alt ","Show more items":"Vis flere elementer",Turquoise:"Turkis",Undo:"Angre","Upload in progress":"Laster opp fil",White:"Hvit","Widget toolbar":"Widget verktøylinje ",Yellow:"Gul"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const r=e.no=e.no||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 av %1",Aquamarine:"Akvamarin",Black:"Svart",Blue:"Blå",Cancel:"Avbryt","Cannot upload file:":"Kan ikke laste opp fil:","Dim grey":"Svak grå","Dropdown toolbar":"Verktøylinje for nedtrekksliste","Edit block":"Rediger blokk","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Redigeringsområde for redigeringsverktøyet: %0","Editor toolbar":"Verktøylinje for redigeringsverktøy",Green:"Grønn",Grey:"Grå","Insert paragraph after block":"Sett inn paragraf etter blokk","Insert paragraph before block":"Sett inn paragraf foran blokk","Light blue":"Lyseblå","Light green":"Lysegrønn","Light grey":"Lysegrå",Next:"Neste",Orange:"Oransje",Previous:"Forrige",Purple:"Lilla",Red:"Rød",Redo:"Gjør om","Remove color":"Fjern farge","Restore default":"Tilbakestill til standard","Rich Text Editor":"Tekstredigeringsverktøy for rik tekst","Rich Text Editor. Editing area: %0":"Redigeringsverktøy for rik tekst. Redigeringsområde: %0",Save:"Lagre","Select all":"Velg alt ","Show more items":"Vis flere elementer",Turquoise:"Turkis",Undo:"Angre","Upload in progress":"Laster opp fil",White:"Hvit","Widget toolbar":"Widget verktøylinje ",Yellow:"Gul"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pl.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pl.js index 945fc69e4107c1c7ff52c46b11c2632432de6978..dfa45e4e9a33c256479dc96418882518adceee1a 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pl.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pl.js @@ -1 +1 @@ -!function(e){const o=e.pl=e.pl||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 z %1",Aquamarine:"Akwamaryna",Black:"Czarny",Blue:"Niebieski",Cancel:"Anuluj","Cannot upload file:":"Nie można przesłać pliku:","Dim grey":"Ciemnoszary","Dropdown toolbar":"Rozwijany pasek narzędzi","Edit block":"Edytuj blok","Editor editing area: %0":"Obszar edycji edytora: %0","Editor toolbar":"Pasek narzędzi edytora",Green:"Zielony",Grey:"Szary","Insert paragraph after block":"Wstaw akapit po bloku","Insert paragraph before block":"Wstaw akapit przed blokiem","Light blue":"Jasnoniebieski","Light green":"Jasnozielony","Light grey":"Jasnoszary",Next:"Następny",Orange:"Pomarańczowy",Previous:"Poprzedni",Purple:"Purpurowy",Red:"Czerwony",Redo:"Ponów","Remove color":"Usuń kolor","Restore default":"Przywróć domyślne","Rich Text Editor":"Edytor tekstu sformatowanego","Rich Text Editor. Editing area: %0":"Edytor tekstu. Obszar edycji: %0",Save:"Zapisz","Select all":"Zaznacz wszystko","Show more items":"Pokaż więcej",Turquoise:"Turkusowy",Undo:"Cofnij","Upload in progress":"Trwa przesyłanie",White:"Biały","Widget toolbar":"Pasek widgetów",Yellow:"Żółty"}),o.getPluralForm=function(e){return 1==e?0:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?1:1!=e&&e%10>=0&&e%10<=1||e%10>=5&&e%10<=9||e%100>=12&&e%100<=14?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.pl=o.pl||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 z %1",Aquamarine:"Akwamaryna",Black:"Czarny",Blue:"Niebieski",Cancel:"Anuluj","Cannot upload file:":"Nie można przesłać pliku:","Dim grey":"Ciemnoszary","Dropdown toolbar":"Rozwijany pasek narzędzi","Edit block":"Edytuj blok","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Obszar edycji edytora: %0","Editor toolbar":"Pasek narzędzi edytora",Green:"Zielony",Grey:"Szary","Insert paragraph after block":"Wstaw akapit po bloku","Insert paragraph before block":"Wstaw akapit przed blokiem","Light blue":"Jasnoniebieski","Light green":"Jasnozielony","Light grey":"Jasnoszary",Next:"Następny",Orange:"Pomarańczowy",Previous:"Poprzedni",Purple:"Purpurowy",Red:"Czerwony",Redo:"Ponów","Remove color":"Usuń kolor","Restore default":"Przywróć domyślne","Rich Text Editor":"Edytor tekstu sformatowanego","Rich Text Editor. Editing area: %0":"Edytor tekstu. Obszar edycji: %0",Save:"Zapisz","Select all":"Zaznacz wszystko","Show more items":"Pokaż więcej",Turquoise:"Turkusowy",Undo:"Cofnij","Upload in progress":"Trwa przesyłanie",White:"Biały","Widget toolbar":"Pasek widgetów",Yellow:"Żółty"}),e.getPluralForm=function(o){return 1==o?0:o%10>=2&&o%10<=4&&(o%100<12||o%100>14)?1:1!=o&&o%10>=0&&o%10<=1||o%10>=5&&o%10<=9||o%100>=12&&o%100<=14?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pt-br.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pt-br.js index f29deb07487529d31674e8f328e29c052406cf34..3d3a896fa896246cb3ad4cb2056d3af961d03ad2 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pt-br.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pt-br.js @@ -1 +1 @@ -!function(e){const r=e["pt-br"]=e["pt-br"]||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Água-marinha",Black:"Preto",Blue:"Azul",Cancel:"Cancelar","Cannot upload file:":"Não foi possível enviar o arquivo:","Dim grey":"Cinza escuro","Dropdown toolbar":"Barra de Ferramentas da Lista Suspensa","Edit block":"Editor de bloco","Editor editing area: %0":"Área de edição do editor: %0","Editor toolbar":"Ferramentas do Editor",Green:"Verde",Grey:"Cinza","Insert paragraph after block":"Inserir parágrafo após o bloco","Insert paragraph before block":"Inserir parágrafo antes do bloco","Light blue":"Azul claro","Light green":"Verde claro","Light grey":"Cinza claro",Next:"Próximo",Orange:"Laranja",Previous:"Anterior",Purple:"Púrpura",Red:"Vermelho",Redo:"Refazer","Remove color":"Remover cor","Restore default":"Restaurar padrão","Rich Text Editor":"Editor de Formatação","Rich Text Editor. Editing area: %0":"Editor de Texto Valioso. Área de edição: %0",Save:"Salvar","Select all":"Selecionar tudo","Show more items":"Exibir mais itens",Turquoise:"Turquesa",Undo:"Desfazer","Upload in progress":"Enviando dados",White:"Branco","Widget toolbar":"Ferramentas de Widgets",Yellow:"Amarelo"}),r.getPluralForm=function(e){return 0==e||1==e?0:0!=e&&e%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(r){const e=r["pt-br"]=r["pt-br"]||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Água-marinha",Black:"Preto",Blue:"Azul",Cancel:"Cancelar","Cannot upload file:":"Não foi possível enviar o arquivo:","Dim grey":"Cinza escuro","Dropdown toolbar":"Barra de Ferramentas da Lista Suspensa","Edit block":"Editor de bloco","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Área de edição do editor: %0","Editor toolbar":"Ferramentas do Editor",Green:"Verde",Grey:"Cinza","Insert paragraph after block":"Inserir parágrafo após o bloco","Insert paragraph before block":"Inserir parágrafo antes do bloco","Light blue":"Azul claro","Light green":"Verde claro","Light grey":"Cinza claro",Next:"Próximo",Orange:"Laranja",Previous:"Anterior",Purple:"Púrpura",Red:"Vermelho",Redo:"Refazer","Remove color":"Remover cor","Restore default":"Restaurar padrão","Rich Text Editor":"Editor de Formatação","Rich Text Editor. Editing area: %0":"Editor de Texto Valioso. Área de edição: %0",Save:"Salvar","Select all":"Selecionar tudo","Show more items":"Exibir mais itens",Turquoise:"Turquesa",Undo:"Desfazer","Upload in progress":"Enviando dados",White:"Branco","Widget toolbar":"Ferramentas de Widgets",Yellow:"Amarelo"}),e.getPluralForm=function(r){return 0==r||1==r?0:0!=r&&r%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pt.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pt.js index 270272e23e025313f42037577f4802a426ab0d92..55e14ae3fefccfbc09e389f50b0e11fc4a5a3e3d 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pt.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/pt.js @@ -1 +1 @@ -!function(e){const r=e.pt=e.pt||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Verde-azulado",Black:"Preto",Blue:"Azul",Cancel:"Cancelar","Cannot upload file:":"Não foi possível carregar o ficheiro:","Dim grey":"Cinzento-escuro","Dropdown toolbar":"Barra de ferramentas do dropdown","Edit block":"Editar bloco","Editor editing area: %0":"Área de edição do editor: %0","Editor toolbar":"Barra de ferramentas do editor",Green:"Verde",Grey:"Cinzento","Insert paragraph after block":"Inserir parágrafo após o bloco","Insert paragraph before block":"Inserir parágrafo antes do bloco","Light blue":"Azul-claro","Light green":"Verde-claro","Light grey":"Cinzento-claro",Next:"Seguinte",Orange:"Laranja",Previous:"Anterior",Purple:"Roxo",Red:"Vermelho",Redo:"Refazer","Remove color":"Remover cor","Restore default":"Restaurar predefinição","Rich Text Editor":"Editor de texto avançado","Rich Text Editor. Editing area: %0":"Editor de Texto Formatado. Área de edição: %0",Save:"Guardar","Select all":"Selecionar todos","Show more items":"Mostrar mais itens",Turquoise:"Turquesa",Undo:"Desfazer","Upload in progress":"Carregamento em progresso",White:"Branco","Widget toolbar":"Barra de ferramentas do widget",Yellow:"Amarelo"}),r.getPluralForm=function(e){return 0==e||1==e?0:0!=e&&e%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const r=e.pt=e.pt||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 de %1",Aquamarine:"Verde-azulado",Black:"Preto",Blue:"Azul",Cancel:"Cancelar","Cannot upload file:":"Não foi possível carregar o ficheiro:","Dim grey":"Cinzento-escuro","Dropdown toolbar":"Barra de ferramentas do dropdown","Edit block":"Editar bloco","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Área de edição do editor: %0","Editor toolbar":"Barra de ferramentas do editor",Green:"Verde",Grey:"Cinzento","Insert paragraph after block":"Inserir parágrafo após o bloco","Insert paragraph before block":"Inserir parágrafo antes do bloco","Light blue":"Azul-claro","Light green":"Verde-claro","Light grey":"Cinzento-claro",Next:"Seguinte",Orange:"Laranja",Previous:"Anterior",Purple:"Roxo",Red:"Vermelho",Redo:"Refazer","Remove color":"Remover cor","Restore default":"Restaurar predefinição","Rich Text Editor":"Editor de texto avançado","Rich Text Editor. Editing area: %0":"Editor de Texto Formatado. Área de edição: %0",Save:"Guardar","Select all":"Selecionar todos","Show more items":"Mostrar mais itens",Turquoise:"Turquesa",Undo:"Desfazer","Upload in progress":"Carregamento em progresso",White:"Branco","Widget toolbar":"Barra de ferramentas do widget",Yellow:"Amarelo"}),r.getPluralForm=function(e){return 0==e||1==e?0:0!=e&&e%1e6==0?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ro.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ro.js index 8faa5e3476ec7c19bd4eebdfa34fa0e3ae0edfb0..43b4138a76437d6e76e3bd0363c1931fa3a6bd1d 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ro.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ro.js @@ -1 +1 @@ -!function(e){const r=e.ro=e.ro||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 din %1",Aquamarine:"Acvamarin",Black:"Negru",Blue:"Albastru",Cancel:"Anulare","Cannot upload file:":"Nu se poate încărca fișierul:","Dim grey":"Gri slab","Dropdown toolbar":"Bară listă opțiuni","Edit block":"Editează bloc","Editor editing area: %0":"Zonă editare editor: %0","Editor toolbar":"Bară editor",Green:"Verde",Grey:"Gri","Insert paragraph after block":"Inserează un paragraf după bloc","Insert paragraph before block":"Inserează un paragraf înaintea blocului","Light blue":"Albastru deschis","Light green":"Verde deschis","Light grey":"Gri deschis",Next:"Înainte",Orange:"Portocaliu",Previous:"Înapoi",Purple:"Violet",Red:"Roșu",Redo:"Revenire","Remove color":"Șterge culoare","Restore default":"Reface la default","Rich Text Editor":"Editor de text","Rich Text Editor. Editing area: %0":"Editor Rich Text. Zonă editare: %0",Save:"Salvare","Select all":"Selectează-le pe toate","Show more items":"Arată mai multe elemente",Turquoise:"Turcoaz",Undo:"Anulare","Upload in progress":"Încărcare în curs",White:"Alb","Widget toolbar":"Bară widget",Yellow:"Galben"}),r.getPluralForm=function(e){return 1==e?0:e%100>19||e%100==0&&0!=e?2:1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const r=e.ro=e.ro||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 din %1",Aquamarine:"Acvamarin",Black:"Negru",Blue:"Albastru",Cancel:"Anulare","Cannot upload file:":"Nu se poate încărca fișierul:","Dim grey":"Gri slab","Dropdown toolbar":"Bară listă opțiuni","Edit block":"Editează bloc","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Zonă editare editor: %0","Editor toolbar":"Bară editor",Green:"Verde",Grey:"Gri","Insert paragraph after block":"Inserează un paragraf după bloc","Insert paragraph before block":"Inserează un paragraf înaintea blocului","Light blue":"Albastru deschis","Light green":"Verde deschis","Light grey":"Gri deschis",Next:"Înainte",Orange:"Portocaliu",Previous:"Înapoi",Purple:"Violet",Red:"Roșu",Redo:"Revenire","Remove color":"Șterge culoare","Restore default":"Reface la default","Rich Text Editor":"Editor de text","Rich Text Editor. Editing area: %0":"Editor Rich Text. Zonă editare: %0",Save:"Salvare","Select all":"Selectează-le pe toate","Show more items":"Arată mai multe elemente",Turquoise:"Turcoaz",Undo:"Anulare","Upload in progress":"Încărcare în curs",White:"Alb","Widget toolbar":"Bară widget",Yellow:"Galben"}),r.getPluralForm=function(e){return 1==e?0:e%100>19||e%100==0&&0!=e?2:1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ru.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ru.js index ecf6a61fef5f200650e93d8150348e6eb0341fa9..11c0e1036bc5819316c2dee006f141b573227329 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ru.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ru.js @@ -1 +1 @@ -!function(e){const r=e.ru=e.ru||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 из %1",Aquamarine:"Аквамариновый",Black:"Чёрный",Blue:"Синий",Cancel:"Отмена","Cannot upload file:":"Невозможно загрузить файл","Dim grey":"Тёмно-серый","Dropdown toolbar":"Выпадающая панель инструментов","Edit block":"Редактировать блок","Editor editing area: %0":"Область редактирования редактора: %0","Editor toolbar":"Панель инструментов редактора",Green:"Зелёный",Grey:"Серый","Insert paragraph after block":"Вставить параграф после блока","Insert paragraph before block":"Вставить параграф перед блоком","Light blue":"Голубой","Light green":"Салатовый","Light grey":"Светло-серый",Next:"Следующий",Orange:"Оранжевый",Previous:"Предыдущий",Purple:"Фиолетовый",Red:"Красный",Redo:"Повторить","Remove color":"Убрать цвет","Restore default":"По умолчанию","Rich Text Editor":"Редактор","Rich Text Editor. Editing area: %0":"Редактор форматированного текста. Область редактирования: %0",Save:"Сохранить","Select all":"Выбрать все","Show more items":"Другие инструменты",Turquoise:"Бирюзовый",Undo:"Отменить","Upload in progress":"Идёт загрузка",White:"Белый","Widget toolbar":"Панель инструментов виджета",Yellow:"Жёлтый"}),r.getPluralForm=function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?1:e%10==0||e%10>=5&&e%10<=9||e%100>=11&&e%100<=14?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.ru=o.ru||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 из %1",Aquamarine:"Аквамариновый",Black:"Чёрный",Blue:"Синий",Cancel:"Отмена","Cannot upload file:":"Невозможно загрузить файл","Dim grey":"Тёмно-серый","Dropdown toolbar":"Выпадающая панель инструментов","Edit block":"Редактировать блок","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Область редактирования редактора: %0","Editor toolbar":"Панель инструментов редактора",Green:"Зелёный",Grey:"Серый","Insert paragraph after block":"Вставить параграф после блока","Insert paragraph before block":"Вставить параграф перед блоком","Light blue":"Голубой","Light green":"Салатовый","Light grey":"Светло-серый",Next:"Следующий",Orange:"Оранжевый",Previous:"Предыдущий",Purple:"Фиолетовый",Red:"Красный",Redo:"Повторить","Remove color":"Убрать цвет","Restore default":"По умолчанию","Rich Text Editor":"Редактор","Rich Text Editor. Editing area: %0":"Редактор форматированного текста. Область редактирования: %0",Save:"Сохранить","Select all":"Выбрать все","Show more items":"Другие инструменты",Turquoise:"Бирюзовый",Undo:"Отменить","Upload in progress":"Идёт загрузка",White:"Белый","Widget toolbar":"Панель инструментов виджета",Yellow:"Жёлтый"}),e.getPluralForm=function(o){return o%10==1&&o%100!=11?0:o%10>=2&&o%10<=4&&(o%100<12||o%100>14)?1:o%10==0||o%10>=5&&o%10<=9||o%100>=11&&o%100<=14?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sk.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sk.js index 20be0fc3cf0d44d4055f50ad6100ede2b1a8a2c1..85ffa95a6fb16c85bc7347b85b25bd16e768546f 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sk.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sk.js @@ -1 +1 @@ -!function(o){const e=o.sk=o.sk||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 z %1",Aquamarine:"Akvamarínová",Black:"Čierna",Blue:"Modrá",Cancel:"Zrušiť","Cannot upload file:":"Nie je možné nahrať súbor:","Dim grey":"Tmavosivá","Dropdown toolbar":"Panel nástrojov roletového menu","Edit block":"Upraviť odsek","Editor editing area: %0":"Oblasť úprav editora: %0","Editor toolbar":"Panel nástrojov editora",Green:"Zelená",Grey:"Sivá","Insert paragraph after block":"Vložiť odstavec za blok","Insert paragraph before block":"Vložiť odstavec pred blok","Light blue":"Bledomodrá","Light green":"Bledozelená","Light grey":"Bledosivá",Next:"Ďalšie",Orange:"Oranžová",Previous:"Predchádzajúce",Purple:"Fialová",Red:"Červená",Redo:"Znova","Remove color":"Zrušiť farbu","Restore default":"Obnoviť predvolené","Rich Text Editor":"Editor s formátovaním","Rich Text Editor. Editing area: %0":"Rich Text Editor. Oblasť úprav: %0",Save:"Uložiť","Select all":"Označiť všetko","Show more items":"Zobraziť viac položiek",Turquoise:"Tyrkysová",Undo:"Späť","Upload in progress":"Prebieha nahrávanie",White:"Biela","Widget toolbar":"Panel nástrojov ovládacieho prvku",Yellow:"Žltá"}),e.getPluralForm=function(o){return o%1==0&&1==o?0:o%1==0&&o>=2&&o<=4?1:o%1!=0?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.sk=o.sk||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 z %1",Aquamarine:"Akvamarínová",Black:"Čierna",Blue:"Modrá",Cancel:"Zrušiť","Cannot upload file:":"Nie je možné nahrať súbor:","Dim grey":"Tmavosivá","Dropdown toolbar":"Panel nástrojov roletového menu","Edit block":"Upraviť odsek","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Oblasť úprav editora: %0","Editor toolbar":"Panel nástrojov editora",Green:"Zelená",Grey:"Sivá","Insert paragraph after block":"Vložiť odstavec za blok","Insert paragraph before block":"Vložiť odstavec pred blok","Light blue":"Bledomodrá","Light green":"Bledozelená","Light grey":"Bledosivá",Next:"Ďalšie",Orange:"Oranžová",Previous:"Predchádzajúce",Purple:"Fialová",Red:"Červená",Redo:"Znova","Remove color":"Zrušiť farbu","Restore default":"Obnoviť predvolené","Rich Text Editor":"Editor s formátovaním","Rich Text Editor. Editing area: %0":"Rich Text Editor. Oblasť úprav: %0",Save:"Uložiť","Select all":"Označiť všetko","Show more items":"Zobraziť viac položiek",Turquoise:"Tyrkysová",Undo:"Späť","Upload in progress":"Prebieha nahrávanie",White:"Biela","Widget toolbar":"Panel nástrojov ovládacieho prvku",Yellow:"Žltá"}),e.getPluralForm=function(o){return o%1==0&&1==o?0:o%1==0&&o>=2&&o<=4?1:o%1!=0?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sl.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sl.js index 656ad9001e4ca307f147936327bf775bb3f45407..205b5fee339b89e2a870cde37c5ac71776c0bc14 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sl.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sl.js @@ -1 +1 @@ -!function(e){const i=e.sl=e.sl||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"",Aquamarine:"Akvamarin",Black:"Črna",Blue:"Modra",Cancel:"Prekliči","Cannot upload file:":"Ni možno naložiti datoteke:","Dim grey":"Temno siva","Dropdown toolbar":"","Edit block":"","Editor editing area: %0":"","Editor toolbar":"",Green:"Zelena",Grey:"Siva","Light blue":"Svetlo modra","Light green":"Svetlo zelena","Light grey":"Svetlo siva",Next:"",Orange:"Oranžna",Previous:"",Purple:"Vijolična",Red:"Rdeča","Remove color":"Odstrani barvo","Restore default":"","Rich Text Editor":"","Rich Text Editor. Editing area: %0":"",Save:"Shrani","Show more items":"",Turquoise:"Turkizna",White:"Bela",Yellow:"Rumena"}),i.getPluralForm=function(e){return e%100==1?0:e%100==2?1:e%100==3||e%100==4?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const o=e.sl=e.sl||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"Akvamarin",Black:"Črna",Blue:"Modra",Cancel:"Prekliči","Cannot upload file:":"Ni možno naložiti datoteke:","Dim grey":"Temno siva","Dropdown toolbar":"","Edit block":"","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"",Green:"Zelena",Grey:"Siva","Light blue":"Svetlo modra","Light green":"Svetlo zelena","Light grey":"Svetlo siva",Next:"",Orange:"Oranžna",Previous:"",Purple:"Vijolična",Red:"Rdeča","Remove color":"Odstrani barvo","Restore default":"","Rich Text Editor":"","Rich Text Editor. Editing area: %0":"",Save:"Shrani","Show more items":"",Turquoise:"Turkizna",White:"Bela",Yellow:"Rumena"}),o.getPluralForm=function(e){return e%100==1?0:e%100==2?1:e%100==3||e%100==4?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sq.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sq.js index 05eee29519cee7e0a561a2522c5003362ea4f639..7484f823fb697aa83d14f1f26967f25c320c3581 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sq.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sq.js @@ -1 +1 @@ -!function(e){const o=e.sq=e.sq||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Anulo","Cannot upload file:":"Nuk mund të ngarkojë skedën:","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Ribëj","Remove color":"","Restore default":"","Rich Text Editor":"Redaktues i Tekstit të Pasur","Rich Text Editor. Editing area: %0":"",Save:"Ruaj","Show more items":"",Turquoise:"",Undo:"Rikthe","Upload in progress":"Duke ngarkuar",White:"",Yellow:""}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const o=e.sq=e.sq||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"Anulo","Cannot upload file:":"Nuk mund të ngarkojë skedën:","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"Ribëj","Remove color":"","Restore default":"","Rich Text Editor":"Redaktues i Tekstit të Pasur","Rich Text Editor. Editing area: %0":"",Save:"Ruaj","Show more items":"",Turquoise:"",Undo:"Rikthe","Upload in progress":"Duke ngarkuar",White:"",Yellow:""}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sr-latn.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sr-latn.js index 8e7312ac475c1de764e60f49701a1c7c9584d64b..0a884ae2081dd7eb8b1448bdc6c3de5533c3b9d4 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sr-latn.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sr-latn.js @@ -1 +1 @@ -!function(a){const e=a["sr-latn"]=a["sr-latn"]||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Zelenkastoplava",Black:"Crna",Blue:"Plava",Cancel:"Odustani","Cannot upload file:":"Postavljanje fajla je neuspešno:","Dim grey":"Bledo siva","Dropdown toolbar":"Padajuća traka sa alatkama","Edit block":"Blok uređivač","Editor editing area: %0":"","Editor toolbar":"Uređivač traka sa alatkama",Green:"Zelena",Grey:"Siva","Insert paragraph after block":"Уметните одломак после блока","Insert paragraph before block":"Уметните одломак пре блока","Light blue":"Svetloplava","Light green":"Svetlo zelena","Light grey":"Svetlo siva",Next:"Sledeći",Orange:"Narandžasta",Previous:"Prethodni",Purple:"Ljubičasta",Red:"Crvena",Redo:"Ponovo","Remove color":"Otkloni boju","Restore default":"Vrati podrazumevano","Rich Text Editor":"Prošireni uređivač teksta","Rich Text Editor. Editing area: %0":"",Save:"Sačuvaj","Select all":"Označi sve","Show more items":"Prikaži još stavki",Turquoise:"Tirkizna",Undo:"Povlačenje","Upload in progress":"Postavljanje u toku",White:"Bela","Widget toolbar":"Видгет трака са алаткама",Yellow:"Žuta"}),e.getPluralForm=function(a){return a%10==1&&a%100!=11?0:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(a){const e=a["sr-latn"]=a["sr-latn"]||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Zelenkastoplava",Black:"Crna",Blue:"Plava",Cancel:"Odustani","Cannot upload file:":"Postavljanje fajla je neuspešno:","Dim grey":"Bledo siva","Dropdown toolbar":"Padajuća traka sa alatkama","Edit block":"Blok uređivač","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"Uređivač traka sa alatkama",Green:"Zelena",Grey:"Siva","Insert paragraph after block":"Уметните одломак после блока","Insert paragraph before block":"Уметните одломак пре блока","Light blue":"Svetloplava","Light green":"Svetlo zelena","Light grey":"Svetlo siva",Next:"Sledeći",Orange:"Narandžasta",Previous:"Prethodni",Purple:"Ljubičasta",Red:"Crvena",Redo:"Ponovo","Remove color":"Otkloni boju","Restore default":"Vrati podrazumevano","Rich Text Editor":"Prošireni uređivač teksta","Rich Text Editor. Editing area: %0":"",Save:"Sačuvaj","Select all":"Označi sve","Show more items":"Prikaži još stavki",Turquoise:"Tirkizna",Undo:"Povlačenje","Upload in progress":"Postavljanje u toku",White:"Bela","Widget toolbar":"Видгет трака са алаткама",Yellow:"Žuta"}),e.getPluralForm=function(a){return a%10==1&&a%100!=11?0:a%10>=2&&a%10<=4&&(a%100<10||a%100>=20)?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sr.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sr.js index 6c75ca28d0907acade8e7d8a7dd9656a1189c336..300d97c29890071260773c5ceb64a4b1f26f65ca 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sr.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sr.js @@ -1 +1 @@ -!function(e){const o=e.sr=e.sr||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Зеленкастоплава",Black:"Црна",Blue:"Плава",Cancel:"Одустани","Cannot upload file:":"Постављање фајла је неуспешно:","Dim grey":"Бледо сива","Dropdown toolbar":"Падајућа трака са алаткама","Edit block":"Блок уређивач","Editor editing area: %0":"Uređivačev prostor za uređivanje: %0","Editor toolbar":"Уређивач трака са алаткама",Green:"Зелена",Grey:"Сива","Insert paragraph after block":"Umetnite odlomak posle bloka","Insert paragraph before block":"Umetnite odlomak pre bloka","Light blue":"Светлоплава","Light green":"Светлозелена","Light grey":"Светло сива",Next:"Следећи",Orange:"Нараџаста",Previous:"Претходни",Purple:"Љубичаста",Red:"Црвена",Redo:"Поново","Remove color":"Отклони боју","Restore default":"Врати подразумевано","Rich Text Editor":"Проширен уређивач текста","Rich Text Editor. Editing area: %0":"Uređivač obogaćenog teksta. Prostor za uređivanje: %0",Save:"Сачувај","Select all":"Означи све.","Show more items":"Прикажи још ставки",Turquoise:"Тиркизна",Undo:"Повлачење","Upload in progress":"Постављање у току",White:"Бела","Widget toolbar":"Widget traka sa alatkama",Yellow:"Жута"}),o.getPluralForm=function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const o=e.sr=e.sr||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 of %1",Aquamarine:"Зеленкастоплава",Black:"Црна",Blue:"Плава",Cancel:"Одустани","Cannot upload file:":"Постављање фајла је неуспешно:","Dim grey":"Бледо сива","Dropdown toolbar":"Падајућа трака са алаткама","Edit block":"Блок уређивач","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Uređivačev prostor za uređivanje: %0","Editor toolbar":"Уређивач трака са алаткама",Green:"Зелена",Grey:"Сива","Insert paragraph after block":"Umetnite odlomak posle bloka","Insert paragraph before block":"Umetnite odlomak pre bloka","Light blue":"Светлоплава","Light green":"Светлозелена","Light grey":"Светло сива",Next:"Следећи",Orange:"Нараџаста",Previous:"Претходни",Purple:"Љубичаста",Red:"Црвена",Redo:"Поново","Remove color":"Отклони боју","Restore default":"Врати подразумевано","Rich Text Editor":"Проширен уређивач текста","Rich Text Editor. Editing area: %0":"Uređivač obogaćenog teksta. Prostor za uređivanje: %0",Save:"Сачувај","Select all":"Означи све.","Show more items":"Прикажи још ставки",Turquoise:"Тиркизна",Undo:"Повлачење","Upload in progress":"Постављање у току",White:"Бела","Widget toolbar":"Widget traka sa alatkama",Yellow:"Жута"}),o.getPluralForm=function(e){return e%10==1&&e%100!=11?0:e%10>=2&&e%10<=4&&(e%100<10||e%100>=20)?1:2}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sv.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sv.js index 940005253a29df4734d621d6dbd55fe2b97d992f..5341b88efb81fad402f8132b1158500ed44ff6e9 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sv.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/sv.js @@ -1 +1 @@ -!function(e){const r=e.sv=e.sv||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 av %1",Aquamarine:"Akvamarin",Black:"Svart",Blue:"Blå",Cancel:"Avbryt","Cannot upload file:":"Kan inte ladda upp fil:","Dim grey":"Dunkelgrå","Dropdown toolbar":"Rullgardinsverktygsfält","Edit block":"Redigera block","Editor editing area: %0":"Ordbehandlares redigeringsområde: %0","Editor toolbar":"Redigeringsverktygsfält",Green:"Grön",Grey:"Grå","Insert paragraph after block":"Infoga stycke efter block","Insert paragraph before block":"Infoga stycke före block","Light blue":"Ljusblå","Light green":"Ljusgrön","Light grey":"Ljusgrå",Next:"Nästa",Orange:"Orange",Previous:"Föregående",Purple:"Lila",Red:"Röd",Redo:"Gör om","Remove color":"Ta bort färg","Restore default":"Återställ standard","Rich Text Editor":"Rich Text-editor","Rich Text Editor. Editing area: %0":"RTF-redigerare. Redigeringsområde: %0",Save:"Spara","Select all":"Välj alla","Show more items":"Visa fler objekt",Turquoise:"Turkos",Undo:"Ångra","Upload in progress":"Uppladdning pågår",White:"Vit","Widget toolbar":"Widgetverktygsfält",Yellow:"Gul"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const r=e.sv=e.sv||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0 av %1",Aquamarine:"Akvamarin",Black:"Svart",Blue:"Blå",Cancel:"Avbryt","Cannot upload file:":"Kan inte ladda upp fil:","Dim grey":"Dunkelgrå","Dropdown toolbar":"Rullgardinsverktygsfält","Edit block":"Redigera block","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Ordbehandlares redigeringsområde: %0","Editor toolbar":"Redigeringsverktygsfält",Green:"Grön",Grey:"Grå","Insert paragraph after block":"Infoga stycke efter block","Insert paragraph before block":"Infoga stycke före block","Light blue":"Ljusblå","Light green":"Ljusgrön","Light grey":"Ljusgrå",Next:"Nästa",Orange:"Orange",Previous:"Föregående",Purple:"Lila",Red:"Röd",Redo:"Gör om","Remove color":"Ta bort färg","Restore default":"Återställ standard","Rich Text Editor":"Rich Text-editor","Rich Text Editor. Editing area: %0":"RTF-redigerare. Redigeringsområde: %0",Save:"Spara","Select all":"Välj alla","Show more items":"Visa fler objekt",Turquoise:"Turkos",Undo:"Ångra","Upload in progress":"Uppladdning pågår",White:"Vit","Widget toolbar":"Widgetverktygsfält",Yellow:"Gul"}),r.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/th.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/th.js index 36f34e878b2a6595862062549d68fe9922ab92d9..464133b540c61d26648f7175bb87a5d5a0f344b3 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/th.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/th.js @@ -1 +1 @@ -!function(e){const o=e.th=e.th||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 จาก %1",Aquamarine:"พลอยสีฟ้า",Black:"สีดำ",Blue:"สีน้ำเงิน",Cancel:"ยกเลิก","Cannot upload file:":"ไม่สามารถอัปโหลดไฟล์ได้:","Dim grey":"สีเทาเข้ม","Dropdown toolbar":"แถบเครื่องมือแบบเลื่อนลง","Edit block":"แก้ไขบล็อก","Editor editing area: %0":"พื้นที่แก้ไขของตัวแก้ไข: %0","Editor toolbar":"แถบเครื่องมือแก้ไข",Green:"สีเขียว",Grey:"สีเทา","Insert paragraph after block":"แทรกย่อหน้าหลังบล็อก","Insert paragraph before block":"แทรกย่อหน้าก่อนบล็อก","Light blue":"สีฟ้า","Light green":"สีเขียวอ่อน","Light grey":"สีเทาอ่อน",Next:"ถัดไป",Orange:"สีส้ม",Previous:"ก่อนหน้า",Purple:"สีม่วง",Red:"สีแดง",Redo:"ทำซ้ำ","Remove color":"ลบสี","Restore default":"คืนค่าเริ่มต้น","Rich Text Editor":"โปรแกรมแก้ไข Rich Text","Rich Text Editor. Editing area: %0":"ตัวแก้ไข Rich Text พื้นที่แก้ไข: %0",Save:"บันทึก","Select all":"เลือกทั้งหมด","Show more items":"แสดงรายการเพิ่มเติม",Turquoise:"สีเขียวขุ่น",Undo:"ย้อนกลับ","Upload in progress":"กำลังดำเนินการอัปโหลด",White:"สีขาว","Widget toolbar":"แถมเครื่องมือวิดเจ็ต",Yellow:"สีเหลือง"}),o.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const o=e.th=e.th||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 จาก %1",Aquamarine:"พลอยสีฟ้า",Black:"สีดำ",Blue:"สีน้ำเงิน",Cancel:"ยกเลิก","Cannot upload file:":"ไม่สามารถอัปโหลดไฟล์ได้:","Dim grey":"สีเทาเข้ม","Dropdown toolbar":"แถบเครื่องมือแบบเลื่อนลง","Edit block":"แก้ไขบล็อก","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"พื้นที่แก้ไขของตัวแก้ไข: %0","Editor toolbar":"แถบเครื่องมือแก้ไข",Green:"สีเขียว",Grey:"สีเทา","Insert paragraph after block":"แทรกย่อหน้าหลังบล็อก","Insert paragraph before block":"แทรกย่อหน้าก่อนบล็อก","Light blue":"สีฟ้า","Light green":"สีเขียวอ่อน","Light grey":"สีเทาอ่อน",Next:"ถัดไป",Orange:"สีส้ม",Previous:"ก่อนหน้า",Purple:"สีม่วง",Red:"สีแดง",Redo:"ทำซ้ำ","Remove color":"ลบสี","Restore default":"คืนค่าเริ่มต้น","Rich Text Editor":"โปรแกรมแก้ไข Rich Text","Rich Text Editor. Editing area: %0":"ตัวแก้ไข Rich Text พื้นที่แก้ไข: %0",Save:"บันทึก","Select all":"เลือกทั้งหมด","Show more items":"แสดงรายการเพิ่มเติม",Turquoise:"สีเขียวขุ่น",Undo:"ย้อนกลับ","Upload in progress":"กำลังดำเนินการอัปโหลด",White:"สีขาว","Widget toolbar":"แถมเครื่องมือวิดเจ็ต",Yellow:"สีเหลือง"}),o.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/tk.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/tk.js index 7a138ab9d1f3426546bb93892280c25f996e5462..deeb9c282ed9ac9daf8e9bff03a9302d38221872 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/tk.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/tk.js @@ -1 +1 @@ -!function(a){const e=a.tk=a.tk||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%1-iň %0-i",Aquamarine:"Akuamarin",Black:"Gara",Blue:"Gök",Cancel:"Ýatyr","Cannot upload file:":"Faýl ýükläp bolmady:","Dim grey":"Goýy çal","Dropdown toolbar":"Açylýan gurallar paneli","Edit block":"Bloky redaktirläň","Editor editing area: %0":"","Editor toolbar":"Redaktor gurallar paneli",Green:"Ýaşyl",Grey:"Çal","Insert paragraph after block":"Blokdan soň abzas goýuň","Insert paragraph before block":"Blokdan öň abzas goýuň","Light blue":"Açyk gök","Light green":"Açyk ýaşyl","Light grey":"Açyk çal",Next:"Indiki",Orange:"Mämişi",Previous:"Öňki",Purple:"Gyrmyzy",Red:"Gyzyl",Redo:"Öňe gaýtar","Remove color":"Reňki aýyryň","Restore default":"","Rich Text Editor":"Baý Tekst Redaktory","Rich Text Editor. Editing area: %0":"",Save:"Saklaň","Select all":"Ählisini saýla","Show more items":"Has köp zady görkeziň",Turquoise:"Turkuaz",Undo:"Yza gaýtar","Upload in progress":"Ýüklemek dowam edýär",White:"Ak","Widget toolbar":"Widget gurallar paneli",Yellow:"Sary"}),e.getPluralForm=function(a){return 1!=a}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(a){const r=a.tk=a.tk||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%1-iň %0-i",Aquamarine:"Akuamarin",Black:"Gara",Blue:"Gök",Cancel:"Ýatyr","Cannot upload file:":"Faýl ýükläp bolmady:","Dim grey":"Goýy çal","Dropdown toolbar":"Açylýan gurallar paneli","Edit block":"Bloky redaktirläň","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"Redaktor gurallar paneli",Green:"Ýaşyl",Grey:"Çal","Insert paragraph after block":"Blokdan soň abzas goýuň","Insert paragraph before block":"Blokdan öň abzas goýuň","Light blue":"Açyk gök","Light green":"Açyk ýaşyl","Light grey":"Açyk çal",Next:"Indiki",Orange:"Mämişi",Previous:"Öňki",Purple:"Gyrmyzy",Red:"Gyzyl",Redo:"Öňe gaýtar","Remove color":"Reňki aýyryň","Restore default":"","Rich Text Editor":"Baý Tekst Redaktory","Rich Text Editor. Editing area: %0":"",Save:"Saklaň","Select all":"Ählisini saýla","Show more items":"Has köp zady görkeziň",Turquoise:"Turkuaz",Undo:"Yza gaýtar","Upload in progress":"Ýüklemek dowam edýär",White:"Ak","Widget toolbar":"Widget gurallar paneli",Yellow:"Sary"}),r.getPluralForm=function(a){return 1!=a}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/tr.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/tr.js index 0791300775109c25e514f13aac5c4ff5b1f89174..e535d9309dc38be17fd55042e35fad637d434e99 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/tr.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/tr.js @@ -1 +1 @@ -!function(e){const r=e.tr=e.tr||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0/%1",Aquamarine:"Su Yeşili",Black:"Siyah",Blue:"Mavi",Cancel:"İptal","Cannot upload file:":"Dosya yüklenemedi:","Dim grey":"Koyu Gri","Dropdown toolbar":"Açılır araç çubuğu","Edit block":"Bloğu Düzenle","Editor editing area: %0":"Editör düzenleme alanı: %0","Editor toolbar":"Düzenleme araç çubuğu",Green:"Yeşil",Grey:"Gri","Insert paragraph after block":"Bloktan sonra paragraf ekle","Insert paragraph before block":"Bloktan önce paragraf ekle","Light blue":"Açık Mavi","Light green":"Açık Yeşil","Light grey":"Açık Gri",Next:"Sonraki",Orange:"Turuncu",Previous:"Önceki",Purple:"Mor",Red:"Kırmızı",Redo:"Tekrar yap","Remove color":"Rengi Sil","Restore default":"Varsayılanı geri yükle","Rich Text Editor":"Zengin İçerik Editörü","Rich Text Editor. Editing area: %0":"Zengin Metin Editörü.Düzenleme alanı: %0",Save:"Kaydet","Select all":"Hepsini seç","Show more items":"Daha fazla öğe göster",Turquoise:"Turkuaz",Undo:"Geri al","Upload in progress":"Yükleme işlemi devam ediyor",White:"Beyaz","Widget toolbar":"Bileşen araç çubuğu",Yellow:"Sarı"}),r.getPluralForm=function(e){return e>1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const r=e.tr=e.tr||{};r.dictionary=Object.assign(r.dictionary||{},{"%0 of %1":"%0/%1",Aquamarine:"Su Yeşili",Black:"Siyah",Blue:"Mavi",Cancel:"İptal","Cannot upload file:":"Dosya yüklenemedi:","Dim grey":"Koyu Gri","Dropdown toolbar":"Açılır araç çubuğu","Edit block":"Bloğu Düzenle","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Editör düzenleme alanı: %0","Editor toolbar":"Düzenleme araç çubuğu",Green:"Yeşil",Grey:"Gri","Insert paragraph after block":"Bloktan sonra paragraf ekle","Insert paragraph before block":"Bloktan önce paragraf ekle","Light blue":"Açık Mavi","Light green":"Açık Yeşil","Light grey":"Açık Gri",Next:"Sonraki",Orange:"Turuncu",Previous:"Önceki",Purple:"Mor",Red:"Kırmızı",Redo:"Tekrar yap","Remove color":"Rengi Sil","Restore default":"Varsayılanı geri yükle","Rich Text Editor":"Zengin İçerik Editörü","Rich Text Editor. Editing area: %0":"Zengin Metin Editörü.Düzenleme alanı: %0",Save:"Kaydet","Select all":"Hepsini seç","Show more items":"Daha fazla öğe göster",Turquoise:"Turkuaz",Undo:"Geri al","Upload in progress":"Yükleme işlemi devam ediyor",White:"Beyaz","Widget toolbar":"Bileşen araç çubuğu",Yellow:"Sarı"}),r.getPluralForm=function(e){return e>1}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/tt.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/tt.js index ffa1929c6aa90811f599c02fc062b99c2c8d52a8..571024e351a229d617c102af621a79af6c8ad03c 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/tt.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/tt.js @@ -1 +1 @@ -!function(o){const t=o.tt=o.tt||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"",Cancel:"","Cannot upload file:":"",Redo:"Кабатла","Remove color":"","Restore default":"","Rich Text Editor. Editing area: %0":"",Save:"Сакла","Show more items":"",Undo:""}),t.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const t=o.tt=o.tt||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"",Aquamarine:"Аквамарин",Black:"Кара",Blue:"Зәңгәр",Cancel:"Баш тарт","Cannot upload file:":"","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"",Green:"Яшел",Grey:"Соры","Light blue":"Ачык зәңгәр","Light green":"Ачык яшел","Light grey":"Ачык соры",Next:"",Orange:"Кызгылт",Previous:"",Purple:"Шәмәхә",Red:"Кызыл",Redo:"Кабатла","Remove color":"","Restore default":"","Rich Text Editor":"","Rich Text Editor. Editing area: %0":"",Save:"Сакла","Show more items":"",Turquoise:"Фервоз",Undo:"",White:"Ак",Yellow:"Сары"}),t.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ug.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ug.js index 35bdf30833baf8a3fabadf9b784c6bf0698e1317..39cc7ab8243ed55361ccf8d29d11fb75c1752b5e 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ug.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ug.js @@ -1 +1 @@ -!function(e){const o=e.ug=e.ug||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"ئىناۋەتسىز","Cannot upload file:":"يۈكلەشكە بولمايدىغان ھۆججەت:","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"تەكرارلاش","Remove color":"رەڭنى چىقىرىۋېتىش","Restore default":"","Rich Text Editor":"تېكىست تەھرىرلىگۈچ","Rich Text Editor. Editing area: %0":"",Save:"ساقلاش","Show more items":"",Turquoise:"",Undo:"يېنىۋېلىش",White:"",Yellow:""}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.ug=o.ug||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"",Aquamarine:"",Black:"",Blue:"",Cancel:"ئىناۋەتسىز","Cannot upload file:":"يۈكلەشكە بولمايدىغان ھۆججەت:","Dim grey":"","Dropdown toolbar":"","Edit block":"","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"",Green:"",Grey:"","Light blue":"","Light green":"","Light grey":"",Next:"",Orange:"",Previous:"",Purple:"",Red:"",Redo:"تەكرارلاش","Remove color":"رەڭنى چىقىرىۋېتىش","Restore default":"","Rich Text Editor":"تېكىست تەھرىرلىگۈچ","Rich Text Editor. Editing area: %0":"",Save:"ساقلاش","Show more items":"",Turquoise:"",Undo:"يېنىۋېلىش",White:"",Yellow:""}),e.getPluralForm=function(o){return 1!=o}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/uk.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/uk.js index cc2331ef1fdc604482502d6c5a9e0bf8c3d042f9..70f8d5ced7b059d036321d0f13316b2c34654e6b 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/uk.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/uk.js @@ -1 +1 @@ -!function(e){const o=e.uk=e.uk||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 із %1",Aquamarine:"Аквамариновий",Black:"Чорний",Blue:"Синій",Cancel:"Відміна","Cannot upload file:":"Неможливо завантажити файл:","Dim grey":"Темно-сірий","Dropdown toolbar":"Випадаюча панель інструментів","Edit block":"Редагувати блок","Editor editing area: %0":"Область редагування редактора: %0","Editor toolbar":"Панель інструментів редактора",Green:"Зелений",Grey:"Сірий","Insert paragraph after block":"Додати абзац після блока","Insert paragraph before block":"Додати абзац перед блоком","Light blue":"Світло-синій","Light green":"Світло-зелений","Light grey":"Світло-сірий",Next:"Наступний",Orange:"Помаранчевий",Previous:"Попередній",Purple:"Фіолетовий",Red:"Червоний",Redo:"Повтор","Remove color":"Видалити колір","Restore default":"Відновити за замовчуванням","Rich Text Editor":"Розширений текстовий редактор","Rich Text Editor. Editing area: %0":"Редактор Rich Text. Область редагування: %0",Save:"Зберегти","Select all":"Вибрати все","Show more items":"Показати більше",Turquoise:"Бірюзовий",Undo:"Відміна","Upload in progress":"Виконується завантаження",White:"Білий","Widget toolbar":"Панель інструментів віджетів",Yellow:"Жовтий"}),o.getPluralForm=function(e){return e%1==0&&e%10==1&&e%100!=11?0:e%1==0&&e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?1:e%1==0&&(e%10==0||e%10>=5&&e%10<=9||e%100>=11&&e%100<=14)?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const o=e.uk=e.uk||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0 із %1",Aquamarine:"Аквамариновий",Black:"Чорний",Blue:"Синій",Cancel:"Відміна","Cannot upload file:":"Неможливо завантажити файл:","Dim grey":"Темно-сірий","Dropdown toolbar":"Випадаюча панель інструментів","Edit block":"Редагувати блок","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Область редагування редактора: %0","Editor toolbar":"Панель інструментів редактора",Green:"Зелений",Grey:"Сірий","Insert paragraph after block":"Додати абзац після блока","Insert paragraph before block":"Додати абзац перед блоком","Light blue":"Світло-синій","Light green":"Світло-зелений","Light grey":"Світло-сірий",Next:"Наступний",Orange:"Помаранчевий",Previous:"Попередній",Purple:"Фіолетовий",Red:"Червоний",Redo:"Повтор","Remove color":"Видалити колір","Restore default":"Відновити за замовчуванням","Rich Text Editor":"Розширений текстовий редактор","Rich Text Editor. Editing area: %0":"Редактор Rich Text. Область редагування: %0",Save:"Зберегти","Select all":"Вибрати все","Show more items":"Показати більше",Turquoise:"Бірюзовий",Undo:"Відміна","Upload in progress":"Виконується завантаження",White:"Білий","Widget toolbar":"Панель інструментів віджетів",Yellow:"Жовтий"}),o.getPluralForm=function(e){return e%1==0&&e%10==1&&e%100!=11?0:e%1==0&&e%10>=2&&e%10<=4&&(e%100<12||e%100>14)?1:e%1==0&&(e%10==0||e%10>=5&&e%10<=9||e%100>=11&&e%100<=14)?2:3}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ur.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ur.js index d960677a00ab75e881e6ff9ff9b5c878ea1bc9ff..28ddafcce0762d50c4329507bd7788de271806df 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ur.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/ur.js @@ -1 +1 @@ -!function(e){const o=e.ur=e.ur||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"0% میں سے 1%",Aquamarine:"نیلگوں بلور",Black:"سیاہ",Blue:"نیلا",Cancel:"منسوخ","Cannot upload file:":"فائل اپلوڈ نہیں ہو سکی:","Dim grey":"پھیکا سرمئی","Dropdown toolbar":"آلہ جات برائے فہرست ","Edit block":"خانہ کی تدوین","Editor editing area: %0":"رقبہ خانۂ ترمیم: 0%","Editor toolbar":"ایڈیٹر آلہ جات",Green:"سبز",Grey:"سرمئی","Light blue":"ہلکا نیلا","Light green":"ہلکا سبز","Light grey":"ہلکا سرمئی",Next:"اگلا",Orange:"نارنجی",Previous:"پچھلا",Purple:"ارغوانی",Red:"سرخ",Redo:"پھر سے کریں","Remove color":"رنگ حذف کریں","Restore default":"طے شدہ بحال","Rich Text Editor":"خانۂ ترمیم","Rich Text Editor. Editing area: %0":"خانۂ ترمیم۔ علاقۂ ترمیم 0%",Save:"محفوظ","Show more items":"مزید مواد کی نمائش کریں",Turquoise:"فیروزی",Undo:"رد ترمیم","Upload in progress":"آپلوڈ جاری ہے",White:"سفید",Yellow:"پیلا"}),o.getPluralForm=function(e){return 1!=e}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.ur=o.ur||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"0% میں سے 1%",Aquamarine:"نیلگوں بلور",Black:"سیاہ",Blue:"نیلا",Cancel:"منسوخ","Cannot upload file:":"فائل اپلوڈ نہیں ہو سکی:","Dim grey":"پھیکا سرمئی","Dropdown toolbar":"آلہ جات برائے فہرست ","Edit block":"خانہ کی تدوین","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"رقبہ خانۂ ترمیم: 0%","Editor toolbar":"ایڈیٹر آلہ جات",Green:"سبز",Grey:"سرمئی","Insert paragraph after block":"پیراگراف کے بعد کوڈ خانہ نصب کریں","Insert paragraph before block":"پیراگراف سے پہلے کوڈ خانہ نصب کریں","Light blue":"ہلکا نیلا","Light green":"ہلکا سبز","Light grey":"ہلکا سرمئی",Next:"اگلا",Orange:"نارنجی",Previous:"پچھلا",Purple:"ارغوانی",Red:"سرخ",Redo:"پھر سے کریں","Remove color":"رنگ حذف کریں","Restore default":"طے شدہ بحال","Rich Text Editor":"خانۂ ترمیم","Rich Text Editor. Editing area: %0":"خانۂ ترمیم۔ علاقۂ ترمیم 0%",Save:"محفوظ","Select all":"سب منتخب کریں","Show more items":"مزید مواد کی نمائش کریں",Turquoise:"فیروزی",Undo:"رد ترمیم","Upload in progress":"آپلوڈ جاری ہے",White:"سفید","Widget toolbar":"آلہ جات برائے وجٹ",Yellow:"پیلا"}),e.getPluralForm=function(o){return 1!=o}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/uz.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/uz.js index 44bf8dddb0222f76dcc080ef94dc469742d8d667..d6f927f8203b789272007fad4bc55fb1752612e6 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/uz.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/uz.js @@ -1 +1 @@ -!function(a){const i=a.uz=a.uz||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"",Aquamarine:"Akuamarin",Black:"Qora",Blue:"Ko'k",Cancel:"Bekor qilish","Cannot upload file:":"","Dim grey":"To'q kulrang","Dropdown toolbar":"Ochiladigan asboblar paneli","Edit block":"Blokni tahrirlash","Editor editing area: %0":"","Editor toolbar":"Tahrirlovchi asboblar paneli",Green:"Yashil",Grey:"Kulrang","Insert paragraph after block":"Вblokdan keyin paragraf qo'yish","Insert paragraph before block":"Blokdan oldin paragrafni kiritish","Light blue":"Moviy","Light green":"Och yashil","Light grey":"Och kulrang",Next:"Keyingi",Orange:"To'q sariq",Previous:"Oldingi",Purple:"Siyohrang",Red:"Qizil",Redo:"Takrorlash","Remove color":"Rangni olib tashlash","Restore default":"","Rich Text Editor":"Tahrirlovchi","Rich Text Editor. Editing area: %0":"",Save:"Saqlash","Select all":"Hammasini tanlash","Show more items":"",Turquoise:"Turkuaz",Undo:"Bekor qilish","Upload in progress":"Yuklanmoqda",White:"Oq","Widget toolbar":"Vidjet asboblar paneli",Yellow:"Sariq"}),i.getPluralForm=function(a){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(a){const i=a.uz=a.uz||{};i.dictionary=Object.assign(i.dictionary||{},{"%0 of %1":"",Aquamarine:"Akuamarin",Black:"Qora",Blue:"Ko'k",Cancel:"Bekor qilish","Cannot upload file:":"","Dim grey":"To'q kulrang","Dropdown toolbar":"Ochiladigan asboblar paneli","Edit block":"Blokni tahrirlash","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"","Editor toolbar":"Tahrirlovchi asboblar paneli",Green:"Yashil",Grey:"Kulrang","Insert paragraph after block":"Вblokdan keyin paragraf qo'yish","Insert paragraph before block":"Blokdan oldin paragrafni kiritish","Light blue":"Moviy","Light green":"Och yashil","Light grey":"Och kulrang",Next:"Keyingi",Orange:"To'q sariq",Previous:"Oldingi",Purple:"Siyohrang",Red:"Qizil",Redo:"Takrorlash","Remove color":"Rangni olib tashlash","Restore default":"","Rich Text Editor":"Tahrirlovchi","Rich Text Editor. Editing area: %0":"",Save:"Saqlash","Select all":"Hammasini tanlash","Show more items":"",Turquoise:"Turkuaz",Undo:"Bekor qilish","Upload in progress":"Yuklanmoqda",White:"Oq","Widget toolbar":"Vidjet asboblar paneli",Yellow:"Sariq"}),i.getPluralForm=function(a){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/vi.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/vi.js index b94b60d92e816186825fba1195b22daf6623fcd7..ae57bb55087e215c584e19df6b36e13b856687f5 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/vi.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/vi.js @@ -1 +1 @@ -!function(n){const h=n.vi=n.vi||{};h.dictionary=Object.assign(h.dictionary||{},{"%0 of %1":"%0 đến %1",Aquamarine:"Xanh ngọc biển",Black:"Đen",Blue:"Xanh biển",Cancel:"Hủy","Cannot upload file:":"Không thể tải file:","Dim grey":"Xám mờ","Dropdown toolbar":"Thanh công cụ danh mục","Edit block":"Chỉnh sửa đoạn","Editor editing area: %0":"Vùng chỉnh sửa của trình chỉnh sửa: %0","Editor toolbar":"Thanh công cụ biên tập",Green:"Xanh lá",Grey:"Xám","Insert paragraph after block":"Chèn đoạn sau khối","Insert paragraph before block":"Chèn đoạn trước khối","Light blue":"Xanh dương","Light green":"Xanh lá nhạt","Light grey":"Xám nhạt",Next:"Tiếp theo",Orange:"Cam",Previous:"Quay lại",Purple:"Tím",Red:"Đỏ",Redo:"Tiếp tục","Remove color":"Xóa màu","Restore default":"Khôi phục giá trị mặc định","Rich Text Editor":"Trình soạn thảo văn bản","Rich Text Editor. Editing area: %0":"Trình chỉnh sửa Văn bản dạng RTF. Vùng chỉnh sửa: %0",Save:"Lưu","Select all":"Chọn tất cả","Show more items":"Xem thêm",Turquoise:"Xanh ngọc bích",Undo:"Hoàn tác","Upload in progress":"Đang tải lên",White:"Trắng","Widget toolbar":"Thanh công cụ tiện ích",Yellow:"Vàng"}),h.getPluralForm=function(n){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(n){const t=n.vi=n.vi||{};t.dictionary=Object.assign(t.dictionary||{},{"%0 of %1":"%0 đến %1",Aquamarine:"Xanh ngọc biển",Black:"Đen",Blue:"Xanh biển",Cancel:"Hủy","Cannot upload file:":"Không thể tải file:","Dim grey":"Xám mờ","Dropdown toolbar":"Thanh công cụ danh mục","Edit block":"Chỉnh sửa đoạn","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"Vùng chỉnh sửa của trình chỉnh sửa: %0","Editor toolbar":"Thanh công cụ biên tập",Green:"Xanh lá",Grey:"Xám","Insert paragraph after block":"Chèn đoạn sau khối","Insert paragraph before block":"Chèn đoạn trước khối","Light blue":"Xanh dương","Light green":"Xanh lá nhạt","Light grey":"Xám nhạt",Next:"Tiếp theo",Orange:"Cam",Previous:"Quay lại",Purple:"Tím",Red:"Đỏ",Redo:"Tiếp tục","Remove color":"Xóa màu","Restore default":"Khôi phục giá trị mặc định","Rich Text Editor":"Trình soạn thảo văn bản","Rich Text Editor. Editing area: %0":"Trình chỉnh sửa Văn bản dạng RTF. Vùng chỉnh sửa: %0",Save:"Lưu","Select all":"Chọn tất cả","Show more items":"Xem thêm",Turquoise:"Xanh ngọc bích",Undo:"Hoàn tác","Upload in progress":"Đang tải lên",White:"Trắng","Widget toolbar":"Thanh công cụ tiện ích",Yellow:"Vàng"}),t.getPluralForm=function(n){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/zh-cn.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/zh-cn.js index 5cb85256ad5cd1924b93d3de54c521d2815af028..3a4c1448569710a47c248e82ec97f38a3975e6f9 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/zh-cn.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/zh-cn.js @@ -1 +1 @@ -!function(e){const o=e["zh-cn"]=e["zh-cn"]||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"第 %0 步,共 %1 步",Aquamarine:"海蓝色",Black:"黑色",Blue:"蓝色",Cancel:"取消","Cannot upload file:":"无法上传的文件:","Dim grey":"暗灰色","Dropdown toolbar":"下拉工具栏","Edit block":"编辑框","Editor editing area: %0":"编辑器编辑区域:%0","Editor toolbar":"编辑器工具栏",Green:"绿色",Grey:"灰色","Insert paragraph after block":"在后面插入段落","Insert paragraph before block":"在前面插入段落","Light blue":"浅蓝色","Light green":"浅绿色","Light grey":"浅灰色",Next:"下一步",Orange:"橙色",Previous:"上一步",Purple:"紫色",Red:"红色",Redo:"重做","Remove color":"移除颜色","Restore default":"恢复默认","Rich Text Editor":"富文本编辑器","Rich Text Editor. Editing area: %0":"富文本编辑器。编辑区域:%0",Save:"保存","Select all":"全选","Show more items":"显示更多",Turquoise:"青色",Undo:"撤销","Upload in progress":"正在上传",White:"白色","Widget toolbar":"小部件工具栏",Yellow:"黄色"}),o.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o["zh-cn"]=o["zh-cn"]||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"第 %0 步,共 %1 步",Aquamarine:"海蓝色",Black:"黑色",Blue:"蓝色",Cancel:"取消","Cannot upload file:":"无法上传的文件:","Dim grey":"暗灰色","Dropdown toolbar":"下拉工具栏","Edit block":"编辑框","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"编辑器编辑区域:%0","Editor toolbar":"编辑器工具栏",Green:"绿色",Grey:"灰色","Insert paragraph after block":"在后面插入段落","Insert paragraph before block":"在前面插入段落","Light blue":"浅蓝色","Light green":"浅绿色","Light grey":"浅灰色",Next:"下一步",Orange:"橙色",Previous:"上一步",Purple:"紫色",Red:"红色",Redo:"重做","Remove color":"移除颜色","Restore default":"恢复默认","Rich Text Editor":"富文本编辑器","Rich Text Editor. Editing area: %0":"富文本编辑器。编辑区域:%0",Save:"保存","Select all":"全选","Show more items":"显示更多",Turquoise:"青色",Undo:"撤销","Upload in progress":"正在上传",White:"白色","Widget toolbar":"小部件工具栏",Yellow:"黄色"}),e.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/zh.js b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/zh.js index f21b9595148387d9f39efb959ce200b03915fd5e..107ffc2bbbd4766772c63140c334a351a7f0e4a8 100644 --- a/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/zh.js +++ b/web/core/assets/vendor/ckeditor5/ckeditor5-dll/translations/zh.js @@ -1 +1 @@ -!function(e){const o=e.zh=e.zh||{};o.dictionary=Object.assign(o.dictionary||{},{"%0 of %1":"%0/%1",Aquamarine:"淺綠色",Black:"黑色",Blue:"藍色",Cancel:"取消","Cannot upload file:":"無法上傳檔案:","Dim grey":"淡灰色","Dropdown toolbar":"下拉選單","Edit block":"編輯區塊","Editor editing area: %0":"編輯器編輯區:%0","Editor toolbar":"編輯器工具",Green:"綠色",Grey:"灰色","Insert paragraph after block":"在這個區塊後面插入一個段落","Insert paragraph before block":"在這個區塊前面插入一個段落","Light blue":"亮藍色","Light green":"亮綠色","Light grey":"亮灰色",Next:"下一",Orange:"橘色",Previous:"上一",Purple:"紫色",Red:"紅色",Redo:"重做","Remove color":"移除顏色","Restore default":"重設至預設值","Rich Text Editor":"豐富文字編輯器","Rich Text Editor. Editing area: %0":"RTF 編輯器。編輯區:%0",Save:"儲存","Select all":"選取全部","Show more items":"顯示更多",Turquoise:"藍綠色",Undo:"取消","Upload in progress":"正在上傳",White:"白色","Widget toolbar":"小工具",Yellow:"黃色"}),o.getPluralForm=function(e){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(o){const e=o.zh=o.zh||{};e.dictionary=Object.assign(e.dictionary||{},{"%0 of %1":"%0/%1",Aquamarine:"淺綠色",Black:"黑色",Blue:"藍色",Cancel:"取消","Cannot upload file:":"無法上傳檔案:","Dim grey":"淡灰色","Dropdown toolbar":"下拉選單","Edit block":"編輯區塊","Editor block content toolbar":"","Editor contextual toolbar":"","Editor editing area: %0":"編輯器編輯區:%0","Editor toolbar":"編輯器工具",Green:"綠色",Grey:"灰色","Insert paragraph after block":"在這個區塊後面插入一個段落","Insert paragraph before block":"在這個區塊前面插入一個段落","Light blue":"亮藍色","Light green":"亮綠色","Light grey":"亮灰色",Next:"下一",Orange:"橘色",Previous:"上一",Purple:"紫色",Red:"紅色",Redo:"重做","Remove color":"移除顏色","Restore default":"重設至預設值","Rich Text Editor":"豐富文字編輯器","Rich Text Editor. Editing area: %0":"RTF 編輯器。編輯區:%0",Save:"儲存","Select all":"選取全部","Show more items":"顯示更多",Turquoise:"藍綠色",Undo:"取消","Upload in progress":"正在上傳",White:"白色","Widget toolbar":"小工具",Yellow:"黃色"}),e.getPluralForm=function(o){return 0}}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/editor-classic/editor-classic.js b/web/core/assets/vendor/ckeditor5/editor-classic/editor-classic.js index da0f9a8460c15686b330f2e25bde2c9df7c9a702..d093371447a66ae708eea5811baad79f4e7a5922 100644 --- a/web/core/assets/vendor/ckeditor5/editor-classic/editor-classic.js +++ b/web/core/assets/vendor/ckeditor5/editor-classic/editor-classic.js @@ -1,4 +1,4 @@ /*! * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md. - */(()=>{var e={655:(e,t,r)=>{"use strict";r.d(t,{Z:()=>n});var o=r(609),i=r.n(o)()((function(e){return e[1]}));i.push([e.id,".ck.ck-editor{position:relative}.ck.ck-editor .ck-editor__top .ck-sticky-panel .ck-toolbar{z-index:var(--ck-z-modal)}.ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar,.ck.ck-editor__top .ck-sticky-panel .ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-bottom-width:0}.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar{border-bottom-width:1px;border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar,.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:0}.ck.ck-editor__main>.ck-editor__editable{background:var(--ck-color-base-background);border-radius:0}.ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,.ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}.ck.ck-editor__main>.ck-editor__editable:not(.ck-focused){border-color:var(--ck-color-base-border)}",""]);const n=i},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var r=e(t);return t[2]?"@media ".concat(t[2]," {").concat(r,"}"):r})).join("")},t.i=function(e,r,o){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(o)for(var n=0;n<this.length;n++){var c=this[n][0];null!=c&&(i[c]=!0)}for(var a=0;a<e.length;a++){var s=[].concat(e[a]);o&&i[s[0]]||(r&&(s[2]?s[2]="".concat(r," and ").concat(s[2]):s[2]=r),t.push(s))}},t}},62:(e,t,r)=>{"use strict";var o,i=function(){return void 0===o&&(o=Boolean(window&&document&&document.all&&!window.atob)),o},n=function(){var e={};return function(t){if(void 0===e[t]){var r=document.querySelector(t);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(e){r=null}e[t]=r}return e[t]}}(),c=[];function a(e){for(var t=-1,r=0;r<c.length;r++)if(c[r].identifier===e){t=r;break}return t}function s(e,t){for(var r={},o=[],i=0;i<e.length;i++){var n=e[i],s=t.base?n[0]+t.base:n[0],l=r[s]||0,d="".concat(s," ").concat(l);r[s]=l+1;var u=a(d),b={css:n[1],media:n[2],sourceMap:n[3]};-1!==u?(c[u].references++,c[u].updater(b)):c.push({identifier:d,updater:k(b,t),references:1}),o.push(d)}return o}function l(e){var t=document.createElement("style"),o=e.attributes||{};if(void 0===o.nonce){var i=r.nc;i&&(o.nonce=i)}if(Object.keys(o).forEach((function(e){t.setAttribute(e,o[e])})),"function"==typeof e.insert)e.insert(t);else{var c=n(e.insert||"head");if(!c)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");c.appendChild(t)}return t}var d,u=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function b(e,t,r,o){var i=r?"":o.media?"@media ".concat(o.media," {").concat(o.css,"}"):o.css;if(e.styleSheet)e.styleSheet.cssText=u(t,i);else{var n=document.createTextNode(i),c=e.childNodes;c[t]&&e.removeChild(c[t]),c.length?e.insertBefore(n,c[t]):e.appendChild(n)}}function f(e,t,r){var o=r.css,i=r.media,n=r.sourceMap;if(i?e.setAttribute("media",i):e.removeAttribute("media"),n&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(n))))," */")),e.styleSheet)e.styleSheet.cssText=o;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(o))}}var p=null,h=0;function k(e,t){var r,o,i;if(t.singleton){var n=h++;r=p||(p=l(t)),o=b.bind(null,r,n,!1),i=b.bind(null,r,n,!0)}else r=l(t),o=f.bind(null,r,t),i=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(r)};return o(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;o(e=t)}else i()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=i());var r=s(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var o=0;o<r.length;o++){var i=a(r[o]);c[i].references--}for(var n=s(e,t),l=0;l<r.length;l++){var d=a(r[l]);0===c[d].references&&(c[d].updater(),c.splice(d,1))}r=n}}}},704:(e,t,r)=>{e.exports=r(79)("./src/core.js")},492:(e,t,r)=>{e.exports=r(79)("./src/engine.js")},273:(e,t,r)=>{e.exports=r(79)("./src/ui.js")},209:(e,t,r)=>{e.exports=r(79)("./src/utils.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function r(o){var i=t[o];if(void 0!==i)return i.exports;var n=t[o]={id:o,exports:{}};return e[o](n,n.exports,r),n.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nc=void 0;var o={};(()=>{"use strict";r.r(o),r.d(o,{ClassicEditor:()=>R});var e=r(704),t=r(209);const i=function(e){return null!=e&&"object"==typeof e};const n="object"==typeof global&&global&&global.Object===Object&&global;var c="object"==typeof self&&self&&self.Object===Object&&self;const a=(n||c||Function("return this")()).Symbol;var s=Object.prototype,l=s.hasOwnProperty,d=s.toString,u=a?a.toStringTag:void 0;const b=function(e){var t=l.call(e,u),r=e[u];try{e[u]=void 0;var o=!0}catch(e){}var i=d.call(e);return o&&(t?e[u]=r:delete e[u]),i};var f=Object.prototype.toString;const p=function(e){return f.call(e)};var h=a?a.toStringTag:void 0;const k=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":h&&h in Object(e)?b(e):p(e)};const v=function(e,t){return function(r){return e(t(r))}}(Object.getPrototypeOf,Object);var m=Function.prototype,y=Object.prototype,g=m.toString,_=y.hasOwnProperty,w=g.call(Object);const j=function(e){if(!i(e)||"[object Object]"!=k(e))return!1;var t=v(e);if(null===t)return!0;var r=_.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&g.call(r)==w};const T=function(e){return i(e)&&1===e.nodeType&&!j(e)};var x=r(273),O=r(492);class E extends e.EditorUI{constructor(e,r){super(e),this.view=r,this._toolbarConfig=(0,x.normalizeToolbarConfig)(e.config.get("toolbar")),this._elementReplacer=new t.ElementReplacer}get element(){return this.view.element}init(e){const t=this.editor,r=this.view,o=t.editing.view,i=r.editable,n=o.document.getRoot();i.name=n.rootName,r.render();const c=i.element;this.setEditableElement(i.name,c),this.focusTracker.add(c),r.editable.bind("isFocused").to(this.focusTracker),o.attachDomRoot(c),e&&this._elementReplacer.replace(e,this.element),this._initPlaceholder(),this._initToolbar(),this.fire("ready")}destroy(){const e=this.view,t=this.editor.editing.view;this._elementReplacer.restore(),t.detachDomRoot(e.editable.name),e.destroy(),super.destroy()}_initToolbar(){const e=this.editor,t=this.view,r=e.editing.view;t.stickyPanel.bind("isActive").to(this.focusTracker,"isFocused"),t.stickyPanel.limiterElement=t.element,t.stickyPanel.bind("viewportTopOffset").to(this,"viewportOffset",(({top:e})=>e)),t.toolbar.fillFromConfig(this._toolbarConfig,this.componentFactory),(0,x.enableToolbarKeyboardFocus)({origin:r,originFocusTracker:this.focusTracker,originKeystrokeHandler:e.keystrokes,toolbar:t.toolbar})}_initPlaceholder(){const e=this.editor,t=e.editing.view,r=t.document.getRoot(),o=e.sourceElement,i=e.config.get("placeholder")||o&&"textarea"===o.tagName.toLowerCase()&&o.getAttribute("placeholder");i&&(0,O.enablePlaceholder)({view:t,element:r,text:i,isDirectHost:!1,keepOnFocus:!0})}}var S=r(62),C=r.n(S),P=r(655),F={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};C()(P.Z,F);P.Z.locals;class M extends x.BoxedEditorUIView{constructor(e,t,r={}){super(e),this.stickyPanel=new x.StickyPanelView(e),this.toolbar=new x.ToolbarView(e,{shouldGroupWhenFull:r.shouldToolbarGroupWhenFull}),this.editable=new x.InlineEditableUIView(e,t)}render(){super.render(),this.stickyPanel.content.add(this.toolbar),this.top.add(this.stickyPanel),this.main.add(this.editable)}}class R extends e.Editor{constructor(r,o={}){if(!T(r)&&void 0!==o.initialData)throw new t.CKEditorError("editor-create-initial-data",null);super(o),void 0===this.config.get("initialData")&&this.config.set("initialData",function(e){return T(e)?(0,t.getDataFromElement)(e):e}(r)),T(r)&&(this.sourceElement=r),this.model.document.createRoot();const i=!this.config.get("toolbar.shouldNotGroupWhenFull"),n=new M(this.locale,this.editing.view,{shouldToolbarGroupWhenFull:i});this.ui=new E(this,n),(0,e.attachToForm)(this)}destroy(){return this.sourceElement&&this.updateSourceElement(),this.ui.destroy(),super.destroy()}static create(e,t={}){return new Promise((r=>{const o=new this(e,t);r(o.initPlugins().then((()=>o.ui.init(T(e)?e:null))).then((()=>o.data.init(o.config.get("initialData")))).then((()=>o.fire("ready"))).then((()=>o)))}))}}(0,t.mix)(R,e.DataApiMixin),(0,t.mix)(R,e.ElementApiMixin)})(),(window.CKEditor5=window.CKEditor5||{}).editorClassic=o})(); \ No newline at end of file + */(()=>{var e={655:(e,t,r)=>{"use strict";r.d(t,{Z:()=>i});var o=r(609),n=r.n(o)()((function(e){return e[1]}));n.push([e.id,".ck.ck-editor{position:relative}.ck.ck-editor .ck-editor__top .ck-sticky-panel .ck-toolbar{z-index:var(--ck-z-modal)}.ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-toolbar,.ck.ck-editor__top .ck-sticky-panel .ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius);border-bottom-left-radius:0;border-bottom-right-radius:0}.ck.ck-editor__top .ck-sticky-panel .ck-toolbar{border-bottom-width:0}.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar{border-bottom-width:1px;border-radius:0}.ck-rounded-corners .ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar,.ck.ck-editor__top .ck-sticky-panel .ck-sticky-panel__content_sticky .ck-toolbar.ck-rounded-corners{border-radius:var(--ck-border-radius);border-radius:0}.ck.ck-editor__main>.ck-editor__editable{background:var(--ck-color-base-background);border-radius:0}.ck-rounded-corners .ck.ck-editor__main>.ck-editor__editable,.ck.ck-editor__main>.ck-editor__editable.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}.ck.ck-editor__main>.ck-editor__editable:not(.ck-focused){border-color:var(--ck-color-base-border)}",""]);const i=n},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var r=e(t);return t[2]?"@media ".concat(t[2]," {").concat(r,"}"):r})).join("")},t.i=function(e,r,o){"string"==typeof e&&(e=[[null,e,""]]);var n={};if(o)for(var i=0;i<this.length;i++){var c=this[i][0];null!=c&&(n[c]=!0)}for(var a=0;a<e.length;a++){var s=[].concat(e[a]);o&&n[s[0]]||(r&&(s[2]?s[2]="".concat(r," and ").concat(s[2]):s[2]=r),t.push(s))}},t}},62:(e,t,r)=>{"use strict";var o,n=function(){return void 0===o&&(o=Boolean(window&&document&&document.all&&!window.atob)),o},i=function(){var e={};return function(t){if(void 0===e[t]){var r=document.querySelector(t);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(e){r=null}e[t]=r}return e[t]}}(),c=[];function a(e){for(var t=-1,r=0;r<c.length;r++)if(c[r].identifier===e){t=r;break}return t}function s(e,t){for(var r={},o=[],n=0;n<e.length;n++){var i=e[n],s=t.base?i[0]+t.base:i[0],l=r[s]||0,d="".concat(s," ").concat(l);r[s]=l+1;var u=a(d),p={css:i[1],media:i[2],sourceMap:i[3]};-1!==u?(c[u].references++,c[u].updater(p)):c.push({identifier:d,updater:k(p,t),references:1}),o.push(d)}return o}function l(e){var t=document.createElement("style"),o=e.attributes||{};if(void 0===o.nonce){var n=r.nc;n&&(o.nonce=n)}if(Object.keys(o).forEach((function(e){t.setAttribute(e,o[e])})),"function"==typeof e.insert)e.insert(t);else{var c=i(e.insert||"head");if(!c)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");c.appendChild(t)}return t}var d,u=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function p(e,t,r,o){var n=r?"":o.media?"@media ".concat(o.media," {").concat(o.css,"}"):o.css;if(e.styleSheet)e.styleSheet.cssText=u(t,n);else{var i=document.createTextNode(n),c=e.childNodes;c[t]&&e.removeChild(c[t]),c.length?e.insertBefore(i,c[t]):e.appendChild(i)}}function f(e,t,r){var o=r.css,n=r.media,i=r.sourceMap;if(n?e.setAttribute("media",n):e.removeAttribute("media"),i&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),e.styleSheet)e.styleSheet.cssText=o;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(o))}}var b=null,h=0;function k(e,t){var r,o,n;if(t.singleton){var i=h++;r=b||(b=l(t)),o=p.bind(null,r,i,!1),n=p.bind(null,r,i,!0)}else r=l(t),o=f.bind(null,r,t),n=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(r)};return o(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;o(e=t)}else n()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=n());var r=s(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var o=0;o<r.length;o++){var n=a(r[o]);c[n].references--}for(var i=s(e,t),l=0;l<r.length;l++){var d=a(r[l]);0===c[d].references&&(c[d].updater(),c.splice(d,1))}r=i}}}},704:(e,t,r)=>{e.exports=r(79)("./src/core.js")},492:(e,t,r)=>{e.exports=r(79)("./src/engine.js")},273:(e,t,r)=>{e.exports=r(79)("./src/ui.js")},209:(e,t,r)=>{e.exports=r(79)("./src/utils.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var i=t[o]={id:o,exports:{}};return e[o](i,i.exports,r),i.exports}r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nc=void 0;var o={};(()=>{"use strict";r.r(o),r.d(o,{ClassicEditor:()=>R});var e=r(704),t=r(209);const n=function(e){return null!=e&&"object"==typeof e};const i="object"==typeof global&&global&&global.Object===Object&&global;var c="object"==typeof self&&self&&self.Object===Object&&self;const a=(i||c||Function("return this")()).Symbol;var s=Object.prototype,l=s.hasOwnProperty,d=s.toString,u=a?a.toStringTag:void 0;const p=function(e){var t=l.call(e,u),r=e[u];try{e[u]=void 0;var o=!0}catch(e){}var n=d.call(e);return o&&(t?e[u]=r:delete e[u]),n};var f=Object.prototype.toString;const b=function(e){return f.call(e)};var h=a?a.toStringTag:void 0;const k=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":h&&h in Object(e)?p(e):b(e)};const v=function(e,t){return function(r){return e(t(r))}}(Object.getPrototypeOf,Object);var m=Function.prototype,y=Object.prototype,g=m.toString,_=y.hasOwnProperty,w=g.call(Object);const j=function(e){if(!n(e)||"[object Object]"!=k(e))return!1;var t=v(e);if(null===t)return!0;var r=_.call(t,"constructor")&&t.constructor;return"function"==typeof r&&r instanceof r&&g.call(r)==w};const x=function(e){return n(e)&&1===e.nodeType&&!j(e)};var O=r(273),E=r(492);class T extends e.EditorUI{constructor(e,r){super(e),this.view=r,this._toolbarConfig=(0,O.normalizeToolbarConfig)(e.config.get("toolbar")),this._elementReplacer=new t.ElementReplacer}get element(){return this.view.element}init(e){const t=this.editor,r=this.view,o=t.editing.view,n=r.editable,i=o.document.getRoot();n.name=i.rootName,r.render();const c=n.element;this.setEditableElement(n.name,c),r.editable.bind("isFocused").to(this.focusTracker),o.attachDomRoot(c),e&&this._elementReplacer.replace(e,this.element),this._initPlaceholder(),this._initToolbar(),this.fire("ready")}destroy(){const e=this.view,t=this.editor.editing.view;this._elementReplacer.restore(),t.detachDomRoot(e.editable.name),e.destroy(),super.destroy()}_initToolbar(){const e=this.view;e.stickyPanel.bind("isActive").to(this.focusTracker,"isFocused"),e.stickyPanel.limiterElement=e.element,e.stickyPanel.bind("viewportTopOffset").to(this,"viewportOffset",(({top:e})=>e)),e.toolbar.fillFromConfig(this._toolbarConfig,this.componentFactory),this.addToolbar(e.toolbar)}_initPlaceholder(){const e=this.editor,t=e.editing.view,r=t.document.getRoot(),o=e.sourceElement,n=e.config.get("placeholder")||o&&"textarea"===o.tagName.toLowerCase()&&o.getAttribute("placeholder");n&&(0,E.enablePlaceholder)({view:t,element:r,text:n,isDirectHost:!1,keepOnFocus:!0})}}var S=r(62),C=r.n(S),P=r(655),F={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};C()(P.Z,F);P.Z.locals;class M extends O.BoxedEditorUIView{constructor(e,t,r={}){super(e),this.stickyPanel=new O.StickyPanelView(e),this.toolbar=new O.ToolbarView(e,{shouldGroupWhenFull:r.shouldToolbarGroupWhenFull}),this.editable=new O.InlineEditableUIView(e,t)}render(){super.render(),this.stickyPanel.content.add(this.toolbar),this.top.add(this.stickyPanel),this.main.add(this.editable)}}class R extends e.Editor{constructor(r,o={}){if(!x(r)&&void 0!==o.initialData)throw new t.CKEditorError("editor-create-initial-data",null);super(o),void 0===this.config.get("initialData")&&this.config.set("initialData",function(e){return x(e)?(0,t.getDataFromElement)(e):e}(r)),x(r)&&(this.sourceElement=r),this.model.document.createRoot();const n=!this.config.get("toolbar.shouldNotGroupWhenFull"),i=new M(this.locale,this.editing.view,{shouldToolbarGroupWhenFull:n});this.ui=new T(this,i),(0,e.attachToForm)(this)}destroy(){return this.sourceElement&&this.updateSourceElement(),this.ui.destroy(),super.destroy()}static create(e,t={}){return new Promise((r=>{const o=new this(e,t);r(o.initPlugins().then((()=>o.ui.init(x(e)?e:null))).then((()=>o.data.init(o.config.get("initialData")))).then((()=>o.fire("ready"))).then((()=>o)))}))}}(0,t.mix)(R,e.DataApiMixin),(0,t.mix)(R,e.ElementApiMixin)})(),(window.CKEditor5=window.CKEditor5||{}).editorClassic=o})(); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/editor-decoupled/editor-decoupled.js b/web/core/assets/vendor/ckeditor5/editor-decoupled/editor-decoupled.js index d2918410298f84fdb67b77df4c8bc1eb2697e887..480d1123156f746c546b5ff976999d1074b4f7cb 100644 --- a/web/core/assets/vendor/ckeditor5/editor-decoupled/editor-decoupled.js +++ b/web/core/assets/vendor/ckeditor5/editor-decoupled/editor-decoupled.js @@ -1,4 +1,4 @@ /*! * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md. - */(()=>{var t={704:(t,e,o)=>{t.exports=o(79)("./src/core.js")},492:(t,e,o)=>{t.exports=o(79)("./src/engine.js")},273:(t,e,o)=>{t.exports=o(79)("./src/ui.js")},209:(t,e,o)=>{t.exports=o(79)("./src/utils.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function o(r){var i=e[r];if(void 0!==i)return i.exports;var n=e[r]={exports:{}};return t[r](n,n.exports,o),n.exports}o.d=(t,e)=>{for(var r in e)o.o(e,r)&&!o.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};(()=>{"use strict";o.r(r),o.d(r,{DecoupledEditor:()=>P});var t=o(704),e=o(209);const i=function(t){return null!=t&&"object"==typeof t};const n="object"==typeof global&&global&&global.Object===Object&&global;var s="object"==typeof self&&self&&self.Object===Object&&self;const l=(n||s||Function("return this")()).Symbol;var a=Object.prototype,c=a.hasOwnProperty,d=a.toString,u=l?l.toStringTag:void 0;const h=function(t){var e=c.call(t,u),o=t[u];try{t[u]=void 0;var r=!0}catch(t){}var i=d.call(t);return r&&(e?t[u]=o:delete t[u]),i};var b=Object.prototype.toString;const p=function(t){return b.call(t)};var g=l?l.toStringTag:void 0;const f=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":g&&g in Object(t)?h(t):p(t)};const m=function(t,e){return function(o){return t(e(o))}}(Object.getPrototypeOf,Object);var v=Function.prototype,y=Object.prototype,w=v.toString,E=y.hasOwnProperty,j=w.call(Object);const O=function(t){if(!i(t)||"[object Object]"!=f(t))return!1;var e=m(t);if(null===e)return!0;var o=E.call(e,"constructor")&&e.constructor;return"function"==typeof o&&o instanceof o&&w.call(o)==j};const x=function(t){return i(t)&&1===t.nodeType&&!O(t)};var T=o(273),D=o(492);class F extends t.EditorUI{constructor(t,e){super(t),this.view=e}init(){const t=this.editor,e=this.view,o=t.editing.view,r=e.editable,i=o.document.getRoot();e.editable.name=i.rootName,e.render();const n=r.element;this.setEditableElement(r.name,n),this.focusTracker.add(n),e.editable.bind("isFocused").to(this.focusTracker),o.attachDomRoot(n),this._initPlaceholder(),this._initToolbar(),this.fire("ready")}destroy(){const t=this.view;this.editor.editing.view.detachDomRoot(t.editable.name),t.destroy(),super.destroy()}_initToolbar(){const t=this.editor,e=this.view.toolbar;e.fillFromConfig(t.config.get("toolbar"),this.componentFactory),(0,T.enableToolbarKeyboardFocus)({origin:t.editing.view,originFocusTracker:this.focusTracker,originKeystrokeHandler:t.keystrokes,toolbar:e})}_initPlaceholder(){const t=this.editor,e=t.editing.view,o=e.document.getRoot(),r=t.sourceElement,i=t.config.get("placeholder")||r&&"textarea"===r.tagName.toLowerCase()&&r.getAttribute("placeholder");i&&(0,D.enablePlaceholder)({view:e,element:o,text:i,isDirectHost:!1,keepOnFocus:!0})}}class S extends T.EditorUIView{constructor(t,e,o={}){super(t);const r=t.t;this.toolbar=new T.ToolbarView(t,{shouldGroupWhenFull:o.shouldToolbarGroupWhenFull}),this.editable=new T.InlineEditableUIView(t,e,o.editableElement,{label:t=>r("Rich Text Editor. Editing area: %0",t.name)}),this.toolbar.extendTemplate({attributes:{class:["ck-reset_all","ck-rounded-corners"],dir:t.uiLanguageDirection}})}render(){super.render(),this.registerChild([this.toolbar,this.editable])}}class P extends t.Editor{constructor(o,r={}){if(!x(o)&&void 0!==r.initialData)throw new e.CKEditorError("editor-create-initial-data",null);super(r),void 0===this.config.get("initialData")&&this.config.set("initialData",function(t){return x(t)?(0,e.getDataFromElement)(t):t}(o)),x(o)&&(this.sourceElement=o,(0,t.secureSourceElement)(this)),this.model.document.createRoot();const i=!this.config.get("toolbar.shouldNotGroupWhenFull"),n=new S(this.locale,this.editing.view,{editableElement:this.sourceElement,shouldToolbarGroupWhenFull:i});this.ui=new F(this,n)}destroy(){const t=this.getData();return this.ui.destroy(),super.destroy().then((()=>{this.sourceElement&&this.updateSourceElement(t)}))}static create(t,o={}){return new Promise((r=>{if(x(t)&&"TEXTAREA"===t.tagName)throw new e.CKEditorError("editor-wrong-element",null);const i=new this(t,o);r(i.initPlugins().then((()=>i.ui.init())).then((()=>i.data.init(i.config.get("initialData")))).then((()=>i.fire("ready"))).then((()=>i)))}))}}(0,e.mix)(P,t.ElementApiMixin),(0,e.mix)(P,t.DataApiMixin)})(),(window.CKEditor5=window.CKEditor5||{}).editorDecoupled=r})(); \ No newline at end of file + */(()=>{var t={704:(t,e,o)=>{t.exports=o(79)("./src/core.js")},492:(t,e,o)=>{t.exports=o(79)("./src/engine.js")},273:(t,e,o)=>{t.exports=o(79)("./src/ui.js")},209:(t,e,o)=>{t.exports=o(79)("./src/utils.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function o(r){var i=e[r];if(void 0!==i)return i.exports;var n=e[r]={exports:{}};return t[r](n,n.exports,o),n.exports}o.d=(t,e)=>{for(var r in e)o.o(e,r)&&!o.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},o.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),o.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var r={};(()=>{"use strict";o.r(r),o.d(r,{DecoupledEditor:()=>F});var t=o(704),e=o(209);const i=function(t){return null!=t&&"object"==typeof t};const n="object"==typeof global&&global&&global.Object===Object&&global;var s="object"==typeof self&&self&&self.Object===Object&&self;const l=(n||s||Function("return this")()).Symbol;var a=Object.prototype,c=a.hasOwnProperty,d=a.toString,u=l?l.toStringTag:void 0;const h=function(t){var e=c.call(t,u),o=t[u];try{t[u]=void 0;var r=!0}catch(t){}var i=d.call(t);return r&&(e?t[u]=o:delete t[u]),i};var b=Object.prototype.toString;const p=function(t){return b.call(t)};var g=l?l.toStringTag:void 0;const f=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":g&&g in Object(t)?h(t):p(t)};const m=function(t,e){return function(o){return t(e(o))}}(Object.getPrototypeOf,Object);var v=Function.prototype,y=Object.prototype,w=v.toString,E=y.hasOwnProperty,j=w.call(Object);const O=function(t){if(!i(t)||"[object Object]"!=f(t))return!1;var e=m(t);if(null===e)return!0;var o=E.call(e,"constructor")&&e.constructor;return"function"==typeof o&&o instanceof o&&w.call(o)==j};const x=function(t){return i(t)&&1===t.nodeType&&!O(t)};var T=o(492);class D extends t.EditorUI{constructor(t,e){super(t),this.view=e}init(){const t=this.editor,e=this.view,o=t.editing.view,r=e.editable,i=o.document.getRoot();e.editable.name=i.rootName,e.render();const n=r.element;this.setEditableElement(r.name,n),e.editable.bind("isFocused").to(this.focusTracker),o.attachDomRoot(n),this._initPlaceholder(),this._initToolbar(),this.fire("ready")}destroy(){const t=this.view;this.editor.editing.view.detachDomRoot(t.editable.name),t.destroy(),super.destroy()}_initToolbar(){const t=this.editor,e=this.view;e.toolbar.fillFromConfig(t.config.get("toolbar"),this.componentFactory),this.addToolbar(e.toolbar)}_initPlaceholder(){const t=this.editor,e=t.editing.view,o=e.document.getRoot(),r=t.sourceElement,i=t.config.get("placeholder")||r&&"textarea"===r.tagName.toLowerCase()&&r.getAttribute("placeholder");i&&(0,T.enablePlaceholder)({view:e,element:o,text:i,isDirectHost:!1,keepOnFocus:!0})}}var S=o(273);class P extends S.EditorUIView{constructor(t,e,o={}){super(t);const r=t.t;this.toolbar=new S.ToolbarView(t,{shouldGroupWhenFull:o.shouldToolbarGroupWhenFull}),this.editable=new S.InlineEditableUIView(t,e,o.editableElement,{label:t=>r("Rich Text Editor. Editing area: %0",t.name)}),this.toolbar.extendTemplate({attributes:{class:["ck-reset_all","ck-rounded-corners"],dir:t.uiLanguageDirection}})}render(){super.render(),this.registerChild([this.toolbar,this.editable])}}class F extends t.Editor{constructor(o,r={}){if(!x(o)&&void 0!==r.initialData)throw new e.CKEditorError("editor-create-initial-data",null);super(r),void 0===this.config.get("initialData")&&this.config.set("initialData",function(t){return x(t)?(0,e.getDataFromElement)(t):t}(o)),x(o)&&(this.sourceElement=o,(0,t.secureSourceElement)(this)),this.model.document.createRoot();const i=!this.config.get("toolbar.shouldNotGroupWhenFull"),n=new P(this.locale,this.editing.view,{editableElement:this.sourceElement,shouldToolbarGroupWhenFull:i});this.ui=new D(this,n)}destroy(){const t=this.getData();return this.ui.destroy(),super.destroy().then((()=>{this.sourceElement&&this.updateSourceElement(t)}))}static create(t,o={}){return new Promise((r=>{if(x(t)&&"TEXTAREA"===t.tagName)throw new e.CKEditorError("editor-wrong-element",null);const i=new this(t,o);r(i.initPlugins().then((()=>i.ui.init())).then((()=>i.data.init(i.config.get("initialData")))).then((()=>i.fire("ready"))).then((()=>i)))}))}}(0,e.mix)(F,t.ElementApiMixin),(0,e.mix)(F,t.DataApiMixin)})(),(window.CKEditor5=window.CKEditor5||{}).editorDecoupled=r})(); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/html-support/html-support.js b/web/core/assets/vendor/ckeditor5/html-support/html-support.js index 7b4d3c78ceb81b0662ba6f5e534c943bc35d7c6f..efcfba623df28115dbe77ea7327d3981d804632c 100644 --- a/web/core/assets/vendor/ckeditor5/html-support/html-support.js +++ b/web/core/assets/vendor/ckeditor5/html-support/html-support.js @@ -2,4 +2,4 @@ /*! * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md. - */(()=>{var t={142:(t,e,r)=>{"use strict";r.d(e,{Z:()=>i});var o=r(609),n=r.n(o)()((function(t){return t[1]}));n.push([t.id,":root{--ck-html-object-embed-unfocused-outline-width:1px}.ck-widget.html-object-embed{background-color:var(--ck-color-base-foreground);font-size:var(--ck-font-size-base);min-width:calc(76px + var(--ck-spacing-standard));padding:var(--ck-spacing-small);padding-top:calc(var(--ck-font-size-tiny) + var(--ck-spacing-large))}.ck-widget.html-object-embed:not(.ck-widget_selected):not(:hover){outline:var(--ck-html-object-embed-unfocused-outline-width) dashed var(--ck-color-widget-blurred-border)}.ck-widget.html-object-embed:before{background:#999;border-radius:0 0 var(--ck-border-radius) var(--ck-border-radius);color:var(--ck-color-base-background);content:attr(data-html-object-embed-label);font-family:var(--ck-font-face);font-size:var(--ck-font-size-tiny);font-style:normal;font-weight:400;left:var(--ck-spacing-standard);padding:calc(var(--ck-spacing-tiny) + var(--ck-html-object-embed-unfocused-outline-width)) var(--ck-spacing-small) var(--ck-spacing-tiny);position:absolute;top:0;transition:background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck-widget.html-object-embed .ck-widget__type-around .ck-widget__type-around__button.ck-widget__type-around__button_before{margin-left:50px}.ck-widget.html-object-embed .html-object-embed__content{pointer-events:none}div.ck-widget.html-object-embed{margin:1em auto}span.ck-widget.html-object-embed{display:inline-block}",""]);const i=n},609:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var r=t(e);return e[2]?"@media ".concat(e[2]," {").concat(r,"}"):r})).join("")},e.i=function(t,r,o){"string"==typeof t&&(t=[[null,t,""]]);var n={};if(o)for(var i=0;i<this.length;i++){var s=this[i][0];null!=s&&(n[s]=!0)}for(var l=0;l<t.length;l++){var c=[].concat(t[l]);o&&n[c[0]]||(r&&(c[2]?c[2]="".concat(r," and ").concat(c[2]):c[2]=r),e.push(c))}},e}},62:(t,e,r)=>{"use strict";var o,n=function(){return void 0===o&&(o=Boolean(window&&document&&document.all&&!window.atob)),o},i=function(){var t={};return function(e){if(void 0===t[e]){var r=document.querySelector(e);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(t){r=null}t[e]=r}return t[e]}}(),s=[];function l(t){for(var e=-1,r=0;r<s.length;r++)if(s[r].identifier===t){e=r;break}return e}function c(t,e){for(var r={},o=[],n=0;n<t.length;n++){var i=t[n],c=e.base?i[0]+e.base:i[0],a=r[c]||0,u="".concat(c," ").concat(a);r[c]=a+1;var m=l(u),d={css:i[1],media:i[2],sourceMap:i[3]};-1!==m?(s[m].references++,s[m].updater(d)):s.push({identifier:u,updater:p(d,e),references:1}),o.push(u)}return o}function a(t){var e=document.createElement("style"),o=t.attributes||{};if(void 0===o.nonce){var n=r.nc;n&&(o.nonce=n)}if(Object.keys(o).forEach((function(t){e.setAttribute(t,o[t])})),"function"==typeof t.insert)t.insert(e);else{var s=i(t.insert||"head");if(!s)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");s.appendChild(e)}return e}var u,m=(u=[],function(t,e){return u[t]=e,u.filter(Boolean).join("\n")});function d(t,e,r,o){var n=r?"":o.media?"@media ".concat(o.media," {").concat(o.css,"}"):o.css;if(t.styleSheet)t.styleSheet.cssText=m(e,n);else{var i=document.createTextNode(n),s=t.childNodes;s[e]&&t.removeChild(s[e]),s.length?t.insertBefore(i,s[e]):t.appendChild(i)}}function h(t,e,r){var o=r.css,n=r.media,i=r.sourceMap;if(n?t.setAttribute("media",n):t.removeAttribute("media"),i&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),t.styleSheet)t.styleSheet.cssText=o;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(o))}}var f=null,b=0;function p(t,e){var r,o,n;if(e.singleton){var i=b++;r=f||(f=a(e)),o=d.bind(null,r,i,!1),n=d.bind(null,r,i,!0)}else r=a(e),o=h.bind(null,r,e),n=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(r)};return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else n()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=n());var r=c(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var o=0;o<r.length;o++){var n=l(r[o]);s[n].references--}for(var i=c(t,e),a=0;a<r.length;a++){var u=l(r[a]);0===s[u].references&&(s[u].updater(),s.splice(u,1))}r=i}}}},704:(t,e,r)=>{t.exports=r(79)("./src/core.js")},492:(t,e,r)=>{t.exports=r(79)("./src/engine.js")},209:(t,e,r)=>{t.exports=r(79)("./src/utils.js")},995:(t,e,r)=>{t.exports=r(79)("./src/widget.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function r(o){var n=e[o];if(void 0!==n)return n.exports;var i=e[o]={id:o,exports:{}};return t[o](i,i.exports,r),i.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var o in e)r.o(e,o)&&!r.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nc=void 0;var o={};(()=>{"use strict";r.r(o),r.d(o,{DataFilter:()=>po,DataSchema:()=>He,GeneralHtmlSupport:()=>rn,HtmlComment:()=>sn});var t=r(704),e=r(209);const n=[{model:"codeBlock",view:"pre"},{model:"paragraph",view:"p"},{model:"blockQuote",view:"blockquote"},{model:"listItem",view:"li"},{model:"pageBreak",view:"div"},{model:"rawHtml",view:"div"},{model:"table",view:"table"},{model:"tableRow",view:"tr"},{model:"tableCell",view:"td"},{model:"tableCell",view:"th"},{model:"caption",view:"caption"},{model:"caption",view:"figcaption"},{model:"imageBlock",view:"img"},{model:"imageInline",view:"img"},{model:"htmlP",view:"p",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlBlockquote",view:"blockquote",modelSchema:{inheritAllFrom:"$container"}},{model:"htmlTable",view:"table",modelSchema:{allowWhere:"$block",isBlock:!0}},{model:"htmlTbody",view:"tbody",modelSchema:{allowIn:"htmlTable",isBlock:!0}},{model:"htmlThead",view:"thead",modelSchema:{allowIn:"htmlTable",isBlock:!0}},{model:"htmlTfoot",view:"tfoot",modelSchema:{allowIn:"htmlTable",isBlock:!0}},{model:"htmlCaption",view:"caption",modelSchema:{allowIn:"htmlTable",allowChildren:"$text",isBlock:!0}},{model:"htmlTr",view:"tr",modelSchema:{allowIn:["htmlTable","htmlThead","htmlTbody"]}},{model:"htmlTd",view:"td",modelSchema:{allowIn:"htmlTr",allowContentOf:"$container"}},{model:"htmlTh",view:"th",modelSchema:{allowIn:"htmlTr",allowContentOf:"$container"}},{model:"htmlFigure",view:"figure",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlFigcaption",view:"figcaption",modelSchema:{allowIn:"htmlFigure",allowChildren:"$text",isBlock:!0}},{model:"htmlAddress",view:"address",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlAside",view:"aside",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlMain",view:"main",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlDetails",view:"details",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlSummary",view:"summary",modelSchema:{allowChildren:"$text",allowIn:"htmlDetails",isBlock:!0}},{model:"htmlDiv",view:"div",paragraphLikeModel:"htmlDivParagraph",modelSchema:{inheritAllFrom:"$container"}},{model:"htmlFieldset",view:"fieldset",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlLegend",view:"legend",modelSchema:{allowIn:"htmlFieldset",allowChildren:"$text"}},{model:"htmlHeader",view:"header",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlFooter",view:"footer",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlForm",view:"form",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlHgroup",view:"hgroup",modelSchema:{allowChildren:["htmlH1","htmlH2","htmlH3","htmlH4","htmlH5","htmlH6"],isBlock:!0}},{model:"htmlH1",view:"h1",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH2",view:"h2",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH3",view:"h3",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH4",view:"h4",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH5",view:"h5",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH6",view:"h6",modelSchema:{inheritAllFrom:"$block"}},{model:"$htmlList",modelSchema:{allowWhere:"$container",allowChildren:["$htmlList","htmlLi"],isBlock:!0}},{model:"htmlDir",view:"dir",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlMenu",view:"menu",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlUl",view:"ul",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlOl",view:"ol",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlLi",view:"li",modelSchema:{allowIn:"$htmlList",allowChildren:"$text",isBlock:!0}},{model:"htmlPre",view:"pre",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlArticle",view:"article",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlSection",view:"section",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlNav",view:"nav",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlDl",view:"dl",modelSchema:{allowWhere:"$container",allowChildren:["htmlDt","htmlDd"],isBlock:!0}},{model:"htmlDt",view:"dt",modelSchema:{allowChildren:"$block",isBlock:!0}},{model:"htmlDd",view:"dd",modelSchema:{allowChildren:"$block",isBlock:!0}},{model:"htmlCenter",view:"center",modelSchema:{inheritAllFrom:"$container",isBlock:!0}}],i=[{model:"htmlAcronym",view:"acronym",attributeProperties:{copyOnEnter:!0}},{model:"htmlTt",view:"tt",attributeProperties:{copyOnEnter:!0}},{model:"htmlFont",view:"font",attributeProperties:{copyOnEnter:!0}},{model:"htmlTime",view:"time",attributeProperties:{copyOnEnter:!0}},{model:"htmlVar",view:"var",attributeProperties:{copyOnEnter:!0}},{model:"htmlBig",view:"big",attributeProperties:{copyOnEnter:!0}},{model:"htmlSmall",view:"small",attributeProperties:{copyOnEnter:!0}},{model:"htmlSamp",view:"samp",attributeProperties:{copyOnEnter:!0}},{model:"htmlQ",view:"q",attributeProperties:{copyOnEnter:!0}},{model:"htmlOutput",view:"output",attributeProperties:{copyOnEnter:!0}},{model:"htmlKbd",view:"kbd",attributeProperties:{copyOnEnter:!0}},{model:"htmlBdi",view:"bdi",attributeProperties:{copyOnEnter:!0}},{model:"htmlBdo",view:"bdo",attributeProperties:{copyOnEnter:!0}},{model:"htmlAbbr",view:"abbr",attributeProperties:{copyOnEnter:!0}},{model:"htmlA",view:"a",priority:5,coupledAttribute:"linkHref",attributeProperties:{copyOnEnter:!0}},{model:"htmlStrong",view:"strong",coupledAttribute:"bold",attributeProperties:{copyOnEnter:!0}},{model:"htmlB",view:"b",coupledAttribute:"bold",attributeProperties:{copyOnEnter:!0}},{model:"htmlI",view:"i",coupledAttribute:"italic",attributeProperties:{copyOnEnter:!0}},{model:"htmlEm",view:"em",coupledAttribute:"italic",attributeProperties:{copyOnEnter:!0}},{model:"htmlS",view:"s",coupledAttribute:"strikethrough",attributeProperties:{copyOnEnter:!0}},{model:"htmlDel",view:"del",coupledAttribute:"strikethrough",attributeProperties:{copyOnEnter:!0}},{model:"htmlIns",view:"ins",attributeProperties:{copyOnEnter:!0}},{model:"htmlU",view:"u",coupledAttribute:"underline",attributeProperties:{copyOnEnter:!0}},{model:"htmlSub",view:"sub",coupledAttribute:"subscript",attributeProperties:{copyOnEnter:!0}},{model:"htmlSup",view:"sup",coupledAttribute:"superscript",attributeProperties:{copyOnEnter:!0}},{model:"htmlCode",view:"code",coupledAttribute:"code",attributeProperties:{copyOnEnter:!0}},{model:"htmlMark",view:"mark",attributeProperties:{copyOnEnter:!0}},{model:"htmlSpan",view:"span",attributeProperties:{copyOnEnter:!0}},{model:"htmlCite",view:"cite",attributeProperties:{copyOnEnter:!0}},{model:"htmlLabel",view:"label",attributeProperties:{copyOnEnter:!0}},{model:"htmlDfn",view:"dfn",attributeProperties:{copyOnEnter:!0}},{model:"htmlObject",view:"object",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlIframe",view:"iframe",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlInput",view:"input",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlButton",view:"button",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlTextarea",view:"textarea",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlSelect",view:"select",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlVideo",view:"video",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlEmbed",view:"embed",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlOembed",view:"oembed",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlAudio",view:"audio",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlImg",view:"img",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlCanvas",view:"canvas",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlMeter",view:"meter",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlProgress",view:"progress",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlScript",view:"script",modelSchema:{allowWhere:["$text","$block"],isInline:!0}},{model:"htmlStyle",view:"style",modelSchema:{allowWhere:["$text","$block"],isInline:!0}},{model:"htmlCustomElement",view:"$customElement",modelSchema:{allowWhere:["$text","$block"],isInline:!0}}];const s=function(){this.__data__=[],this.size=0};const l=function(t,e){return t===e||t!=t&&e!=e};const c=function(t,e){for(var r=t.length;r--;)if(l(t[r][0],e))return r;return-1};var a=Array.prototype.splice;const u=function(t){var e=this.__data__,r=c(e,t);return!(r<0)&&(r==e.length-1?e.pop():a.call(e,r,1),--this.size,!0)};const m=function(t){var e=this.__data__,r=c(e,t);return r<0?void 0:e[r][1]};const d=function(t){return c(this.__data__,t)>-1};const h=function(t,e){var r=this.__data__,o=c(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this};function f(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}f.prototype.clear=s,f.prototype.delete=u,f.prototype.get=m,f.prototype.has=d,f.prototype.set=h;const b=f;const p=function(){this.__data__=new b,this.size=0};const g=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r};const v=function(t){return this.__data__.get(t)};const w=function(t){return this.__data__.has(t)};const y="object"==typeof global&&global&&global.Object===Object&&global;var A="object"==typeof self&&self&&self.Object===Object&&self;const j=y||A||Function("return this")();const _=j.Symbol;var O=Object.prototype,S=O.hasOwnProperty,k=O.toString,E=_?_.toStringTag:void 0;const C=function(t){var e=S.call(t,E),r=t[E];try{t[E]=void 0;var o=!0}catch(t){}var n=k.call(t);return o&&(e?t[E]=r:delete t[E]),n};var $=Object.prototype.toString;const x=function(t){return $.call(t)};var I=_?_.toStringTag:void 0;const F=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":I&&I in Object(t)?C(t):x(t)};const P=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)};const T=function(t){if(!P(t))return!1;var e=F(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e};const B=j["__core-js_shared__"];var R,M=(R=/[^.]+$/.exec(B&&B.keys&&B.keys.IE_PROTO||""))?"Symbol(src)_1."+R:"";const D=function(t){return!!M&&M in t};var L=Function.prototype.toString;const N=function(t){if(null!=t){try{return L.call(t)}catch(t){}try{return t+""}catch(t){}}return""};var V=/^\[object .+?Constructor\]$/,H=Function.prototype,z=Object.prototype,q=H.toString,U=z.hasOwnProperty,W=RegExp("^"+q.call(U).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const G=function(t){return!(!P(t)||D(t))&&(T(t)?W:V).test(N(t))};const K=function(t,e){return null==t?void 0:t[e]};const Z=function(t,e){var r=K(t,e);return G(r)?r:void 0};const Q=Z(j,"Map");const J=Z(Object,"create");const X=function(){this.__data__=J?J(null):{},this.size=0};const Y=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e};var tt=Object.prototype.hasOwnProperty;const et=function(t){var e=this.__data__;if(J){var r=e[t];return"__lodash_hash_undefined__"===r?void 0:r}return tt.call(e,t)?e[t]:void 0};var rt=Object.prototype.hasOwnProperty;const ot=function(t){var e=this.__data__;return J?void 0!==e[t]:rt.call(e,t)};const nt=function(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=J&&void 0===e?"__lodash_hash_undefined__":e,this};function it(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}it.prototype.clear=X,it.prototype.delete=Y,it.prototype.get=et,it.prototype.has=ot,it.prototype.set=nt;const st=it;const lt=function(){this.size=0,this.__data__={hash:new st,map:new(Q||b),string:new st}};const ct=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t};const at=function(t,e){var r=t.__data__;return ct(e)?r["string"==typeof e?"string":"hash"]:r.map};const ut=function(t){var e=at(this,t).delete(t);return this.size-=e?1:0,e};const mt=function(t){return at(this,t).get(t)};const dt=function(t){return at(this,t).has(t)};const ht=function(t,e){var r=at(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this};function ft(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}ft.prototype.clear=lt,ft.prototype.delete=ut,ft.prototype.get=mt,ft.prototype.has=dt,ft.prototype.set=ht;const bt=ft;const pt=function(t,e){var r=this.__data__;if(r instanceof b){var o=r.__data__;if(!Q||o.length<199)return o.push([t,e]),this.size=++r.size,this;r=this.__data__=new bt(o)}return r.set(t,e),this.size=r.size,this};function gt(t){var e=this.__data__=new b(t);this.size=e.size}gt.prototype.clear=p,gt.prototype.delete=g,gt.prototype.get=v,gt.prototype.has=w,gt.prototype.set=pt;const vt=gt;const wt=function(){try{var t=Z(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();const yt=function(t,e,r){"__proto__"==e&&wt?wt(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r};const At=function(t,e,r){(void 0!==r&&!l(t[e],r)||void 0===r&&!(e in t))&&yt(t,e,r)};const jt=function(t){return function(e,r,o){for(var n=-1,i=Object(e),s=o(e),l=s.length;l--;){var c=s[t?l:++n];if(!1===r(i[c],c,i))break}return e}}();var _t="object"==typeof exports&&exports&&!exports.nodeType&&exports,Ot=_t&&"object"==typeof module&&module&&!module.nodeType&&module,St=Ot&&Ot.exports===_t?j.Buffer:void 0,kt=St?St.allocUnsafe:void 0;const Et=function(t,e){if(e)return t.slice();var r=t.length,o=kt?kt(r):new t.constructor(r);return t.copy(o),o};const Ct=j.Uint8Array;const $t=function(t){var e=new t.constructor(t.byteLength);return new Ct(e).set(new Ct(t)),e};const xt=function(t,e){var r=e?$t(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)};const It=function(t,e){var r=-1,o=t.length;for(e||(e=Array(o));++r<o;)e[r]=t[r];return e};var Ft=Object.create;const Pt=function(){function t(){}return function(e){if(!P(e))return{};if(Ft)return Ft(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();const Tt=function(t,e){return function(r){return t(e(r))}};const Bt=Tt(Object.getPrototypeOf,Object);var Rt=Object.prototype;const Mt=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Rt)};const Dt=function(t){return"function"!=typeof t.constructor||Mt(t)?{}:Pt(Bt(t))};const Lt=function(t){return null!=t&&"object"==typeof t};const Nt=function(t){return Lt(t)&&"[object Arguments]"==F(t)};var Vt=Object.prototype,Ht=Vt.hasOwnProperty,zt=Vt.propertyIsEnumerable;const qt=Nt(function(){return arguments}())?Nt:function(t){return Lt(t)&&Ht.call(t,"callee")&&!zt.call(t,"callee")};const Ut=Array.isArray;const Wt=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991};const Gt=function(t){return null!=t&&Wt(t.length)&&!T(t)};const Kt=function(t){return Lt(t)&&Gt(t)};const Zt=function(){return!1};var Qt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Jt=Qt&&"object"==typeof module&&module&&!module.nodeType&&module,Xt=Jt&&Jt.exports===Qt?j.Buffer:void 0;const Yt=(Xt?Xt.isBuffer:void 0)||Zt;var te=Function.prototype,ee=Object.prototype,re=te.toString,oe=ee.hasOwnProperty,ne=re.call(Object);const ie=function(t){if(!Lt(t)||"[object Object]"!=F(t))return!1;var e=Bt(t);if(null===e)return!0;var r=oe.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&re.call(r)==ne};var se={};se["[object Float32Array]"]=se["[object Float64Array]"]=se["[object Int8Array]"]=se["[object Int16Array]"]=se["[object Int32Array]"]=se["[object Uint8Array]"]=se["[object Uint8ClampedArray]"]=se["[object Uint16Array]"]=se["[object Uint32Array]"]=!0,se["[object Arguments]"]=se["[object Array]"]=se["[object ArrayBuffer]"]=se["[object Boolean]"]=se["[object DataView]"]=se["[object Date]"]=se["[object Error]"]=se["[object Function]"]=se["[object Map]"]=se["[object Number]"]=se["[object Object]"]=se["[object RegExp]"]=se["[object Set]"]=se["[object String]"]=se["[object WeakMap]"]=!1;const le=function(t){return Lt(t)&&Wt(t.length)&&!!se[F(t)]};const ce=function(t){return function(e){return t(e)}};var ae="object"==typeof exports&&exports&&!exports.nodeType&&exports,ue=ae&&"object"==typeof module&&module&&!module.nodeType&&module,me=ue&&ue.exports===ae&&y.process;const de=function(){try{var t=ue&&ue.require&&ue.require("util").types;return t||me&&me.binding&&me.binding("util")}catch(t){}}();var he=de&&de.isTypedArray;const fe=he?ce(he):le;const be=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]};var pe=Object.prototype.hasOwnProperty;const ge=function(t,e,r){var o=t[e];pe.call(t,e)&&l(o,r)&&(void 0!==r||e in t)||yt(t,e,r)};const ve=function(t,e,r,o){var n=!r;r||(r={});for(var i=-1,s=e.length;++i<s;){var l=e[i],c=o?o(r[l],t[l],l,r,t):void 0;void 0===c&&(c=t[l]),n?yt(r,l,c):ge(r,l,c)}return r};const we=function(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o};var ye=/^(?:0|[1-9]\d*)$/;const Ae=function(t,e){var r=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==r||"symbol"!=r&&ye.test(t))&&t>-1&&t%1==0&&t<e};var je=Object.prototype.hasOwnProperty;const _e=function(t,e){var r=Ut(t),o=!r&&qt(t),n=!r&&!o&&Yt(t),i=!r&&!o&&!n&&fe(t),s=r||o||n||i,l=s?we(t.length,String):[],c=l.length;for(var a in t)!e&&!je.call(t,a)||s&&("length"==a||n&&("offset"==a||"parent"==a)||i&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||Ae(a,c))||l.push(a);return l};const Oe=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e};var Se=Object.prototype.hasOwnProperty;const ke=function(t){if(!P(t))return Oe(t);var e=Mt(t),r=[];for(var o in t)("constructor"!=o||!e&&Se.call(t,o))&&r.push(o);return r};const Ee=function(t){return Gt(t)?_e(t,!0):ke(t)};const Ce=function(t){return ve(t,Ee(t))};const $e=function(t,e,r,o,n,i,s){var l=be(t,r),c=be(e,r),a=s.get(c);if(a)At(t,r,a);else{var u=i?i(l,c,r+"",t,e,s):void 0,m=void 0===u;if(m){var d=Ut(c),h=!d&&Yt(c),f=!d&&!h&&fe(c);u=c,d||h||f?Ut(l)?u=l:Kt(l)?u=It(l):h?(m=!1,u=Et(c,!0)):f?(m=!1,u=xt(c,!0)):u=[]:ie(c)||qt(c)?(u=l,qt(l)?u=Ce(l):P(l)&&!T(l)||(u=Dt(c))):m=!1}m&&(s.set(c,u),n(u,c,o,i,s),s.delete(c)),At(t,r,u)}};const xe=function t(e,r,o,n,i){e!==r&&jt(r,(function(s,l){if(i||(i=new vt),P(s))$e(e,r,l,o,t,n,i);else{var c=n?n(be(e,l),s,l+"",e,r,i):void 0;void 0===c&&(c=s),At(e,l,c)}}),Ee)};const Ie=function(t){return t};const Fe=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)};var Pe=Math.max;const Te=function(t,e,r){return e=Pe(void 0===e?t.length-1:e,0),function(){for(var o=arguments,n=-1,i=Pe(o.length-e,0),s=Array(i);++n<i;)s[n]=o[e+n];n=-1;for(var l=Array(e+1);++n<e;)l[n]=o[n];return l[e]=r(s),Fe(t,this,l)}};const Be=function(t){return function(){return t}};const Re=wt?function(t,e){return wt(t,"toString",{configurable:!0,enumerable:!1,value:Be(e),writable:!0})}:Ie;var Me=Date.now;const De=function(t){var e=0,r=0;return function(){var o=Me(),n=16-(o-r);if(r=o,n>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Re);const Le=function(t,e){return De(Te(t,e,Ie),t+"")};const Ne=function(t,e,r){if(!P(r))return!1;var o=typeof e;return!!("number"==o?Gt(r)&&Ae(e,r.length):"string"==o&&e in r)&&l(r[e],t)};const Ve=function(t){return Le((function(e,r){var o=-1,n=r.length,i=n>1?r[n-1]:void 0,s=n>2?r[2]:void 0;for(i=t.length>3&&"function"==typeof i?(n--,i):void 0,s&&Ne(r[0],r[1],s)&&(i=n<3?void 0:i,n=1),e=Object(e);++o<n;){var l=r[o];l&&t(e,l,o,i)}return e}))}((function(t,e,r,o){xe(t,e,r,o)}));class He extends t.Plugin{constructor(t){super(t),this._definitions=new Map}static get pluginName(){return"DataSchema"}init(){for(const t of n)this.registerBlockElement(t);for(const t of i)this.registerInlineElement(t)}registerBlockElement(t){this._definitions.set(t.model,{...t,isBlock:!0})}registerInlineElement(t){this._definitions.set(t.model,{...t,isInline:!0})}extendBlockElement(t){this._extendDefinition({...t,isBlock:!0})}extendInlineElement(t){this._extendDefinition({...t,isInline:!0})}getDefinitionsForView(t,e){const r=new Set;for(const o of this._getMatchingViewDefinitions(t)){if(e)for(const t of this._getReferences(o.model))r.add(t);r.add(o)}return r}_getMatchingViewDefinitions(t){return Array.from(this._definitions.values()).filter((e=>e.view&&function(t,e){if("string"==typeof t)return t===e;if(t instanceof RegExp)return t.test(e);return!1}(t,e.view)))}*_getReferences(t){const{modelSchema:r}=this._definitions.get(t);if(!r)return;const o=["inheritAllFrom","inheritTypesFrom","allowWhere","allowContentOf","allowAttributesOf"];for(const n of o)for(const o of(0,e.toArray)(r[n]||[])){const e=this._definitions.get(o);o!==t&&e&&(yield*this._getReferences(e.model),yield e)}}_extendDefinition(t){const e=this._definitions.get(t.model),r=Ve({},e,t,((t,e)=>Array.isArray(t)?t.concat(e):void 0));this._definitions.set(t.model,r)}}var ze=r(492),qe=r(995);const Ue=function(t,e){for(var r=-1,o=null==t?0:t.length;++r<o&&!1!==e(t[r],r,t););return t};const We=Tt(Object.keys,Object);var Ge=Object.prototype.hasOwnProperty;const Ke=function(t){if(!Mt(t))return We(t);var e=[];for(var r in Object(t))Ge.call(t,r)&&"constructor"!=r&&e.push(r);return e};const Ze=function(t){return Gt(t)?_e(t):Ke(t)};const Qe=function(t,e){return t&&ve(e,Ze(e),t)};const Je=function(t,e){return t&&ve(e,Ee(e),t)};const Xe=function(t,e){for(var r=-1,o=null==t?0:t.length,n=0,i=[];++r<o;){var s=t[r];e(s,r,t)&&(i[n++]=s)}return i};const Ye=function(){return[]};var tr=Object.prototype.propertyIsEnumerable,er=Object.getOwnPropertySymbols;const rr=er?function(t){return null==t?[]:(t=Object(t),Xe(er(t),(function(e){return tr.call(t,e)})))}:Ye;const or=function(t,e){return ve(t,rr(t),e)};const nr=function(t,e){for(var r=-1,o=e.length,n=t.length;++r<o;)t[n+r]=e[r];return t};const ir=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)nr(e,rr(t)),t=Bt(t);return e}:Ye;const sr=function(t,e){return ve(t,ir(t),e)};const lr=function(t,e,r){var o=e(t);return Ut(t)?o:nr(o,r(t))};const cr=function(t){return lr(t,Ze,rr)};const ar=function(t){return lr(t,Ee,ir)};const ur=Z(j,"DataView");const mr=Z(j,"Promise");const dr=Z(j,"Set");const hr=Z(j,"WeakMap");var fr="[object Map]",br="[object Promise]",pr="[object Set]",gr="[object WeakMap]",vr="[object DataView]",wr=N(ur),yr=N(Q),Ar=N(mr),jr=N(dr),_r=N(hr),Or=F;(ur&&Or(new ur(new ArrayBuffer(1)))!=vr||Q&&Or(new Q)!=fr||mr&&Or(mr.resolve())!=br||dr&&Or(new dr)!=pr||hr&&Or(new hr)!=gr)&&(Or=function(t){var e=F(t),r="[object Object]"==e?t.constructor:void 0,o=r?N(r):"";if(o)switch(o){case wr:return vr;case yr:return fr;case Ar:return br;case jr:return pr;case _r:return gr}return e});const Sr=Or;var kr=Object.prototype.hasOwnProperty;const Er=function(t){var e=t.length,r=new t.constructor(e);return e&&"string"==typeof t[0]&&kr.call(t,"index")&&(r.index=t.index,r.input=t.input),r};const Cr=function(t,e){var r=e?$t(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)};var $r=/\w*$/;const xr=function(t){var e=new t.constructor(t.source,$r.exec(t));return e.lastIndex=t.lastIndex,e};var Ir=_?_.prototype:void 0,Fr=Ir?Ir.valueOf:void 0;const Pr=function(t){return Fr?Object(Fr.call(t)):{}};const Tr=function(t,e,r){var o=t.constructor;switch(e){case"[object ArrayBuffer]":return $t(t);case"[object Boolean]":case"[object Date]":return new o(+t);case"[object DataView]":return Cr(t,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return xt(t,r);case"[object Map]":case"[object Set]":return new o;case"[object Number]":case"[object String]":return new o(t);case"[object RegExp]":return xr(t);case"[object Symbol]":return Pr(t)}};const Br=function(t){return Lt(t)&&"[object Map]"==Sr(t)};var Rr=de&&de.isMap;const Mr=Rr?ce(Rr):Br;const Dr=function(t){return Lt(t)&&"[object Set]"==Sr(t)};var Lr=de&&de.isSet;const Nr=Lr?ce(Lr):Dr;var Vr="[object Arguments]",Hr="[object Function]",zr="[object Object]",qr={};qr[Vr]=qr["[object Array]"]=qr["[object ArrayBuffer]"]=qr["[object DataView]"]=qr["[object Boolean]"]=qr["[object Date]"]=qr["[object Float32Array]"]=qr["[object Float64Array]"]=qr["[object Int8Array]"]=qr["[object Int16Array]"]=qr["[object Int32Array]"]=qr["[object Map]"]=qr["[object Number]"]=qr["[object Object]"]=qr["[object RegExp]"]=qr["[object Set]"]=qr["[object String]"]=qr["[object Symbol]"]=qr["[object Uint8Array]"]=qr["[object Uint8ClampedArray]"]=qr["[object Uint16Array]"]=qr["[object Uint32Array]"]=!0,qr["[object Error]"]=qr[Hr]=qr["[object WeakMap]"]=!1;const Ur=function t(e,r,o,n,i,s){var l,c=1&r,a=2&r,u=4&r;if(o&&(l=i?o(e,n,i,s):o(e)),void 0!==l)return l;if(!P(e))return e;var m=Ut(e);if(m){if(l=Er(e),!c)return It(e,l)}else{var d=Sr(e),h=d==Hr||"[object GeneratorFunction]"==d;if(Yt(e))return Et(e,c);if(d==zr||d==Vr||h&&!i){if(l=a||h?{}:Dt(e),!c)return a?sr(e,Je(l,e)):or(e,Qe(l,e))}else{if(!qr[d])return i?e:{};l=Tr(e,d,c)}}s||(s=new vt);var f=s.get(e);if(f)return f;s.set(e,l),Nr(e)?e.forEach((function(n){l.add(t(n,r,o,n,e,s))})):Mr(e)&&e.forEach((function(n,i){l.set(i,t(n,r,o,i,e,s))}));var b=m?void 0:(u?a?ar:cr:a?Ee:Ze)(e);return Ue(b||e,(function(n,i){b&&(n=e[i=n]),ge(l,i,t(n,r,o,i,e,s))})),l};const Wr=function(t){return Ur(t,5)};function Gr(t,e,r,o){e&&function(t,e,r){if(e.attributes)for(const[o]of Object.entries(e.attributes))t.removeAttribute(o,r);if(e.styles)for(const o of Object.keys(e.styles))t.removeStyle(o,r);e.classes&&t.removeClass(e.classes,r)}(t,e,o),r&&Kr(t,r,o)}function Kr(t,e,r){if(e.attributes)for(const[o,n]of Object.entries(e.attributes))t.setAttribute(o,n,r);e.styles&&t.setStyle(e.styles,r),e.classes&&t.addClass(e.classes,r)}function Zr(t,e){const r=Wr(t);for(const o in e)Array.isArray(e[o])?r[o]=Array.from(new Set([...t[o]||[],...e[o]])):r[o]={...t[o],...e[o]};return r}function Qr({model:t}){return(e,r)=>r.writer.createElement(t,{htmlContent:e.getCustomProperty("$rawContent")})}function Jr(t,{view:e,isInline:r}){const o=t.t;return(t,{writer:n})=>{const i=o("HTML object"),s=Xr(e,t,n),l=t.getAttribute("htmlAttributes");n.addClass("html-object-embed__content",s),l&&Kr(n,l,s);const c=n.createContainerElement(r?"span":"div",{class:"html-object-embed","data-html-object-embed-label":i},s);return(0,qe.toWidget)(c,n,{widgetLabel:i})}}function Xr(t,e,r){return r.createRawElement(t,null,((t,r)=>{r.setContentOf(t,e.getAttribute("htmlContent"))}))}function Yr({priority:t,view:e}){return(r,o)=>{if(!r)return;const{writer:n}=o,i=n.createAttributeElement(e,null,{priority:t});return Kr(n,r,i),i}}function to({view:t},e){return r=>{r.on(`element:${t}`,((t,r,o)=>{if(!r.modelRange||r.modelRange.isCollapsed)return;const n=e.processViewAttributes(r.viewItem,o);n&&o.writer.setAttribute("htmlAttributes",n,r.modelRange)}),{priority:"low"})}}function eo({model:t}){return e=>{e.on(`attribute:htmlAttributes:${t}`,((t,e,r)=>{if(!r.consumable.consume(e.item,t.name))return;const{attributeOldValue:o,attributeNewValue:n}=e;Gr(r.writer,o,n,r.mapper.toViewElement(e.item))}))}}const ro=function(t,e){for(var r=-1,o=null==t?0:t.length,n=Array(o);++r<o;)n[r]=e(t[r],r,t);return n};const oo=function(t,e,r,o){for(var n=t.length,i=r+(o?1:-1);o?i--:++i<n;)if(e(t[i],i,t))return i;return-1};const no=function(t){return t!=t};const io=function(t,e,r){for(var o=r-1,n=t.length;++o<n;)if(t[o]===e)return o;return-1};const so=function(t,e,r){return e==e?io(t,e,r):oo(t,no,r)};const lo=function(t,e,r,o){for(var n=r-1,i=t.length;++n<i;)if(o(t[n],e))return n;return-1};var co=Array.prototype.splice;const ao=function(t,e,r,o){var n=o?lo:so,i=-1,s=e.length,l=t;for(t===e&&(e=It(e)),r&&(l=ro(t,ce(r)));++i<s;)for(var c=0,a=e[i],u=r?r(a):a;(c=n(l,u,c,o))>-1;)l!==t&&co.call(l,c,1),co.call(t,c,1);return t};const uo=Le((function(t,e){return t&&t.length&&e&&e.length?ao(t,e):t}));var mo=r(62),ho=r.n(mo),fo=r(142),bo={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ho()(fo.Z,bo);fo.Z.locals;class po extends t.Plugin{constructor(t){super(t),this._dataSchema=t.plugins.get("DataSchema"),this._allowedAttributes=new ze.Matcher,this._disallowedAttributes=new ze.Matcher,this._allowedElements=new Set,this._dataInitialized=!1,this._coupledAttributes=null,this._registerElementsAfterInit(),this._registerElementHandlers(),this._registerModelPostFixer()}static get pluginName(){return"DataFilter"}static get requires(){return[He,qe.Widget]}loadAllowedConfig(t){this._loadConfig(t,(t=>this.allowAttributes(t)))}loadDisallowedConfig(t){this._loadConfig(t,(t=>this.disallowAttributes(t)))}allowElement(t){for(const e of this._dataSchema.getDefinitionsForView(t,!0))this._allowedElements.has(e)||(this._allowedElements.add(e),this._dataInitialized&&this._fireRegisterEvent(e),this._coupledAttributes=null)}allowAttributes(t){this._allowedAttributes.add(t)}disallowAttributes(t){this._disallowedAttributes.add(t)}_loadConfig(t,e){for(const r of t){const t=r.name||/[\s\S]+/;this.allowElement(t),Ao(r).forEach(e)}}processViewAttributes(t,e){return go(t,e,this._disallowedAttributes),go(t,e,this._allowedAttributes)}_registerElementsAfterInit(){this.editor.data.on("init",(()=>{this._dataInitialized=!0;for(const t of this._allowedElements)this._fireRegisterEvent(t)}),{priority:e.priorities.get("highest")+1})}_registerElementHandlers(){this.on("register",((t,r)=>{const o=this.editor.model.schema;if(r.isObject&&!o.isRegistered(r.model))this._registerObjectElement(r);else if(r.isBlock)this._registerBlockElement(r);else{if(!r.isInline)throw new e.CKEditorError("data-filter-invalid-definition",null,r);this._registerInlineElement(r)}t.stop()}),{priority:"lowest"})}_registerModelPostFixer(){const t=this.editor.model;t.document.registerPostFixer((e=>{const r=t.document.differ.getChanges();let o=!1;const n=this._getCoupledAttributesMap();for(const t of r){if("attribute"!=t.type||null!==t.attributeNewValue)continue;const r=n.get(t.attributeKey);if(r)for(const{item:n}of t.range.getWalker({shallow:!0}))for(const t of r)n.hasAttribute(t)&&(e.removeAttribute(t,n),o=!0)}return o}))}_getCoupledAttributesMap(){if(this._coupledAttributes)return this._coupledAttributes;this._coupledAttributes=new Map;for(const t of this._allowedElements)if(t.coupledAttribute&&t.model){const e=this._coupledAttributes.get(t.coupledAttribute);e?e.push(t.model):this._coupledAttributes.set(t.coupledAttribute,[t.model])}}_fireRegisterEvent(t){this.fire(t.view?`register:${t.view}`:"register",t)}_registerObjectElement(t){const r=this.editor,o=r.model.schema,n=r.conversion,{view:i,model:s}=t;o.register(s,t.modelSchema),i&&(o.extend(t.model,{allowAttributes:["htmlAttributes","htmlContent"]}),r.data.registerRawContentMatcher({name:i}),n.for("upcast").elementToElement({view:i,model:Qr(t),converterPriority:e.priorities.get("low")+1}),n.for("upcast").add(to(t,this)),n.for("editingDowncast").elementToStructure({model:{name:s,attributes:["htmlAttributes"]},view:Jr(r,t)}),n.for("dataDowncast").elementToElement({model:s,view:(t,{writer:e})=>Xr(i,t,e)}),n.for("dataDowncast").add(eo(t)))}_registerBlockElement(t){const r=this.editor,o=r.model.schema,n=r.conversion,{view:i,model:s}=t;if(!o.isRegistered(t.model)){if(o.register(t.model,t.modelSchema),!i)return;n.for("upcast").elementToElement({model:s,view:i,converterPriority:e.priorities.get("low")+1}),n.for("downcast").elementToElement({model:s,view:i})}i&&(o.extend(t.model,{allowAttributes:"htmlAttributes"}),n.for("upcast").add(to(t,this)),n.for("downcast").add(eo(t)))}_registerInlineElement(t){const e=this.editor,r=e.model.schema,o=e.conversion,n=t.model;r.extend("$text",{allowAttributes:n}),t.attributeProperties&&r.setAttributeProperties(n,t.attributeProperties),o.for("upcast").add(function({view:t,model:e},r){return o=>{o.on(`element:${t}`,((t,o,n)=>{let i=r.processViewAttributes(o.viewItem,n);if(i||n.consumable.test(o.viewItem,{name:!0})){i=i||{},n.consumable.consume(o.viewItem,{name:!0}),o.modelRange||(o=Object.assign(o,n.convertChildren(o.viewItem,o.modelCursor)));for(const t of o.modelRange.getItems())if(n.schema.checkAttribute(t,e)){const r=Zr(i,t.getAttribute(e)||{});n.writer.setAttribute(e,r,t)}}}),{priority:"low"})}}(t,this)),o.for("downcast").attributeToElement({model:n,view:Yr(t)})}}function go(t,e,r){const o=function(t,{consumable:e},r){const o=r.matchAll(t)||[],n=[];for(const r of o)vo(e,t,r),delete r.match.name,e.consume(t,r.match),n.push(r);return n}(t,e,r),{attributes:n,styles:i,classes:s}=function(t){const e={attributes:new Set,classes:new Set,styles:new Set};for(const r of t)for(const t in e){(r.match[t]||[]).forEach((r=>e[t].add(r)))}return e}(o),l={};if(n.size)for(const t of n)jo(t)||n.delete(t);return n.size&&(l.attributes=wo(n,(e=>t.getAttribute(e)))),i.size&&(l.styles=wo(i,(e=>t.getStyle(e)))),s.size&&(l.classes=Array.from(s)),Object.keys(l).length?l:null}function vo(t,e,r){for(const o of["attributes","classes","styles"]){const n=r.match[o];if(n)for(const r of Array.from(n))t.test(e,{[o]:[r]})||uo(n,r)}}function wo(t,e){const r={};for(const o of t){void 0!==e(o)&&(r[o]=e(o))}return r}function yo(t,e){const{name:r}=t;return ie(t[e])?Object.entries(t[e]).map((([t,o])=>({name:r,[e]:{[t]:o}}))):Array.isArray(t[e])?t[e].map((t=>({name:r,[e]:[t]}))):[t]}function Ao(t){const{name:e,attributes:r,classes:o,styles:n}=t,i=[];return r&&i.push(...yo({name:e,attributes:r},"attributes")),o&&i.push(...yo({name:e,classes:o},"classes")),n&&i.push(...yo({name:e,styles:n},"styles")),i}function jo(t){try{document.createAttribute(t)}catch(t){return!1}return!0}class _o extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"CodeBlockElementSupport"}init(){if(!this.editor.plugins.has("CodeBlockEditing"))return;const t=this.editor.plugins.get(po);t.on("register:pre",((e,r)=>{if("codeBlock"!==r.model)return;const o=this.editor,n=o.model.schema,i=o.conversion;n.extend("codeBlock",{allowAttributes:["htmlAttributes","htmlContentAttributes"]}),i.for("upcast").add(function(t){return e=>{e.on("element:code",((e,r,o)=>{const n=r.viewItem,i=n.parent;function s(e,n){const i=t.processViewAttributes(e,o);i&&o.writer.setAttribute(n,i,r.modelRange)}i&&i.is("element","pre")&&(s(i,"htmlAttributes"),s(n,"htmlContentAttributes"))}),{priority:"low"})}}(t)),i.for("downcast").add((t=>{t.on("attribute:htmlAttributes:codeBlock",((t,e,r)=>{if(!r.consumable.consume(e.item,t.name))return;const{attributeOldValue:o,attributeNewValue:n}=e,i=r.mapper.toViewElement(e.item).parent;Gr(r.writer,o,n,i)})),t.on("attribute:htmlContentAttributes:codeBlock",((t,e,r)=>{if(!r.consumable.consume(e.item,t.name))return;const{attributeOldValue:o,attributeNewValue:n}=e,i=r.mapper.toViewElement(e.item);Gr(r.writer,o,n,i)}))})),e.stop()}))}}class Oo extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"DualContentModelElementSupport"}init(){this.editor.plugins.get(po).on("register",((t,r)=>{const o=this.editor,n=o.model.schema,i=o.conversion;if(!r.paragraphLikeModel)return;if(n.isRegistered(r.model)||n.isRegistered(r.paragraphLikeModel))return;const s={model:r.paragraphLikeModel,view:r.view};n.register(r.model,r.modelSchema),n.register(s.model,{inheritAllFrom:"$block"}),i.for("upcast").elementToElement({view:r.view,model:(t,{writer:e})=>this._hasBlockContent(t)?e.createElement(r.model):e.createElement(s.model),converterPriority:e.priorities.get("low")+1}),i.for("downcast").elementToElement({view:r.view,model:r.model}),this._addAttributeConversion(r),i.for("downcast").elementToElement({view:s.view,model:s.model}),this._addAttributeConversion(s),t.stop()}))}_hasBlockContent(t){const e=this.editor.editing.view,r=e.domConverter.blockElements;for(const o of e.createRangeIn(t).getItems())if(o.is("element")&&r.includes(o.name))return!0;return!1}_addAttributeConversion(t){const e=this.editor,r=e.conversion,o=e.plugins.get(po);e.model.schema.extend(t.model,{allowAttributes:"htmlAttributes"}),r.for("upcast").add(to(t,o)),r.for("downcast").add(eo(t))}}class So extends t.Plugin{static get requires(){return[He]}static get pluginName(){return"HeadingElementSupport"}init(){const t=this.editor;if(!t.plugins.has("HeadingEditing"))return;const e=t.plugins.get(He),r=t.config.get("heading.options"),o=[];for(const t of r)"model"in t&&"view"in t&&(e.registerBlockElement({view:t.view,model:t.model}),o.push(t.model));e.extendBlockElement({model:"htmlHgroup",modelSchema:{allowChildren:o}})}}class ko extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"ImageElementSupport"}init(){const t=this.editor;if(!t.plugins.has("ImageInlineEditing")&&!t.plugins.has("ImageBlockEditing"))return;const e=t.model.schema,r=t.conversion,o=t.plugins.get(po);o.on("register:figure",(()=>{r.for("upcast").add(function(t){return e=>{e.on("element:figure",((e,r,o)=>{const n=r.viewItem;if(!r.modelRange||!n.hasClass("image"))return;const i=t.processViewAttributes(n,o);i&&o.writer.setAttribute("htmlFigureAttributes",i,r.modelRange)}),{priority:"low"})}}(o))})),o.on("register:img",((t,n)=>{"imageBlock"!==n.model&&"imageInline"!==n.model||(e.isRegistered("imageBlock")&&e.extend("imageBlock",{allowAttributes:["htmlAttributes","htmlFigureAttributes","htmlLinkAttributes"]}),e.isRegistered("imageInline")&&e.extend("imageInline",{allowAttributes:["htmlA","htmlAttributes"]}),r.for("upcast").add(function(t){return e=>{e.on("element:img",((e,r,o)=>{if(!r.modelRange)return;const n=r.viewItem,i=n.parent;function s(e,n){const i=t.processViewAttributes(e,o);i&&o.writer.setAttribute(n,i,r.modelRange)}function l(t){r.modelRange&&r.modelRange.getContainedElement().is("element","imageBlock")&&s(t,"htmlLinkAttributes")}s(n,"htmlAttributes"),i.is("element","a")&&l(i)}),{priority:"low"})}}(o)),r.for("downcast").add((t=>{function e(e){t.on(`attribute:${e}:imageInline`,((t,e,r)=>{if(!r.consumable.consume(e.item,t.name))return;const{attributeOldValue:o,attributeNewValue:n}=e,i=r.mapper.toViewElement(e.item);Gr(r.writer,o,n,i)}),{priority:"low"})}function r(e,r){t.on(`attribute:${r}:imageBlock`,((t,r,o)=>{if(!o.consumable.test(r.item,t.name))return;const{attributeOldValue:n,attributeNewValue:i}=r,s=o.mapper.toViewElement(r.item),l=Eo(o.writer,s,e);l&&(Gr(o.writer,n,i,l),o.consumable.consume(r.item,t.name))}),{priority:"low"}),"a"===e&&t.on("attribute:linkHref:imageBlock",((t,e,r)=>{if(!r.consumable.consume(e.item,"attribute:htmlLinkAttributes:imageBlock"))return;const o=r.mapper.toViewElement(e.item),n=Eo(r.writer,o,"a");Kr(r.writer,e.item.getAttribute("htmlLinkAttributes"),n)}),{priority:"low"})}e("htmlAttributes"),r("img","htmlAttributes"),r("figure","htmlFigureAttributes"),r("a","htmlLinkAttributes")})),t.stop())}))}}function Eo(t,e,r){const o=t.createRangeOn(e);for(const{item:t}of o.getWalker())if(t.is("element",r))return t}class Co extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"MediaEmbedElementSupport"}init(){const t=this.editor;if(!t.plugins.has("MediaEmbed")||t.config.get("mediaEmbed.previewsInData"))return;const e=t.model.schema,r=t.conversion,o=this.editor.plugins.get(po),n=this.editor.plugins.get(He),i=t.config.get("mediaEmbed.elementName");n.registerBlockElement({model:"media",view:i}),o.on("register:figure",(()=>{r.for("upcast").add(function(t){return e=>{e.on("element:figure",((e,r,o)=>{const n=r.viewItem;if(!r.modelRange||!n.hasClass("media"))return;const i=t.processViewAttributes(n,o);i&&o.writer.setAttribute("htmlFigureAttributes",i,r.modelRange)}),{priority:"low"})}}(o))})),o.on(`register:${i}`,((t,n)=>{"media"===n.model&&(e.extend("media",{allowAttributes:["htmlAttributes","htmlFigureAttributes"]}),r.for("upcast").add(function(t,e){return t=>{t.on(`element:${e}`,r)};function r(e,r,o){function n(e,n){const i=t.processViewAttributes(e,o);i&&o.writer.setAttribute(n,i,r.modelRange)}n(r.viewItem,"htmlAttributes")}}(o,i)),r.for("dataDowncast").add(function(t){return e=>{function r(t,r){e.on(`attribute:${r}:media`,((e,r,o)=>{if(!o.consumable.consume(r.item,e.name))return;const{attributeOldValue:n,attributeNewValue:i}=r,s=o.mapper.toViewElement(r.item),l=function(t,e,r){const o=t.createRangeOn(e);for(const{item:t}of o.getWalker())if(t.is("element",r))return t}(o.writer,s,t);Gr(o.writer,n,i,l)}))}r(t,"htmlAttributes"),r("figure","htmlFigureAttributes")}}(i)),t.stop())}))}}class $o extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"ScriptElementSupport"}init(){const t=this.editor.plugins.get(po);t.on("register:script",((e,r)=>{const o=this.editor,n=o.model.schema,i=o.conversion;n.register("htmlScript",r.modelSchema),n.extend("htmlScript",{allowAttributes:["htmlAttributes","htmlContent"],isContent:!0}),o.data.registerRawContentMatcher({name:"script"}),i.for("upcast").elementToElement({view:"script",model:Qr(r)}),i.for("upcast").add(to(r,t)),i.for("downcast").elementToElement({model:"htmlScript",view:(t,{writer:e})=>Xr("script",t,e)}),i.for("downcast").add(eo(r)),e.stop()}))}}class xo extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"TableElementSupport"}init(){const t=this.editor;if(!t.plugins.has("TableEditing"))return;const e=t.model.schema,r=t.conversion,o=t.plugins.get(po);o.on("register:figure",(()=>{r.for("upcast").add(function(t){return e=>{e.on("element:figure",((e,r,o)=>{const n=r.viewItem;if(!r.modelRange||!n.hasClass("table"))return;const i=t.processViewAttributes(n,o);i&&o.writer.setAttribute("htmlFigureAttributes",i,r.modelRange)}),{priority:"low"})}}(o))})),o.on("register:table",((t,n)=>{"table"===n.model&&(e.extend("table",{allowAttributes:["htmlAttributes","htmlFigureAttributes","htmlTheadAttributes","htmlTbodyAttributes"]}),r.for("upcast").add(function(t){return e=>{e.on("element:table",((e,r,o)=>{const n=r.viewItem;i(n,"htmlAttributes");for(const t of n.getChildren())t.is("element","thead")&&i(t,"htmlTheadAttributes"),t.is("element","tbody")&&i(t,"htmlTbodyAttributes");function i(e,n){const i=t.processViewAttributes(e,o);i&&o.writer.setAttribute(n,i,r.modelRange)}}))}}(o)),r.for("downcast").add((t=>{function e(e,r){t.on(`attribute:${r}:table`,((t,r,o)=>{if(!o.consumable.consume(r.item,t.name))return;const n=o.mapper.toViewElement(r.item),i=function(t,e,r){const o=t.createRangeOn(e);for(const{item:t}of o.getWalker())if(t.is("element",r))return t}(o.writer,n,e);Kr(o.writer,r.attributeNewValue,i)}))}e("table","htmlAttributes"),e("figure","htmlFigureAttributes"),e("thead","htmlTheadAttributes"),e("tbody","htmlTbodyAttributes")})),t.stop())}))}}class Io extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"StyleElementSupport"}init(){const t=this.editor.plugins.get(po);t.on("register:style",((e,r)=>{const o=this.editor,n=o.model.schema,i=o.conversion;n.register("htmlStyle",r.modelSchema),n.extend("htmlStyle",{allowAttributes:["htmlAttributes","htmlContent"],isContent:!0}),o.data.registerRawContentMatcher({name:"style"}),i.for("upcast").elementToElement({view:"style",model:Qr(r)}),i.for("upcast").add(to(r,t)),i.for("downcast").elementToElement({model:"htmlStyle",view:(t,{writer:e})=>Xr("style",t,e)}),i.for("downcast").add(eo(r)),e.stop()}))}}const Fo=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this};const Po=function(t){return this.__data__.has(t)};function To(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new bt;++e<r;)this.add(t[e])}To.prototype.add=To.prototype.push=Fo,To.prototype.has=Po;const Bo=To;const Ro=function(t,e){for(var r=-1,o=null==t?0:t.length;++r<o;)if(e(t[r],r,t))return!0;return!1};const Mo=function(t,e){return t.has(e)};const Do=function(t,e,r,o,n,i){var s=1&r,l=t.length,c=e.length;if(l!=c&&!(s&&c>l))return!1;var a=i.get(t),u=i.get(e);if(a&&u)return a==e&&u==t;var m=-1,d=!0,h=2&r?new Bo:void 0;for(i.set(t,e),i.set(e,t);++m<l;){var f=t[m],b=e[m];if(o)var p=s?o(b,f,m,e,t,i):o(f,b,m,t,e,i);if(void 0!==p){if(p)continue;d=!1;break}if(h){if(!Ro(e,(function(t,e){if(!Mo(h,e)&&(f===t||n(f,t,r,o,i)))return h.push(e)}))){d=!1;break}}else if(f!==b&&!n(f,b,r,o,i)){d=!1;break}}return i.delete(t),i.delete(e),d};const Lo=function(t){var e=-1,r=Array(t.size);return t.forEach((function(t,o){r[++e]=[o,t]})),r};const No=function(t){var e=-1,r=Array(t.size);return t.forEach((function(t){r[++e]=t})),r};var Vo=_?_.prototype:void 0,Ho=Vo?Vo.valueOf:void 0;const zo=function(t,e,r,o,n,i,s){switch(r){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!i(new Ct(t),new Ct(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return l(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var c=Lo;case"[object Set]":var a=1&o;if(c||(c=No),t.size!=e.size&&!a)return!1;var u=s.get(t);if(u)return u==e;o|=2,s.set(t,e);var m=Do(c(t),c(e),o,n,i,s);return s.delete(t),m;case"[object Symbol]":if(Ho)return Ho.call(t)==Ho.call(e)}return!1};var qo=Object.prototype.hasOwnProperty;const Uo=function(t,e,r,o,n,i){var s=1&r,l=cr(t),c=l.length;if(c!=cr(e).length&&!s)return!1;for(var a=c;a--;){var u=l[a];if(!(s?u in e:qo.call(e,u)))return!1}var m=i.get(t),d=i.get(e);if(m&&d)return m==e&&d==t;var h=!0;i.set(t,e),i.set(e,t);for(var f=s;++a<c;){var b=t[u=l[a]],p=e[u];if(o)var g=s?o(p,b,u,e,t,i):o(b,p,u,t,e,i);if(!(void 0===g?b===p||n(b,p,r,o,i):g)){h=!1;break}f||(f="constructor"==u)}if(h&&!f){var v=t.constructor,w=e.constructor;v==w||!("constructor"in t)||!("constructor"in e)||"function"==typeof v&&v instanceof v&&"function"==typeof w&&w instanceof w||(h=!1)}return i.delete(t),i.delete(e),h};var Wo="[object Arguments]",Go="[object Array]",Ko="[object Object]",Zo=Object.prototype.hasOwnProperty;const Qo=function(t,e,r,o,n,i){var s=Ut(t),l=Ut(e),c=s?Go:Sr(t),a=l?Go:Sr(e),u=(c=c==Wo?Ko:c)==Ko,m=(a=a==Wo?Ko:a)==Ko,d=c==a;if(d&&Yt(t)){if(!Yt(e))return!1;s=!0,u=!1}if(d&&!u)return i||(i=new vt),s||fe(t)?Do(t,e,r,o,n,i):zo(t,e,c,r,o,n,i);if(!(1&r)){var h=u&&Zo.call(t,"__wrapped__"),f=m&&Zo.call(e,"__wrapped__");if(h||f){var b=h?t.value():t,p=f?e.value():e;return i||(i=new vt),n(b,p,r,o,i)}}return!!d&&(i||(i=new vt),Uo(t,e,r,o,n,i))};const Jo=function t(e,r,o,n,i){return e===r||(null==e||null==r||!Lt(e)&&!Lt(r)?e!=e&&r!=r:Qo(e,r,o,n,t,i))};const Xo=function(t,e){return Jo(t,e)};class Yo extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"DocumentListElementSupport"}init(){const t=this.editor;if(!t.plugins.has("DocumentListEditing"))return;const e=t.model.schema,r=t.conversion,o=t.plugins.get(po),n=t.plugins.get("DocumentListEditing");n.registerDowncastStrategy({scope:"item",attributeName:"htmlLiAttributes",setAttributeOnDowncast(t,e,r){Kr(t,e,r)}}),n.registerDowncastStrategy({scope:"list",attributeName:"htmlListAttributes",setAttributeOnDowncast(t,e,r){Kr(t,e,r)}}),o.on("register",((t,n)=>{["ul","ol","li"].includes(n.view)&&(t.stop(),e.checkAttribute("$block","htmlListAttributes")||(e.extend("$block",{allowAttributes:["htmlListAttributes","htmlLiAttributes"]}),e.extend("$blockObject",{allowAttributes:["htmlListAttributes","htmlLiAttributes"]}),e.extend("$container",{allowAttributes:["htmlListAttributes","htmlLiAttributes"]}),r.for("upcast").add((t=>{t.on("element:ul",tn("htmlListAttributes",o),{priority:"low"}),t.on("element:ol",tn("htmlListAttributes",o),{priority:"low"}),t.on("element:li",tn("htmlLiAttributes",o),{priority:"low"})}))))})),n.on("postFixer",((t,{listNodes:e,writer:r})=>{const o=[];for(const{node:n,previous:i}of e){if(!i)continue;const e=n.getAttribute("listIndent"),s=i.getAttribute("listIndent");let l=null;if(e>s?o[s]=i:e<s?(l=o[e],o.length=e):l=i,l){if(l.getAttribute("listType")==n.getAttribute("listType")){const e=l.getAttribute("htmlListAttributes");Xo(n.getAttribute("htmlListAttributes"),e)||(r.setAttribute("htmlListAttributes",e,n),t.return=!0)}if(l.getAttribute("listItemId")==n.getAttribute("listItemId")){const e=l.getAttribute("htmlLiAttributes");Xo(n.getAttribute("htmlLiAttributes"),e)||(r.setAttribute("htmlLiAttributes",e,n),t.return=!0)}}}}))}afterInit(){const t=this.editor;t.commands.get("indentList")&&this.listenTo(t.commands.get("indentList"),"afterExecute",((e,r)=>{t.model.change((t=>{for(const e of r)t.setAttribute("htmlListAttributes",{},e)}))}))}}function tn(t,e){return(r,o,n)=>{const i=o.viewItem;o.modelRange||Object.assign(o,n.convertChildren(o.viewItem,o.modelCursor));const s=e.processViewAttributes(i,n);for(const e of o.modelRange.getItems({shallow:!0}))e.hasAttribute("listItemId")&&(e.hasAttribute(t)||n.writer.setAttribute(t,s||{},e))}}class en extends t.Plugin{static get requires(){return[po,He]}static get pluginName(){return"CustomElementSupport"}init(){const t=this.editor.plugins.get(po),e=this.editor.plugins.get(He);t.on("register:$customElement",((r,o)=>{r.stop();const n=this.editor,i=n.model.schema,s=n.conversion,l=n.editing.view.domConverter.unsafeElements,c=n.data.htmlProcessor.domConverter.preElements;i.register(o.model,o.modelSchema),i.extend(o.model,{allowAttributes:["htmlElementName","htmlAttributes","htmlContent"],isContent:!0}),s.for("upcast").elementToElement({view:/.*/,model:(r,i)=>{if("$comment"==r.name)return;if(!function(t){try{document.createElement(t)}catch(t){return!1}return!0}(r.name))return;if(e.getDefinitionsForView(r.name).size)return;l.includes(r.name)||l.push(r.name),c.includes(r.name)||c.push(r.name);const s=i.writer.createElement(o.model,{htmlElementName:r.name}),a=t.processViewAttributes(r,i);a&&i.writer.setAttribute("htmlAttributes",a,s);const u=new ze.UpcastWriter(r.document).createDocumentFragment(r),m=n.data.processor.toData(u);i.writer.setAttribute("htmlContent",m,s);for(const{item:t}of n.editing.view.createRangeIn(r))i.consumable.consume(t,{name:!0});return s},converterPriority:"low"}),s.for("editingDowncast").elementToElement({model:{name:o.model,attributes:["htmlElementName","htmlAttributes","htmlContent"]},view:(t,{writer:e})=>{const r=t.getAttribute("htmlElementName"),o=e.createRawElement(r);return t.hasAttribute("htmlAttributes")&&Kr(e,t.getAttribute("htmlAttributes"),o),o}}),s.for("dataDowncast").elementToElement({model:{name:o.model,attributes:["htmlElementName","htmlAttributes","htmlContent"]},view:(t,{writer:e})=>{const r=t.getAttribute("htmlElementName"),o=t.getAttribute("htmlContent"),n=e.createRawElement(r,null,((t,e)=>{e.setContentOf(t,o);const r=t.firstChild;for(r.remove();r.firstChild;)t.appendChild(r.firstChild)}));return t.hasAttribute("htmlAttributes")&&Kr(e,t.getAttribute("htmlAttributes"),n),n}})}))}}class rn extends t.Plugin{static get pluginName(){return"GeneralHtmlSupport"}static get requires(){return[po,_o,Oo,So,ko,Co,$o,xo,Io,Yo,en]}init(){const t=this.editor,e=t.plugins.get(po);e.loadAllowedConfig(t.config.get("htmlSupport.allow")||[]),e.loadDisallowedConfig(t.config.get("htmlSupport.disallow")||[])}getGhsAttributeNameForElement(t){const e=this.editor.plugins.get("DataSchema"),r=Array.from(e.getDefinitionsForView(t,!1));return r&&r.length&&r[0].isInline&&!r[0].isObject?r[0].model:"htmlAttributes"}addModelHtmlClass(t,r,o){const n=this.editor.model,i=this.getGhsAttributeNameForElement(t);n.change((t=>{for(const s of on(n,o,i))nn(t,s,i,"classes",(t=>{for(const o of(0,e.toArray)(r))t.add(o)}))}))}removeModelHtmlClass(t,r,o){const n=this.editor.model,i=this.getGhsAttributeNameForElement(t);n.change((t=>{for(const s of on(n,o,i))nn(t,s,i,"classes",(t=>{for(const o of(0,e.toArray)(r))t.delete(o)}))}))}setModelHtmlAttributes(t,e,r){const o=this.editor.model,n=this.getGhsAttributeNameForElement(t);o.change((t=>{for(const i of on(o,r,n))nn(t,i,n,"attributes",(t=>{for(const[r,o]of Object.entries(e))t.set(r,o)}))}))}removeModelHtmlAttributes(t,r,o){const n=this.editor.model,i=this.getGhsAttributeNameForElement(t);n.change((t=>{for(const s of on(n,o,i))nn(t,s,i,"attributes",(t=>{for(const o of(0,e.toArray)(r))t.delete(o)}))}))}setModelHtmlStyles(t,e,r){const o=this.editor.model,n=this.getGhsAttributeNameForElement(t);o.change((t=>{for(const i of on(o,r,n))nn(t,i,n,"styles",(t=>{for(const[r,o]of Object.entries(e))t.set(r,o)}))}))}removeModelHtmlStyles(t,r,o){const n=this.editor.model,i=this.getGhsAttributeNameForElement(t);n.change((t=>{for(const s of on(n,o,i))nn(t,s,i,"styles",(t=>{for(const o of(0,e.toArray)(r))t.delete(o)}))}))}}function*on(t,e,r){if(e.is("documentSelection")&&e.isCollapsed)t.schema.checkAttributeInSelection(e,r)&&(yield e);else for(const o of function(t,e,r){return e.is("node")||e.is("$text")||e.is("$textProxy")?t.schema.checkAttribute(e,r)?[t.createRangeOn(e)]:[]:t.schema.getValidRanges(t.createSelection(e).getRanges(),r)}(t,e,r))yield*o.getItems({shallow:!0})}function nn(t,e,r,o,n){const i=e.getAttribute(r),s={};for(const t of["attributes","styles","classes"])if(t!=o)i&&i[t]&&(s[t]=i[t]);else{const e="classes"==t?new Set(i&&i[t]||[]):new Map(Object.entries(i&&i[t]||{}));n(e),e.size&&(s[t]="classes"==t?Array.from(e):Object.fromEntries(e))}Object.keys(s).length?e.is("documentSelection")?t.setSelectionAttribute(r,s):t.setAttribute(r,s,e):i&&(e.is("documentSelection")?t.removeSelectionAttribute(r):t.removeAttribute(r,e))}class sn extends t.Plugin{static get pluginName(){return"HtmlComment"}init(){const t=this.editor;t.model.schema.addAttributeCheck(((t,e)=>{if(t.endsWith("$root")&&e.startsWith("$comment"))return!0})),t.conversion.for("upcast").elementToMarker({view:"$comment",model:(t,{writer:r})=>{const o=this.editor.model.document.getRoot(),n=t.getCustomProperty("$rawContent"),i=`$comment:${(0,e.uid)()}`;return r.setAttribute(i,n,o),i}}),t.conversion.for("dataDowncast").markerToElement({model:"$comment",view:(t,{writer:e})=>{const r=this.editor.model.document.getRoot(),o=t.markerName,n=r.getAttribute(o),i=e.createUIElement("$comment");return e.setCustomProperty("$rawContent",n,i),i}}),t.model.document.registerPostFixer((e=>{const r=t.model.document.getRoot(),o=t.model.document.differ.getChangedMarkers().filter((t=>t.name.startsWith("$comment"))).filter((t=>{const e=t.data.newRange;return e&&"$graveyard"===e.root.rootName}));if(0===o.length)return!1;for(const t of o)e.removeMarker(t.name),e.removeAttribute(t.name,r);return!0})),t.data.on("set",(()=>{for(const e of t.model.markers.getMarkersGroup("$comment"))this.removeHtmlComment(e.name)}),{priority:"high"}),t.model.on("deleteContent",((e,[r])=>{for(const e of r.getRanges()){const r=t.model.schema.getLimitElement(e),o=t.model.createPositionAt(r,0),n=t.model.createPositionAt(r,"end");let i;i=o.isTouching(e.start)&&n.isTouching(e.end)?this.getHtmlCommentsInRange(t.model.createRange(o,n)):this.getHtmlCommentsInRange(e,{skipBoundaries:!0});for(const t of i)this.removeHtmlComment(t)}}),{priority:"high"})}createHtmlComment(t,r){const o=(0,e.uid)(),n=this.editor.model,i=n.document.getRoot(),s=`$comment:${o}`;return n.change((e=>{const o=e.createRange(t);return e.addMarker(s,{usingOperation:!0,affectsData:!0,range:o}),e.setAttribute(s,r,i),s}))}removeHtmlComment(t){const e=this.editor,r=e.model.document.getRoot(),o=e.model.markers.get(t);return!!o&&(e.model.change((e=>{e.removeMarker(o),e.removeAttribute(t,r)})),!0)}getHtmlCommentData(t){const e=this.editor,r=e.model.markers.get(t),o=e.model.document.getRoot();return r?{content:o.getAttribute(t),position:r.getStart()}:null}getHtmlCommentsInRange(t,{skipBoundaries:e=!1}={}){const r=!e;return Array.from(this.editor.model.markers.getMarkersGroup("$comment")).filter((e=>function(t,e){const o=t.getRange().start;return(o.isAfter(e.start)||r&&o.isEqual(e.start))&&(o.isBefore(e.end)||r&&o.isEqual(e.end))}(e,t))).map((t=>t.name))}}})(),(window.CKEditor5=window.CKEditor5||{}).htmlSupport=o})(); \ No newline at end of file + */(()=>{var t={142:(t,e,r)=>{"use strict";r.d(e,{Z:()=>i});var o=r(609),n=r.n(o)()((function(t){return t[1]}));n.push([t.id,":root{--ck-html-object-embed-unfocused-outline-width:1px}.ck-widget.html-object-embed{background-color:var(--ck-color-base-foreground);font-size:var(--ck-font-size-base);min-width:calc(76px + var(--ck-spacing-standard));padding:var(--ck-spacing-small);padding-top:calc(var(--ck-font-size-tiny) + var(--ck-spacing-large))}.ck-widget.html-object-embed:not(.ck-widget_selected):not(:hover){outline:var(--ck-html-object-embed-unfocused-outline-width) dashed var(--ck-color-widget-blurred-border)}.ck-widget.html-object-embed:before{background:#999;border-radius:0 0 var(--ck-border-radius) var(--ck-border-radius);color:var(--ck-color-base-background);content:attr(data-html-object-embed-label);font-family:var(--ck-font-face);font-size:var(--ck-font-size-tiny);font-style:normal;font-weight:400;left:var(--ck-spacing-standard);padding:calc(var(--ck-spacing-tiny) + var(--ck-html-object-embed-unfocused-outline-width)) var(--ck-spacing-small) var(--ck-spacing-tiny);position:absolute;top:0;transition:background var(--ck-widget-handler-animation-duration) var(--ck-widget-handler-animation-curve)}.ck-widget.html-object-embed .ck-widget__type-around .ck-widget__type-around__button.ck-widget__type-around__button_before{margin-left:50px}.ck-widget.html-object-embed .html-object-embed__content{pointer-events:none}div.ck-widget.html-object-embed{margin:1em auto}span.ck-widget.html-object-embed{display:inline-block}",""]);const i=n},609:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var r=t(e);return e[2]?"@media ".concat(e[2]," {").concat(r,"}"):r})).join("")},e.i=function(t,r,o){"string"==typeof t&&(t=[[null,t,""]]);var n={};if(o)for(var i=0;i<this.length;i++){var l=this[i][0];null!=l&&(n[l]=!0)}for(var s=0;s<t.length;s++){var c=[].concat(t[s]);o&&n[c[0]]||(r&&(c[2]?c[2]="".concat(r," and ").concat(c[2]):c[2]=r),e.push(c))}},e}},62:(t,e,r)=>{"use strict";var o,n=function(){return void 0===o&&(o=Boolean(window&&document&&document.all&&!window.atob)),o},i=function(){var t={};return function(e){if(void 0===t[e]){var r=document.querySelector(e);if(window.HTMLIFrameElement&&r instanceof window.HTMLIFrameElement)try{r=r.contentDocument.head}catch(t){r=null}t[e]=r}return t[e]}}(),l=[];function s(t){for(var e=-1,r=0;r<l.length;r++)if(l[r].identifier===t){e=r;break}return e}function c(t,e){for(var r={},o=[],n=0;n<t.length;n++){var i=t[n],c=e.base?i[0]+e.base:i[0],a=r[c]||0,u="".concat(c," ").concat(a);r[c]=a+1;var m=s(u),d={css:i[1],media:i[2],sourceMap:i[3]};-1!==m?(l[m].references++,l[m].updater(d)):l.push({identifier:u,updater:p(d,e),references:1}),o.push(u)}return o}function a(t){var e=document.createElement("style"),o=t.attributes||{};if(void 0===o.nonce){var n=r.nc;n&&(o.nonce=n)}if(Object.keys(o).forEach((function(t){e.setAttribute(t,o[t])})),"function"==typeof t.insert)t.insert(e);else{var l=i(t.insert||"head");if(!l)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");l.appendChild(e)}return e}var u,m=(u=[],function(t,e){return u[t]=e,u.filter(Boolean).join("\n")});function d(t,e,r,o){var n=r?"":o.media?"@media ".concat(o.media," {").concat(o.css,"}"):o.css;if(t.styleSheet)t.styleSheet.cssText=m(e,n);else{var i=document.createTextNode(n),l=t.childNodes;l[e]&&t.removeChild(l[e]),l.length?t.insertBefore(i,l[e]):t.appendChild(i)}}function h(t,e,r){var o=r.css,n=r.media,i=r.sourceMap;if(n?t.setAttribute("media",n):t.removeAttribute("media"),i&&"undefined"!=typeof btoa&&(o+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),t.styleSheet)t.styleSheet.cssText=o;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(o))}}var f=null,b=0;function p(t,e){var r,o,n;if(e.singleton){var i=b++;r=f||(f=a(e)),o=d.bind(null,r,i,!1),n=d.bind(null,r,i,!0)}else r=a(e),o=h.bind(null,r,e),n=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(r)};return o(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;o(t=e)}else n()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=n());var r=c(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var o=0;o<r.length;o++){var n=s(r[o]);l[n].references--}for(var i=c(t,e),a=0;a<r.length;a++){var u=s(r[a]);0===l[u].references&&(l[u].updater(),l.splice(u,1))}r=i}}}},704:(t,e,r)=>{t.exports=r(79)("./src/core.js")},492:(t,e,r)=>{t.exports=r(79)("./src/engine.js")},209:(t,e,r)=>{t.exports=r(79)("./src/utils.js")},995:(t,e,r)=>{t.exports=r(79)("./src/widget.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function r(o){var n=e[o];if(void 0!==n)return n.exports;var i=e[o]={id:o,exports:{}};return t[o](i,i.exports,r),i.exports}r.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return r.d(e,{a:e}),e},r.d=(t,e)=>{for(var o in e)r.o(e,o)&&!r.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},r.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},r.nc=void 0;var o={};(()=>{"use strict";r.r(o),r.d(o,{DataFilter:()=>po,DataSchema:()=>He,GeneralHtmlSupport:()=>rn,HtmlComment:()=>ln});var t=r(704),e=r(209);const n=[{model:"codeBlock",view:"pre"},{model:"paragraph",view:"p"},{model:"blockQuote",view:"blockquote"},{model:"listItem",view:"li"},{model:"pageBreak",view:"div"},{model:"rawHtml",view:"div"},{model:"table",view:"table"},{model:"tableRow",view:"tr"},{model:"tableCell",view:"td"},{model:"tableCell",view:"th"},{model:"caption",view:"caption"},{model:"caption",view:"figcaption"},{model:"imageBlock",view:"img"},{model:"imageInline",view:"img"},{model:"htmlP",view:"p",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlBlockquote",view:"blockquote",modelSchema:{inheritAllFrom:"$container"}},{model:"htmlTable",view:"table",modelSchema:{allowWhere:"$block",isBlock:!0}},{model:"htmlTbody",view:"tbody",modelSchema:{allowIn:"htmlTable",isBlock:!0}},{model:"htmlThead",view:"thead",modelSchema:{allowIn:"htmlTable",isBlock:!0}},{model:"htmlTfoot",view:"tfoot",modelSchema:{allowIn:"htmlTable",isBlock:!0}},{model:"htmlCaption",view:"caption",modelSchema:{allowIn:"htmlTable",allowChildren:"$text",isBlock:!0}},{model:"htmlColgroup",view:"colgroup",modelSchema:{allowIn:"htmlTable",allowChildren:"col",isBlock:!0}},{model:"htmlCol",view:"col",modelSchema:{allowIn:"htmlColgroup",isBlock:!0}},{model:"htmlTr",view:"tr",modelSchema:{allowIn:["htmlTable","htmlThead","htmlTbody"]}},{model:"htmlTd",view:"td",modelSchema:{allowIn:"htmlTr",allowContentOf:"$container"}},{model:"htmlTh",view:"th",modelSchema:{allowIn:"htmlTr",allowContentOf:"$container"}},{model:"htmlFigure",view:"figure",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlFigcaption",view:"figcaption",modelSchema:{allowIn:"htmlFigure",allowChildren:"$text",isBlock:!0}},{model:"htmlAddress",view:"address",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlAside",view:"aside",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlMain",view:"main",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlDetails",view:"details",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlSummary",view:"summary",modelSchema:{allowChildren:"$text",allowIn:"htmlDetails",isBlock:!0}},{model:"htmlDiv",view:"div",paragraphLikeModel:"htmlDivParagraph",modelSchema:{inheritAllFrom:"$container"}},{model:"htmlFieldset",view:"fieldset",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlLegend",view:"legend",modelSchema:{allowIn:"htmlFieldset",allowChildren:"$text"}},{model:"htmlHeader",view:"header",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlFooter",view:"footer",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlForm",view:"form",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlHgroup",view:"hgroup",modelSchema:{allowChildren:["htmlH1","htmlH2","htmlH3","htmlH4","htmlH5","htmlH6"],isBlock:!0}},{model:"htmlH1",view:"h1",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH2",view:"h2",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH3",view:"h3",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH4",view:"h4",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH5",view:"h5",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlH6",view:"h6",modelSchema:{inheritAllFrom:"$block"}},{model:"$htmlList",modelSchema:{allowWhere:"$container",allowChildren:["$htmlList","htmlLi"],isBlock:!0}},{model:"htmlDir",view:"dir",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlMenu",view:"menu",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlUl",view:"ul",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlOl",view:"ol",modelSchema:{inheritAllFrom:"$htmlList"}},{model:"htmlLi",view:"li",modelSchema:{allowIn:"$htmlList",allowChildren:"$text",isBlock:!0}},{model:"htmlPre",view:"pre",modelSchema:{inheritAllFrom:"$block"}},{model:"htmlArticle",view:"article",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlSection",view:"section",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlNav",view:"nav",modelSchema:{inheritAllFrom:"$container",isBlock:!0}},{model:"htmlDl",view:"dl",modelSchema:{allowWhere:"$container",allowChildren:["htmlDt","htmlDd"],isBlock:!0}},{model:"htmlDt",view:"dt",modelSchema:{allowChildren:"$block",isBlock:!0}},{model:"htmlDd",view:"dd",modelSchema:{allowChildren:"$block",isBlock:!0}},{model:"htmlCenter",view:"center",modelSchema:{inheritAllFrom:"$container",isBlock:!0}}],i=[{model:"htmlAcronym",view:"acronym",attributeProperties:{copyOnEnter:!0}},{model:"htmlTt",view:"tt",attributeProperties:{copyOnEnter:!0}},{model:"htmlFont",view:"font",attributeProperties:{copyOnEnter:!0}},{model:"htmlTime",view:"time",attributeProperties:{copyOnEnter:!0}},{model:"htmlVar",view:"var",attributeProperties:{copyOnEnter:!0}},{model:"htmlBig",view:"big",attributeProperties:{copyOnEnter:!0}},{model:"htmlSmall",view:"small",attributeProperties:{copyOnEnter:!0}},{model:"htmlSamp",view:"samp",attributeProperties:{copyOnEnter:!0}},{model:"htmlQ",view:"q",attributeProperties:{copyOnEnter:!0}},{model:"htmlOutput",view:"output",attributeProperties:{copyOnEnter:!0}},{model:"htmlKbd",view:"kbd",attributeProperties:{copyOnEnter:!0}},{model:"htmlBdi",view:"bdi",attributeProperties:{copyOnEnter:!0}},{model:"htmlBdo",view:"bdo",attributeProperties:{copyOnEnter:!0}},{model:"htmlAbbr",view:"abbr",attributeProperties:{copyOnEnter:!0}},{model:"htmlA",view:"a",priority:5,coupledAttribute:"linkHref",attributeProperties:{copyOnEnter:!0}},{model:"htmlStrong",view:"strong",coupledAttribute:"bold",attributeProperties:{copyOnEnter:!0}},{model:"htmlB",view:"b",coupledAttribute:"bold",attributeProperties:{copyOnEnter:!0}},{model:"htmlI",view:"i",coupledAttribute:"italic",attributeProperties:{copyOnEnter:!0}},{model:"htmlEm",view:"em",coupledAttribute:"italic",attributeProperties:{copyOnEnter:!0}},{model:"htmlS",view:"s",coupledAttribute:"strikethrough",attributeProperties:{copyOnEnter:!0}},{model:"htmlDel",view:"del",coupledAttribute:"strikethrough",attributeProperties:{copyOnEnter:!0}},{model:"htmlIns",view:"ins",attributeProperties:{copyOnEnter:!0}},{model:"htmlU",view:"u",coupledAttribute:"underline",attributeProperties:{copyOnEnter:!0}},{model:"htmlSub",view:"sub",coupledAttribute:"subscript",attributeProperties:{copyOnEnter:!0}},{model:"htmlSup",view:"sup",coupledAttribute:"superscript",attributeProperties:{copyOnEnter:!0}},{model:"htmlCode",view:"code",coupledAttribute:"code",attributeProperties:{copyOnEnter:!0}},{model:"htmlMark",view:"mark",attributeProperties:{copyOnEnter:!0}},{model:"htmlSpan",view:"span",attributeProperties:{copyOnEnter:!0}},{model:"htmlCite",view:"cite",attributeProperties:{copyOnEnter:!0}},{model:"htmlLabel",view:"label",attributeProperties:{copyOnEnter:!0}},{model:"htmlDfn",view:"dfn",attributeProperties:{copyOnEnter:!0}},{model:"htmlObject",view:"object",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlIframe",view:"iframe",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlInput",view:"input",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlButton",view:"button",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlTextarea",view:"textarea",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlSelect",view:"select",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlVideo",view:"video",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlEmbed",view:"embed",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlOembed",view:"oembed",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlAudio",view:"audio",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlImg",view:"img",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlCanvas",view:"canvas",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlMeter",view:"meter",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlProgress",view:"progress",isObject:!0,modelSchema:{inheritAllFrom:"$inlineObject"}},{model:"htmlScript",view:"script",modelSchema:{allowWhere:["$text","$block"],isInline:!0}},{model:"htmlStyle",view:"style",modelSchema:{allowWhere:["$text","$block"],isInline:!0}},{model:"htmlCustomElement",view:"$customElement",modelSchema:{allowWhere:["$text","$block"],isInline:!0}}];const l=function(){this.__data__=[],this.size=0};const s=function(t,e){return t===e||t!=t&&e!=e};const c=function(t,e){for(var r=t.length;r--;)if(s(t[r][0],e))return r;return-1};var a=Array.prototype.splice;const u=function(t){var e=this.__data__,r=c(e,t);return!(r<0)&&(r==e.length-1?e.pop():a.call(e,r,1),--this.size,!0)};const m=function(t){var e=this.__data__,r=c(e,t);return r<0?void 0:e[r][1]};const d=function(t){return c(this.__data__,t)>-1};const h=function(t,e){var r=this.__data__,o=c(r,t);return o<0?(++this.size,r.push([t,e])):r[o][1]=e,this};function f(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}f.prototype.clear=l,f.prototype.delete=u,f.prototype.get=m,f.prototype.has=d,f.prototype.set=h;const b=f;const p=function(){this.__data__=new b,this.size=0};const g=function(t){var e=this.__data__,r=e.delete(t);return this.size=e.size,r};const v=function(t){return this.__data__.get(t)};const w=function(t){return this.__data__.has(t)};const y="object"==typeof global&&global&&global.Object===Object&&global;var A="object"==typeof self&&self&&self.Object===Object&&self;const j=y||A||Function("return this")();const _=j.Symbol;var S=Object.prototype,O=S.hasOwnProperty,k=S.toString,E=_?_.toStringTag:void 0;const C=function(t){var e=O.call(t,E),r=t[E];try{t[E]=void 0;var o=!0}catch(t){}var n=k.call(t);return o&&(e?t[E]=r:delete t[E]),n};var $=Object.prototype.toString;const x=function(t){return $.call(t)};var I=_?_.toStringTag:void 0;const F=function(t){return null==t?void 0===t?"[object Undefined]":"[object Null]":I&&I in Object(t)?C(t):x(t)};const P=function(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)};const B=function(t){if(!P(t))return!1;var e=F(t);return"[object Function]"==e||"[object GeneratorFunction]"==e||"[object AsyncFunction]"==e||"[object Proxy]"==e};const T=j["__core-js_shared__"];var R,M=(R=/[^.]+$/.exec(T&&T.keys&&T.keys.IE_PROTO||""))?"Symbol(src)_1."+R:"";const D=function(t){return!!M&&M in t};var L=Function.prototype.toString;const N=function(t){if(null!=t){try{return L.call(t)}catch(t){}try{return t+""}catch(t){}}return""};var V=/^\[object .+?Constructor\]$/,H=Function.prototype,z=Object.prototype,q=H.toString,U=z.hasOwnProperty,W=RegExp("^"+q.call(U).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");const G=function(t){return!(!P(t)||D(t))&&(B(t)?W:V).test(N(t))};const K=function(t,e){return null==t?void 0:t[e]};const Z=function(t,e){var r=K(t,e);return G(r)?r:void 0};const Q=Z(j,"Map");const J=Z(Object,"create");const X=function(){this.__data__=J?J(null):{},this.size=0};const Y=function(t){var e=this.has(t)&&delete this.__data__[t];return this.size-=e?1:0,e};var tt=Object.prototype.hasOwnProperty;const et=function(t){var e=this.__data__;if(J){var r=e[t];return"__lodash_hash_undefined__"===r?void 0:r}return tt.call(e,t)?e[t]:void 0};var rt=Object.prototype.hasOwnProperty;const ot=function(t){var e=this.__data__;return J?void 0!==e[t]:rt.call(e,t)};const nt=function(t,e){var r=this.__data__;return this.size+=this.has(t)?0:1,r[t]=J&&void 0===e?"__lodash_hash_undefined__":e,this};function it(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}it.prototype.clear=X,it.prototype.delete=Y,it.prototype.get=et,it.prototype.has=ot,it.prototype.set=nt;const lt=it;const st=function(){this.size=0,this.__data__={hash:new lt,map:new(Q||b),string:new lt}};const ct=function(t){var e=typeof t;return"string"==e||"number"==e||"symbol"==e||"boolean"==e?"__proto__"!==t:null===t};const at=function(t,e){var r=t.__data__;return ct(e)?r["string"==typeof e?"string":"hash"]:r.map};const ut=function(t){var e=at(this,t).delete(t);return this.size-=e?1:0,e};const mt=function(t){return at(this,t).get(t)};const dt=function(t){return at(this,t).has(t)};const ht=function(t,e){var r=at(this,t),o=r.size;return r.set(t,e),this.size+=r.size==o?0:1,this};function ft(t){var e=-1,r=null==t?0:t.length;for(this.clear();++e<r;){var o=t[e];this.set(o[0],o[1])}}ft.prototype.clear=st,ft.prototype.delete=ut,ft.prototype.get=mt,ft.prototype.has=dt,ft.prototype.set=ht;const bt=ft;const pt=function(t,e){var r=this.__data__;if(r instanceof b){var o=r.__data__;if(!Q||o.length<199)return o.push([t,e]),this.size=++r.size,this;r=this.__data__=new bt(o)}return r.set(t,e),this.size=r.size,this};function gt(t){var e=this.__data__=new b(t);this.size=e.size}gt.prototype.clear=p,gt.prototype.delete=g,gt.prototype.get=v,gt.prototype.has=w,gt.prototype.set=pt;const vt=gt;const wt=function(){try{var t=Z(Object,"defineProperty");return t({},"",{}),t}catch(t){}}();const yt=function(t,e,r){"__proto__"==e&&wt?wt(t,e,{configurable:!0,enumerable:!0,value:r,writable:!0}):t[e]=r};const At=function(t,e,r){(void 0!==r&&!s(t[e],r)||void 0===r&&!(e in t))&&yt(t,e,r)};const jt=function(t){return function(e,r,o){for(var n=-1,i=Object(e),l=o(e),s=l.length;s--;){var c=l[t?s:++n];if(!1===r(i[c],c,i))break}return e}}();var _t="object"==typeof exports&&exports&&!exports.nodeType&&exports,St=_t&&"object"==typeof module&&module&&!module.nodeType&&module,Ot=St&&St.exports===_t?j.Buffer:void 0,kt=Ot?Ot.allocUnsafe:void 0;const Et=function(t,e){if(e)return t.slice();var r=t.length,o=kt?kt(r):new t.constructor(r);return t.copy(o),o};const Ct=j.Uint8Array;const $t=function(t){var e=new t.constructor(t.byteLength);return new Ct(e).set(new Ct(t)),e};const xt=function(t,e){var r=e?$t(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.length)};const It=function(t,e){var r=-1,o=t.length;for(e||(e=Array(o));++r<o;)e[r]=t[r];return e};var Ft=Object.create;const Pt=function(){function t(){}return function(e){if(!P(e))return{};if(Ft)return Ft(e);t.prototype=e;var r=new t;return t.prototype=void 0,r}}();const Bt=function(t,e){return function(r){return t(e(r))}};const Tt=Bt(Object.getPrototypeOf,Object);var Rt=Object.prototype;const Mt=function(t){var e=t&&t.constructor;return t===("function"==typeof e&&e.prototype||Rt)};const Dt=function(t){return"function"!=typeof t.constructor||Mt(t)?{}:Pt(Tt(t))};const Lt=function(t){return null!=t&&"object"==typeof t};const Nt=function(t){return Lt(t)&&"[object Arguments]"==F(t)};var Vt=Object.prototype,Ht=Vt.hasOwnProperty,zt=Vt.propertyIsEnumerable;const qt=Nt(function(){return arguments}())?Nt:function(t){return Lt(t)&&Ht.call(t,"callee")&&!zt.call(t,"callee")};const Ut=Array.isArray;const Wt=function(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=9007199254740991};const Gt=function(t){return null!=t&&Wt(t.length)&&!B(t)};const Kt=function(t){return Lt(t)&&Gt(t)};const Zt=function(){return!1};var Qt="object"==typeof exports&&exports&&!exports.nodeType&&exports,Jt=Qt&&"object"==typeof module&&module&&!module.nodeType&&module,Xt=Jt&&Jt.exports===Qt?j.Buffer:void 0;const Yt=(Xt?Xt.isBuffer:void 0)||Zt;var te=Function.prototype,ee=Object.prototype,re=te.toString,oe=ee.hasOwnProperty,ne=re.call(Object);const ie=function(t){if(!Lt(t)||"[object Object]"!=F(t))return!1;var e=Tt(t);if(null===e)return!0;var r=oe.call(e,"constructor")&&e.constructor;return"function"==typeof r&&r instanceof r&&re.call(r)==ne};var le={};le["[object Float32Array]"]=le["[object Float64Array]"]=le["[object Int8Array]"]=le["[object Int16Array]"]=le["[object Int32Array]"]=le["[object Uint8Array]"]=le["[object Uint8ClampedArray]"]=le["[object Uint16Array]"]=le["[object Uint32Array]"]=!0,le["[object Arguments]"]=le["[object Array]"]=le["[object ArrayBuffer]"]=le["[object Boolean]"]=le["[object DataView]"]=le["[object Date]"]=le["[object Error]"]=le["[object Function]"]=le["[object Map]"]=le["[object Number]"]=le["[object Object]"]=le["[object RegExp]"]=le["[object Set]"]=le["[object String]"]=le["[object WeakMap]"]=!1;const se=function(t){return Lt(t)&&Wt(t.length)&&!!le[F(t)]};const ce=function(t){return function(e){return t(e)}};var ae="object"==typeof exports&&exports&&!exports.nodeType&&exports,ue=ae&&"object"==typeof module&&module&&!module.nodeType&&module,me=ue&&ue.exports===ae&&y.process;const de=function(){try{var t=ue&&ue.require&&ue.require("util").types;return t||me&&me.binding&&me.binding("util")}catch(t){}}();var he=de&&de.isTypedArray;const fe=he?ce(he):se;const be=function(t,e){if(("constructor"!==e||"function"!=typeof t[e])&&"__proto__"!=e)return t[e]};var pe=Object.prototype.hasOwnProperty;const ge=function(t,e,r){var o=t[e];pe.call(t,e)&&s(o,r)&&(void 0!==r||e in t)||yt(t,e,r)};const ve=function(t,e,r,o){var n=!r;r||(r={});for(var i=-1,l=e.length;++i<l;){var s=e[i],c=o?o(r[s],t[s],s,r,t):void 0;void 0===c&&(c=t[s]),n?yt(r,s,c):ge(r,s,c)}return r};const we=function(t,e){for(var r=-1,o=Array(t);++r<t;)o[r]=e(r);return o};var ye=/^(?:0|[1-9]\d*)$/;const Ae=function(t,e){var r=typeof t;return!!(e=null==e?9007199254740991:e)&&("number"==r||"symbol"!=r&&ye.test(t))&&t>-1&&t%1==0&&t<e};var je=Object.prototype.hasOwnProperty;const _e=function(t,e){var r=Ut(t),o=!r&&qt(t),n=!r&&!o&&Yt(t),i=!r&&!o&&!n&&fe(t),l=r||o||n||i,s=l?we(t.length,String):[],c=s.length;for(var a in t)!e&&!je.call(t,a)||l&&("length"==a||n&&("offset"==a||"parent"==a)||i&&("buffer"==a||"byteLength"==a||"byteOffset"==a)||Ae(a,c))||s.push(a);return s};const Se=function(t){var e=[];if(null!=t)for(var r in Object(t))e.push(r);return e};var Oe=Object.prototype.hasOwnProperty;const ke=function(t){if(!P(t))return Se(t);var e=Mt(t),r=[];for(var o in t)("constructor"!=o||!e&&Oe.call(t,o))&&r.push(o);return r};const Ee=function(t){return Gt(t)?_e(t,!0):ke(t)};const Ce=function(t){return ve(t,Ee(t))};const $e=function(t,e,r,o,n,i,l){var s=be(t,r),c=be(e,r),a=l.get(c);if(a)At(t,r,a);else{var u=i?i(s,c,r+"",t,e,l):void 0,m=void 0===u;if(m){var d=Ut(c),h=!d&&Yt(c),f=!d&&!h&&fe(c);u=c,d||h||f?Ut(s)?u=s:Kt(s)?u=It(s):h?(m=!1,u=Et(c,!0)):f?(m=!1,u=xt(c,!0)):u=[]:ie(c)||qt(c)?(u=s,qt(s)?u=Ce(s):P(s)&&!B(s)||(u=Dt(c))):m=!1}m&&(l.set(c,u),n(u,c,o,i,l),l.delete(c)),At(t,r,u)}};const xe=function t(e,r,o,n,i){e!==r&&jt(r,(function(l,s){if(i||(i=new vt),P(l))$e(e,r,s,o,t,n,i);else{var c=n?n(be(e,s),l,s+"",e,r,i):void 0;void 0===c&&(c=l),At(e,s,c)}}),Ee)};const Ie=function(t){return t};const Fe=function(t,e,r){switch(r.length){case 0:return t.call(e);case 1:return t.call(e,r[0]);case 2:return t.call(e,r[0],r[1]);case 3:return t.call(e,r[0],r[1],r[2])}return t.apply(e,r)};var Pe=Math.max;const Be=function(t,e,r){return e=Pe(void 0===e?t.length-1:e,0),function(){for(var o=arguments,n=-1,i=Pe(o.length-e,0),l=Array(i);++n<i;)l[n]=o[e+n];n=-1;for(var s=Array(e+1);++n<e;)s[n]=o[n];return s[e]=r(l),Fe(t,this,s)}};const Te=function(t){return function(){return t}};const Re=wt?function(t,e){return wt(t,"toString",{configurable:!0,enumerable:!1,value:Te(e),writable:!0})}:Ie;var Me=Date.now;const De=function(t){var e=0,r=0;return function(){var o=Me(),n=16-(o-r);if(r=o,n>0){if(++e>=800)return arguments[0]}else e=0;return t.apply(void 0,arguments)}}(Re);const Le=function(t,e){return De(Be(t,e,Ie),t+"")};const Ne=function(t,e,r){if(!P(r))return!1;var o=typeof e;return!!("number"==o?Gt(r)&&Ae(e,r.length):"string"==o&&e in r)&&s(r[e],t)};const Ve=function(t){return Le((function(e,r){var o=-1,n=r.length,i=n>1?r[n-1]:void 0,l=n>2?r[2]:void 0;for(i=t.length>3&&"function"==typeof i?(n--,i):void 0,l&&Ne(r[0],r[1],l)&&(i=n<3?void 0:i,n=1),e=Object(e);++o<n;){var s=r[o];s&&t(e,s,o,i)}return e}))}((function(t,e,r,o){xe(t,e,r,o)}));class He extends t.Plugin{constructor(t){super(t),this._definitions=new Map}static get pluginName(){return"DataSchema"}init(){for(const t of n)this.registerBlockElement(t);for(const t of i)this.registerInlineElement(t)}registerBlockElement(t){this._definitions.set(t.model,{...t,isBlock:!0})}registerInlineElement(t){this._definitions.set(t.model,{...t,isInline:!0})}extendBlockElement(t){this._extendDefinition({...t,isBlock:!0})}extendInlineElement(t){this._extendDefinition({...t,isInline:!0})}getDefinitionsForView(t,e){const r=new Set;for(const o of this._getMatchingViewDefinitions(t)){if(e)for(const t of this._getReferences(o.model))r.add(t);r.add(o)}return r}_getMatchingViewDefinitions(t){return Array.from(this._definitions.values()).filter((e=>e.view&&function(t,e){if("string"==typeof t)return t===e;if(t instanceof RegExp)return t.test(e);return!1}(t,e.view)))}*_getReferences(t){const{modelSchema:r}=this._definitions.get(t);if(!r)return;const o=["inheritAllFrom","inheritTypesFrom","allowWhere","allowContentOf","allowAttributesOf"];for(const n of o)for(const o of(0,e.toArray)(r[n]||[])){const e=this._definitions.get(o);o!==t&&e&&(yield*this._getReferences(e.model),yield e)}}_extendDefinition(t){const e=this._definitions.get(t.model),r=Ve({},e,t,((t,e)=>Array.isArray(t)?t.concat(e):void 0));this._definitions.set(t.model,r)}}var ze=r(492),qe=r(995);const Ue=function(t,e){for(var r=-1,o=null==t?0:t.length;++r<o&&!1!==e(t[r],r,t););return t};const We=Bt(Object.keys,Object);var Ge=Object.prototype.hasOwnProperty;const Ke=function(t){if(!Mt(t))return We(t);var e=[];for(var r in Object(t))Ge.call(t,r)&&"constructor"!=r&&e.push(r);return e};const Ze=function(t){return Gt(t)?_e(t):Ke(t)};const Qe=function(t,e){return t&&ve(e,Ze(e),t)};const Je=function(t,e){return t&&ve(e,Ee(e),t)};const Xe=function(t,e){for(var r=-1,o=null==t?0:t.length,n=0,i=[];++r<o;){var l=t[r];e(l,r,t)&&(i[n++]=l)}return i};const Ye=function(){return[]};var tr=Object.prototype.propertyIsEnumerable,er=Object.getOwnPropertySymbols;const rr=er?function(t){return null==t?[]:(t=Object(t),Xe(er(t),(function(e){return tr.call(t,e)})))}:Ye;const or=function(t,e){return ve(t,rr(t),e)};const nr=function(t,e){for(var r=-1,o=e.length,n=t.length;++r<o;)t[n+r]=e[r];return t};const ir=Object.getOwnPropertySymbols?function(t){for(var e=[];t;)nr(e,rr(t)),t=Tt(t);return e}:Ye;const lr=function(t,e){return ve(t,ir(t),e)};const sr=function(t,e,r){var o=e(t);return Ut(t)?o:nr(o,r(t))};const cr=function(t){return sr(t,Ze,rr)};const ar=function(t){return sr(t,Ee,ir)};const ur=Z(j,"DataView");const mr=Z(j,"Promise");const dr=Z(j,"Set");const hr=Z(j,"WeakMap");var fr="[object Map]",br="[object Promise]",pr="[object Set]",gr="[object WeakMap]",vr="[object DataView]",wr=N(ur),yr=N(Q),Ar=N(mr),jr=N(dr),_r=N(hr),Sr=F;(ur&&Sr(new ur(new ArrayBuffer(1)))!=vr||Q&&Sr(new Q)!=fr||mr&&Sr(mr.resolve())!=br||dr&&Sr(new dr)!=pr||hr&&Sr(new hr)!=gr)&&(Sr=function(t){var e=F(t),r="[object Object]"==e?t.constructor:void 0,o=r?N(r):"";if(o)switch(o){case wr:return vr;case yr:return fr;case Ar:return br;case jr:return pr;case _r:return gr}return e});const Or=Sr;var kr=Object.prototype.hasOwnProperty;const Er=function(t){var e=t.length,r=new t.constructor(e);return e&&"string"==typeof t[0]&&kr.call(t,"index")&&(r.index=t.index,r.input=t.input),r};const Cr=function(t,e){var r=e?$t(t.buffer):t.buffer;return new t.constructor(r,t.byteOffset,t.byteLength)};var $r=/\w*$/;const xr=function(t){var e=new t.constructor(t.source,$r.exec(t));return e.lastIndex=t.lastIndex,e};var Ir=_?_.prototype:void 0,Fr=Ir?Ir.valueOf:void 0;const Pr=function(t){return Fr?Object(Fr.call(t)):{}};const Br=function(t,e,r){var o=t.constructor;switch(e){case"[object ArrayBuffer]":return $t(t);case"[object Boolean]":case"[object Date]":return new o(+t);case"[object DataView]":return Cr(t,r);case"[object Float32Array]":case"[object Float64Array]":case"[object Int8Array]":case"[object Int16Array]":case"[object Int32Array]":case"[object Uint8Array]":case"[object Uint8ClampedArray]":case"[object Uint16Array]":case"[object Uint32Array]":return xt(t,r);case"[object Map]":case"[object Set]":return new o;case"[object Number]":case"[object String]":return new o(t);case"[object RegExp]":return xr(t);case"[object Symbol]":return Pr(t)}};const Tr=function(t){return Lt(t)&&"[object Map]"==Or(t)};var Rr=de&&de.isMap;const Mr=Rr?ce(Rr):Tr;const Dr=function(t){return Lt(t)&&"[object Set]"==Or(t)};var Lr=de&&de.isSet;const Nr=Lr?ce(Lr):Dr;var Vr="[object Arguments]",Hr="[object Function]",zr="[object Object]",qr={};qr[Vr]=qr["[object Array]"]=qr["[object ArrayBuffer]"]=qr["[object DataView]"]=qr["[object Boolean]"]=qr["[object Date]"]=qr["[object Float32Array]"]=qr["[object Float64Array]"]=qr["[object Int8Array]"]=qr["[object Int16Array]"]=qr["[object Int32Array]"]=qr["[object Map]"]=qr["[object Number]"]=qr["[object Object]"]=qr["[object RegExp]"]=qr["[object Set]"]=qr["[object String]"]=qr["[object Symbol]"]=qr["[object Uint8Array]"]=qr["[object Uint8ClampedArray]"]=qr["[object Uint16Array]"]=qr["[object Uint32Array]"]=!0,qr["[object Error]"]=qr[Hr]=qr["[object WeakMap]"]=!1;const Ur=function t(e,r,o,n,i,l){var s,c=1&r,a=2&r,u=4&r;if(o&&(s=i?o(e,n,i,l):o(e)),void 0!==s)return s;if(!P(e))return e;var m=Ut(e);if(m){if(s=Er(e),!c)return It(e,s)}else{var d=Or(e),h=d==Hr||"[object GeneratorFunction]"==d;if(Yt(e))return Et(e,c);if(d==zr||d==Vr||h&&!i){if(s=a||h?{}:Dt(e),!c)return a?lr(e,Je(s,e)):or(e,Qe(s,e))}else{if(!qr[d])return i?e:{};s=Br(e,d,c)}}l||(l=new vt);var f=l.get(e);if(f)return f;l.set(e,s),Nr(e)?e.forEach((function(n){s.add(t(n,r,o,n,e,l))})):Mr(e)&&e.forEach((function(n,i){s.set(i,t(n,r,o,i,e,l))}));var b=m?void 0:(u?a?ar:cr:a?Ee:Ze)(e);return Ue(b||e,(function(n,i){b&&(n=e[i=n]),ge(s,i,t(n,r,o,i,e,l))})),s};const Wr=function(t){return Ur(t,5)};function Gr(t,e,r,o){e&&function(t,e,r){if(e.attributes)for(const[o]of Object.entries(e.attributes))t.removeAttribute(o,r);if(e.styles)for(const o of Object.keys(e.styles))t.removeStyle(o,r);e.classes&&t.removeClass(e.classes,r)}(t,e,o),r&&Kr(t,r,o)}function Kr(t,e,r){if(e.attributes)for(const[o,n]of Object.entries(e.attributes))t.setAttribute(o,n,r);e.styles&&t.setStyle(e.styles,r),e.classes&&t.addClass(e.classes,r)}function Zr(t,e){const r=Wr(t);for(const o in e)Array.isArray(e[o])?r[o]=Array.from(new Set([...t[o]||[],...e[o]])):r[o]={...t[o],...e[o]};return r}function Qr({model:t}){return(e,r)=>r.writer.createElement(t,{htmlContent:e.getCustomProperty("$rawContent")})}function Jr(t,{view:e,isInline:r}){const o=t.t;return(t,{writer:n})=>{const i=o("HTML object"),l=Xr(e,t,n),s=t.getAttribute("htmlAttributes");n.addClass("html-object-embed__content",l),s&&Kr(n,s,l);const c=n.createContainerElement(r?"span":"div",{class:"html-object-embed","data-html-object-embed-label":i},l);return(0,qe.toWidget)(c,n,{widgetLabel:i})}}function Xr(t,e,r){return r.createRawElement(t,null,((t,r)=>{r.setContentOf(t,e.getAttribute("htmlContent"))}))}function Yr({priority:t,view:e}){return(r,o)=>{if(!r)return;const{writer:n}=o,i=n.createAttributeElement(e,null,{priority:t});return Kr(n,r,i),i}}function to({view:t},e){return r=>{r.on(`element:${t}`,((t,r,o)=>{if(!r.modelRange||r.modelRange.isCollapsed)return;const n=e.processViewAttributes(r.viewItem,o);n&&o.writer.setAttribute("htmlAttributes",n,r.modelRange)}),{priority:"low"})}}function eo({model:t}){return e=>{e.on(`attribute:htmlAttributes:${t}`,((t,e,r)=>{if(!r.consumable.consume(e.item,t.name))return;const{attributeOldValue:o,attributeNewValue:n}=e;Gr(r.writer,o,n,r.mapper.toViewElement(e.item))}))}}const ro=function(t,e){for(var r=-1,o=null==t?0:t.length,n=Array(o);++r<o;)n[r]=e(t[r],r,t);return n};const oo=function(t,e,r,o){for(var n=t.length,i=r+(o?1:-1);o?i--:++i<n;)if(e(t[i],i,t))return i;return-1};const no=function(t){return t!=t};const io=function(t,e,r){for(var o=r-1,n=t.length;++o<n;)if(t[o]===e)return o;return-1};const lo=function(t,e,r){return e==e?io(t,e,r):oo(t,no,r)};const so=function(t,e,r,o){for(var n=r-1,i=t.length;++n<i;)if(o(t[n],e))return n;return-1};var co=Array.prototype.splice;const ao=function(t,e,r,o){var n=o?so:lo,i=-1,l=e.length,s=t;for(t===e&&(e=It(e)),r&&(s=ro(t,ce(r)));++i<l;)for(var c=0,a=e[i],u=r?r(a):a;(c=n(s,u,c,o))>-1;)s!==t&&co.call(s,c,1),co.call(t,c,1);return t};const uo=Le((function(t,e){return t&&t.length&&e&&e.length?ao(t,e):t}));var mo=r(62),ho=r.n(mo),fo=r(142),bo={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ho()(fo.Z,bo);fo.Z.locals;class po extends t.Plugin{constructor(t){super(t),this._dataSchema=t.plugins.get("DataSchema"),this._allowedAttributes=new ze.Matcher,this._disallowedAttributes=new ze.Matcher,this._allowedElements=new Set,this._dataInitialized=!1,this._coupledAttributes=null,this._registerElementsAfterInit(),this._registerElementHandlers(),this._registerModelPostFixer()}static get pluginName(){return"DataFilter"}static get requires(){return[He,qe.Widget]}loadAllowedConfig(t){this._loadConfig(t,(t=>this.allowAttributes(t)))}loadDisallowedConfig(t){this._loadConfig(t,(t=>this.disallowAttributes(t)))}allowElement(t){for(const e of this._dataSchema.getDefinitionsForView(t,!0))this._allowedElements.has(e)||(this._allowedElements.add(e),this._dataInitialized&&this._fireRegisterEvent(e),this._coupledAttributes=null)}allowAttributes(t){this._allowedAttributes.add(t)}disallowAttributes(t){this._disallowedAttributes.add(t)}_loadConfig(t,e){for(const r of t){const t=r.name||/[\s\S]+/;this.allowElement(t),Ao(r).forEach(e)}}processViewAttributes(t,e){return go(t,e,this._disallowedAttributes),go(t,e,this._allowedAttributes)}_registerElementsAfterInit(){this.editor.data.on("init",(()=>{this._dataInitialized=!0;for(const t of this._allowedElements)this._fireRegisterEvent(t)}),{priority:e.priorities.get("highest")+1})}_registerElementHandlers(){this.on("register",((t,r)=>{const o=this.editor.model.schema;if(r.isObject&&!o.isRegistered(r.model))this._registerObjectElement(r);else if(r.isBlock)this._registerBlockElement(r);else{if(!r.isInline)throw new e.CKEditorError("data-filter-invalid-definition",null,r);this._registerInlineElement(r)}t.stop()}),{priority:"lowest"})}_registerModelPostFixer(){const t=this.editor.model;t.document.registerPostFixer((e=>{const r=t.document.differ.getChanges();let o=!1;const n=this._getCoupledAttributesMap();for(const t of r){if("attribute"!=t.type||null!==t.attributeNewValue)continue;const r=n.get(t.attributeKey);if(r)for(const{item:n}of t.range.getWalker({shallow:!0}))for(const t of r)n.hasAttribute(t)&&(e.removeAttribute(t,n),o=!0)}return o}))}_getCoupledAttributesMap(){if(this._coupledAttributes)return this._coupledAttributes;this._coupledAttributes=new Map;for(const t of this._allowedElements)if(t.coupledAttribute&&t.model){const e=this._coupledAttributes.get(t.coupledAttribute);e?e.push(t.model):this._coupledAttributes.set(t.coupledAttribute,[t.model])}}_fireRegisterEvent(t){this.fire(t.view?`register:${t.view}`:"register",t)}_registerObjectElement(t){const r=this.editor,o=r.model.schema,n=r.conversion,{view:i,model:l}=t;o.register(l,t.modelSchema),i&&(o.extend(t.model,{allowAttributes:["htmlAttributes","htmlContent"]}),r.data.registerRawContentMatcher({name:i}),n.for("upcast").elementToElement({view:i,model:Qr(t),converterPriority:e.priorities.get("low")+1}),n.for("upcast").add(to(t,this)),n.for("editingDowncast").elementToStructure({model:{name:l,attributes:["htmlAttributes"]},view:Jr(r,t)}),n.for("dataDowncast").elementToElement({model:l,view:(t,{writer:e})=>Xr(i,t,e)}),n.for("dataDowncast").add(eo(t)))}_registerBlockElement(t){const r=this.editor,o=r.model.schema,n=r.conversion,{view:i,model:l}=t;if(!o.isRegistered(t.model)){if(o.register(t.model,t.modelSchema),!i)return;n.for("upcast").elementToElement({model:l,view:i,converterPriority:e.priorities.get("low")+1}),n.for("downcast").elementToElement({model:l,view:i})}i&&(o.extend(t.model,{allowAttributes:"htmlAttributes"}),n.for("upcast").add(to(t,this)),n.for("downcast").add(eo(t)))}_registerInlineElement(t){const e=this.editor,r=e.model.schema,o=e.conversion,n=t.model;r.extend("$text",{allowAttributes:n}),t.attributeProperties&&r.setAttributeProperties(n,t.attributeProperties),o.for("upcast").add(function({view:t,model:e},r){return o=>{o.on(`element:${t}`,((t,o,n)=>{let i=r.processViewAttributes(o.viewItem,n);if(i||n.consumable.test(o.viewItem,{name:!0})){i=i||{},n.consumable.consume(o.viewItem,{name:!0}),o.modelRange||(o=Object.assign(o,n.convertChildren(o.viewItem,o.modelCursor)));for(const t of o.modelRange.getItems())if(n.schema.checkAttribute(t,e)){const r=Zr(i,t.getAttribute(e)||{});n.writer.setAttribute(e,r,t)}}}),{priority:"low"})}}(t,this)),o.for("downcast").attributeToElement({model:n,view:Yr(t)})}}function go(t,e,r){const o=function(t,{consumable:e},r){const o=r.matchAll(t)||[],n=[];for(const r of o)vo(e,t,r),delete r.match.name,e.consume(t,r.match),n.push(r);return n}(t,e,r),{attributes:n,styles:i,classes:l}=function(t){const e={attributes:new Set,classes:new Set,styles:new Set};for(const r of t)for(const t in e){(r.match[t]||[]).forEach((r=>e[t].add(r)))}return e}(o),s={};if(n.size)for(const t of n)jo(t)||n.delete(t);return n.size&&(s.attributes=wo(n,(e=>t.getAttribute(e)))),i.size&&(s.styles=wo(i,(e=>t.getStyle(e)))),l.size&&(s.classes=Array.from(l)),Object.keys(s).length?s:null}function vo(t,e,r){for(const o of["attributes","classes","styles"]){const n=r.match[o];if(n)for(const r of Array.from(n))t.test(e,{[o]:[r]})||uo(n,r)}}function wo(t,e){const r={};for(const o of t){void 0!==e(o)&&(r[o]=e(o))}return r}function yo(t,e){const{name:r}=t;return ie(t[e])?Object.entries(t[e]).map((([t,o])=>({name:r,[e]:{[t]:o}}))):Array.isArray(t[e])?t[e].map((t=>({name:r,[e]:[t]}))):[t]}function Ao(t){const{name:e,attributes:r,classes:o,styles:n}=t,i=[];return r&&i.push(...yo({name:e,attributes:r},"attributes")),o&&i.push(...yo({name:e,classes:o},"classes")),n&&i.push(...yo({name:e,styles:n},"styles")),i}function jo(t){try{document.createAttribute(t)}catch(t){return!1}return!0}class _o extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"CodeBlockElementSupport"}init(){if(!this.editor.plugins.has("CodeBlockEditing"))return;const t=this.editor.plugins.get(po);t.on("register:pre",((e,r)=>{if("codeBlock"!==r.model)return;const o=this.editor,n=o.model.schema,i=o.conversion;n.extend("codeBlock",{allowAttributes:["htmlAttributes","htmlContentAttributes"]}),i.for("upcast").add(function(t){return e=>{e.on("element:code",((e,r,o)=>{const n=r.viewItem,i=n.parent;function l(e,n){const i=t.processViewAttributes(e,o);i&&o.writer.setAttribute(n,i,r.modelRange)}i&&i.is("element","pre")&&(l(i,"htmlAttributes"),l(n,"htmlContentAttributes"))}),{priority:"low"})}}(t)),i.for("downcast").add((t=>{t.on("attribute:htmlAttributes:codeBlock",((t,e,r)=>{if(!r.consumable.consume(e.item,t.name))return;const{attributeOldValue:o,attributeNewValue:n}=e,i=r.mapper.toViewElement(e.item).parent;Gr(r.writer,o,n,i)})),t.on("attribute:htmlContentAttributes:codeBlock",((t,e,r)=>{if(!r.consumable.consume(e.item,t.name))return;const{attributeOldValue:o,attributeNewValue:n}=e,i=r.mapper.toViewElement(e.item);Gr(r.writer,o,n,i)}))})),e.stop()}))}}class So extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"DualContentModelElementSupport"}init(){this.editor.plugins.get(po).on("register",((t,r)=>{const o=this.editor,n=o.model.schema,i=o.conversion;if(!r.paragraphLikeModel)return;if(n.isRegistered(r.model)||n.isRegistered(r.paragraphLikeModel))return;const l={model:r.paragraphLikeModel,view:r.view};n.register(r.model,r.modelSchema),n.register(l.model,{inheritAllFrom:"$block"}),i.for("upcast").elementToElement({view:r.view,model:(t,{writer:e})=>this._hasBlockContent(t)?e.createElement(r.model):e.createElement(l.model),converterPriority:e.priorities.get("low")+1}),i.for("downcast").elementToElement({view:r.view,model:r.model}),this._addAttributeConversion(r),i.for("downcast").elementToElement({view:l.view,model:l.model}),this._addAttributeConversion(l),t.stop()}))}_hasBlockContent(t){const e=this.editor.editing.view,r=e.domConverter.blockElements;for(const o of e.createRangeIn(t).getItems())if(o.is("element")&&r.includes(o.name))return!0;return!1}_addAttributeConversion(t){const e=this.editor,r=e.conversion,o=e.plugins.get(po);e.model.schema.extend(t.model,{allowAttributes:"htmlAttributes"}),r.for("upcast").add(to(t,o)),r.for("downcast").add(eo(t))}}class Oo extends t.Plugin{static get requires(){return[He]}static get pluginName(){return"HeadingElementSupport"}init(){const t=this.editor;if(!t.plugins.has("HeadingEditing"))return;const e=t.plugins.get(He),r=t.config.get("heading.options"),o=[];for(const t of r)"model"in t&&"view"in t&&(e.registerBlockElement({view:t.view,model:t.model}),o.push(t.model));e.extendBlockElement({model:"htmlHgroup",modelSchema:{allowChildren:o}})}}class ko extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"ImageElementSupport"}init(){const t=this.editor;if(!t.plugins.has("ImageInlineEditing")&&!t.plugins.has("ImageBlockEditing"))return;const e=t.model.schema,r=t.conversion,o=t.plugins.get(po);o.on("register:figure",(()=>{r.for("upcast").add(function(t){return e=>{e.on("element:figure",((e,r,o)=>{const n=r.viewItem;if(!r.modelRange||!n.hasClass("image"))return;const i=t.processViewAttributes(n,o);i&&o.writer.setAttribute("htmlFigureAttributes",i,r.modelRange)}),{priority:"low"})}}(o))})),o.on("register:img",((t,n)=>{"imageBlock"!==n.model&&"imageInline"!==n.model||(e.isRegistered("imageBlock")&&e.extend("imageBlock",{allowAttributes:["htmlAttributes","htmlFigureAttributes","htmlLinkAttributes"]}),e.isRegistered("imageInline")&&e.extend("imageInline",{allowAttributes:["htmlA","htmlAttributes"]}),r.for("upcast").add(function(t){return e=>{e.on("element:img",((e,r,o)=>{if(!r.modelRange)return;const n=r.viewItem,i=n.parent;function l(e,n){const i=t.processViewAttributes(e,o);i&&o.writer.setAttribute(n,i,r.modelRange)}function s(t){r.modelRange&&r.modelRange.getContainedElement().is("element","imageBlock")&&l(t,"htmlLinkAttributes")}l(n,"htmlAttributes"),i.is("element","a")&&s(i)}),{priority:"low"})}}(o)),r.for("downcast").add((t=>{function e(e){t.on(`attribute:${e}:imageInline`,((t,e,r)=>{if(!r.consumable.consume(e.item,t.name))return;const{attributeOldValue:o,attributeNewValue:n}=e,i=r.mapper.toViewElement(e.item);Gr(r.writer,o,n,i)}),{priority:"low"})}function r(e,r){t.on(`attribute:${r}:imageBlock`,((t,r,o)=>{if(!o.consumable.test(r.item,t.name))return;const{attributeOldValue:n,attributeNewValue:i}=r,l=o.mapper.toViewElement(r.item),s=Eo(o.writer,l,e);s&&(Gr(o.writer,n,i,s),o.consumable.consume(r.item,t.name))}),{priority:"low"}),"a"===e&&t.on("attribute:linkHref:imageBlock",((t,e,r)=>{if(!r.consumable.consume(e.item,"attribute:htmlLinkAttributes:imageBlock"))return;const o=r.mapper.toViewElement(e.item),n=Eo(r.writer,o,"a");Kr(r.writer,e.item.getAttribute("htmlLinkAttributes"),n)}),{priority:"low"})}e("htmlAttributes"),r("img","htmlAttributes"),r("figure","htmlFigureAttributes"),r("a","htmlLinkAttributes")})),t.stop())}))}}function Eo(t,e,r){const o=t.createRangeOn(e);for(const{item:t}of o.getWalker())if(t.is("element",r))return t}class Co extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"MediaEmbedElementSupport"}init(){const t=this.editor;if(!t.plugins.has("MediaEmbed")||t.config.get("mediaEmbed.previewsInData"))return;const e=t.model.schema,r=t.conversion,o=this.editor.plugins.get(po),n=this.editor.plugins.get(He),i=t.config.get("mediaEmbed.elementName");n.registerBlockElement({model:"media",view:i}),o.on("register:figure",(()=>{r.for("upcast").add(function(t){return e=>{e.on("element:figure",((e,r,o)=>{const n=r.viewItem;if(!r.modelRange||!n.hasClass("media"))return;const i=t.processViewAttributes(n,o);i&&o.writer.setAttribute("htmlFigureAttributes",i,r.modelRange)}),{priority:"low"})}}(o))})),o.on(`register:${i}`,((t,n)=>{"media"===n.model&&(e.extend("media",{allowAttributes:["htmlAttributes","htmlFigureAttributes"]}),r.for("upcast").add(function(t,e){return t=>{t.on(`element:${e}`,r)};function r(e,r,o){function n(e,n){const i=t.processViewAttributes(e,o);i&&o.writer.setAttribute(n,i,r.modelRange)}n(r.viewItem,"htmlAttributes")}}(o,i)),r.for("dataDowncast").add(function(t){return e=>{function r(t,r){e.on(`attribute:${r}:media`,((e,r,o)=>{if(!o.consumable.consume(r.item,e.name))return;const{attributeOldValue:n,attributeNewValue:i}=r,l=o.mapper.toViewElement(r.item),s=function(t,e,r){const o=t.createRangeOn(e);for(const{item:t}of o.getWalker())if(t.is("element",r))return t}(o.writer,l,t);Gr(o.writer,n,i,s)}))}r(t,"htmlAttributes"),r("figure","htmlFigureAttributes")}}(i)),t.stop())}))}}class $o extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"ScriptElementSupport"}init(){const t=this.editor.plugins.get(po);t.on("register:script",((e,r)=>{const o=this.editor,n=o.model.schema,i=o.conversion;n.register("htmlScript",r.modelSchema),n.extend("htmlScript",{allowAttributes:["htmlAttributes","htmlContent"],isContent:!0}),o.data.registerRawContentMatcher({name:"script"}),i.for("upcast").elementToElement({view:"script",model:Qr(r)}),i.for("upcast").add(to(r,t)),i.for("downcast").elementToElement({model:"htmlScript",view:(t,{writer:e})=>Xr("script",t,e)}),i.for("downcast").add(eo(r)),e.stop()}))}}class xo extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"TableElementSupport"}init(){const t=this.editor;if(!t.plugins.has("TableEditing"))return;const e=t.model.schema,r=t.conversion,o=t.plugins.get(po);o.on("register:figure",(()=>{r.for("upcast").add(function(t){return e=>{e.on("element:figure",((e,r,o)=>{const n=r.viewItem;if(!r.modelRange||!n.hasClass("table"))return;const i=t.processViewAttributes(n,o);i&&o.writer.setAttribute("htmlFigureAttributes",i,r.modelRange)}),{priority:"low"})}}(o))})),o.on("register:table",((t,n)=>{"table"===n.model&&(e.extend("table",{allowAttributes:["htmlAttributes","htmlFigureAttributes","htmlTheadAttributes","htmlTbodyAttributes"]}),r.for("upcast").add(function(t){return e=>{e.on("element:table",((e,r,o)=>{const n=r.viewItem;i(n,"htmlAttributes");for(const t of n.getChildren())t.is("element","thead")&&i(t,"htmlTheadAttributes"),t.is("element","tbody")&&i(t,"htmlTbodyAttributes");function i(e,n){const i=t.processViewAttributes(e,o);i&&o.writer.setAttribute(n,i,r.modelRange)}}))}}(o)),r.for("downcast").add((t=>{function e(e,r){t.on(`attribute:${r}:table`,((t,r,o)=>{if(!o.consumable.consume(r.item,t.name))return;const n=o.mapper.toViewElement(r.item),i=function(t,e,r){const o=t.createRangeOn(e);for(const{item:t}of o.getWalker())if(t.is("element",r))return t}(o.writer,n,e);Kr(o.writer,r.attributeNewValue,i)}))}e("table","htmlAttributes"),e("figure","htmlFigureAttributes"),e("thead","htmlTheadAttributes"),e("tbody","htmlTbodyAttributes")})),t.stop())}))}}class Io extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"StyleElementSupport"}init(){const t=this.editor.plugins.get(po);t.on("register:style",((e,r)=>{const o=this.editor,n=o.model.schema,i=o.conversion;n.register("htmlStyle",r.modelSchema),n.extend("htmlStyle",{allowAttributes:["htmlAttributes","htmlContent"],isContent:!0}),o.data.registerRawContentMatcher({name:"style"}),i.for("upcast").elementToElement({view:"style",model:Qr(r)}),i.for("upcast").add(to(r,t)),i.for("downcast").elementToElement({model:"htmlStyle",view:(t,{writer:e})=>Xr("style",t,e)}),i.for("downcast").add(eo(r)),e.stop()}))}}const Fo=function(t){return this.__data__.set(t,"__lodash_hash_undefined__"),this};const Po=function(t){return this.__data__.has(t)};function Bo(t){var e=-1,r=null==t?0:t.length;for(this.__data__=new bt;++e<r;)this.add(t[e])}Bo.prototype.add=Bo.prototype.push=Fo,Bo.prototype.has=Po;const To=Bo;const Ro=function(t,e){for(var r=-1,o=null==t?0:t.length;++r<o;)if(e(t[r],r,t))return!0;return!1};const Mo=function(t,e){return t.has(e)};const Do=function(t,e,r,o,n,i){var l=1&r,s=t.length,c=e.length;if(s!=c&&!(l&&c>s))return!1;var a=i.get(t),u=i.get(e);if(a&&u)return a==e&&u==t;var m=-1,d=!0,h=2&r?new To:void 0;for(i.set(t,e),i.set(e,t);++m<s;){var f=t[m],b=e[m];if(o)var p=l?o(b,f,m,e,t,i):o(f,b,m,t,e,i);if(void 0!==p){if(p)continue;d=!1;break}if(h){if(!Ro(e,(function(t,e){if(!Mo(h,e)&&(f===t||n(f,t,r,o,i)))return h.push(e)}))){d=!1;break}}else if(f!==b&&!n(f,b,r,o,i)){d=!1;break}}return i.delete(t),i.delete(e),d};const Lo=function(t){var e=-1,r=Array(t.size);return t.forEach((function(t,o){r[++e]=[o,t]})),r};const No=function(t){var e=-1,r=Array(t.size);return t.forEach((function(t){r[++e]=t})),r};var Vo=_?_.prototype:void 0,Ho=Vo?Vo.valueOf:void 0;const zo=function(t,e,r,o,n,i,l){switch(r){case"[object DataView]":if(t.byteLength!=e.byteLength||t.byteOffset!=e.byteOffset)return!1;t=t.buffer,e=e.buffer;case"[object ArrayBuffer]":return!(t.byteLength!=e.byteLength||!i(new Ct(t),new Ct(e)));case"[object Boolean]":case"[object Date]":case"[object Number]":return s(+t,+e);case"[object Error]":return t.name==e.name&&t.message==e.message;case"[object RegExp]":case"[object String]":return t==e+"";case"[object Map]":var c=Lo;case"[object Set]":var a=1&o;if(c||(c=No),t.size!=e.size&&!a)return!1;var u=l.get(t);if(u)return u==e;o|=2,l.set(t,e);var m=Do(c(t),c(e),o,n,i,l);return l.delete(t),m;case"[object Symbol]":if(Ho)return Ho.call(t)==Ho.call(e)}return!1};var qo=Object.prototype.hasOwnProperty;const Uo=function(t,e,r,o,n,i){var l=1&r,s=cr(t),c=s.length;if(c!=cr(e).length&&!l)return!1;for(var a=c;a--;){var u=s[a];if(!(l?u in e:qo.call(e,u)))return!1}var m=i.get(t),d=i.get(e);if(m&&d)return m==e&&d==t;var h=!0;i.set(t,e),i.set(e,t);for(var f=l;++a<c;){var b=t[u=s[a]],p=e[u];if(o)var g=l?o(p,b,u,e,t,i):o(b,p,u,t,e,i);if(!(void 0===g?b===p||n(b,p,r,o,i):g)){h=!1;break}f||(f="constructor"==u)}if(h&&!f){var v=t.constructor,w=e.constructor;v==w||!("constructor"in t)||!("constructor"in e)||"function"==typeof v&&v instanceof v&&"function"==typeof w&&w instanceof w||(h=!1)}return i.delete(t),i.delete(e),h};var Wo="[object Arguments]",Go="[object Array]",Ko="[object Object]",Zo=Object.prototype.hasOwnProperty;const Qo=function(t,e,r,o,n,i){var l=Ut(t),s=Ut(e),c=l?Go:Or(t),a=s?Go:Or(e),u=(c=c==Wo?Ko:c)==Ko,m=(a=a==Wo?Ko:a)==Ko,d=c==a;if(d&&Yt(t)){if(!Yt(e))return!1;l=!0,u=!1}if(d&&!u)return i||(i=new vt),l||fe(t)?Do(t,e,r,o,n,i):zo(t,e,c,r,o,n,i);if(!(1&r)){var h=u&&Zo.call(t,"__wrapped__"),f=m&&Zo.call(e,"__wrapped__");if(h||f){var b=h?t.value():t,p=f?e.value():e;return i||(i=new vt),n(b,p,r,o,i)}}return!!d&&(i||(i=new vt),Uo(t,e,r,o,n,i))};const Jo=function t(e,r,o,n,i){return e===r||(null==e||null==r||!Lt(e)&&!Lt(r)?e!=e&&r!=r:Qo(e,r,o,n,t,i))};const Xo=function(t,e){return Jo(t,e)};class Yo extends t.Plugin{static get requires(){return[po]}static get pluginName(){return"DocumentListElementSupport"}init(){const t=this.editor;if(!t.plugins.has("DocumentListEditing"))return;const e=t.model.schema,r=t.conversion,o=t.plugins.get(po),n=t.plugins.get("DocumentListEditing");n.registerDowncastStrategy({scope:"item",attributeName:"htmlLiAttributes",setAttributeOnDowncast(t,e,r){Kr(t,e,r)}}),n.registerDowncastStrategy({scope:"list",attributeName:"htmlListAttributes",setAttributeOnDowncast(t,e,r){Kr(t,e,r)}}),o.on("register",((t,n)=>{["ul","ol","li"].includes(n.view)&&(t.stop(),e.checkAttribute("$block","htmlListAttributes")||(e.extend("$block",{allowAttributes:["htmlListAttributes","htmlLiAttributes"]}),e.extend("$blockObject",{allowAttributes:["htmlListAttributes","htmlLiAttributes"]}),e.extend("$container",{allowAttributes:["htmlListAttributes","htmlLiAttributes"]}),r.for("upcast").add((t=>{t.on("element:ul",tn("htmlListAttributes",o),{priority:"low"}),t.on("element:ol",tn("htmlListAttributes",o),{priority:"low"}),t.on("element:li",tn("htmlLiAttributes",o),{priority:"low"})}))))})),n.on("postFixer",((t,{listNodes:e,writer:r})=>{const o=[];for(const{node:n,previous:i}of e){if(!i)continue;const e=n.getAttribute("listIndent"),l=i.getAttribute("listIndent");let s=null;if(e>l?o[l]=i:e<l?(s=o[e],o.length=e):s=i,s){if(s.getAttribute("listType")==n.getAttribute("listType")){const e=s.getAttribute("htmlListAttributes");Xo(n.getAttribute("htmlListAttributes"),e)||(r.setAttribute("htmlListAttributes",e,n),t.return=!0)}if(s.getAttribute("listItemId")==n.getAttribute("listItemId")){const e=s.getAttribute("htmlLiAttributes");Xo(n.getAttribute("htmlLiAttributes"),e)||(r.setAttribute("htmlLiAttributes",e,n),t.return=!0)}}}}))}afterInit(){const t=this.editor;t.commands.get("indentList")&&this.listenTo(t.commands.get("indentList"),"afterExecute",((e,r)=>{t.model.change((t=>{for(const e of r)t.setAttribute("htmlListAttributes",{},e)}))}))}}function tn(t,e){return(r,o,n)=>{const i=o.viewItem;o.modelRange||Object.assign(o,n.convertChildren(o.viewItem,o.modelCursor));const l=e.processViewAttributes(i,n);for(const e of o.modelRange.getItems({shallow:!0}))e.hasAttribute("listItemId")&&(e.hasAttribute(t)||n.writer.setAttribute(t,l||{},e))}}class en extends t.Plugin{static get requires(){return[po,He]}static get pluginName(){return"CustomElementSupport"}init(){const t=this.editor.plugins.get(po),e=this.editor.plugins.get(He);t.on("register:$customElement",((r,o)=>{r.stop();const n=this.editor,i=n.model.schema,l=n.conversion,s=n.editing.view.domConverter.unsafeElements,c=n.data.htmlProcessor.domConverter.preElements;i.register(o.model,o.modelSchema),i.extend(o.model,{allowAttributes:["htmlElementName","htmlAttributes","htmlContent"],isContent:!0}),l.for("upcast").elementToElement({view:/.*/,model:(r,i)=>{if("$comment"==r.name)return;if(!function(t){try{document.createElement(t)}catch(t){return!1}return!0}(r.name))return;if(e.getDefinitionsForView(r.name).size)return;s.includes(r.name)||s.push(r.name),c.includes(r.name)||c.push(r.name);const l=i.writer.createElement(o.model,{htmlElementName:r.name}),a=t.processViewAttributes(r,i);a&&i.writer.setAttribute("htmlAttributes",a,l);const u=new ze.UpcastWriter(r.document).createDocumentFragment(r),m=n.data.processor.toData(u);i.writer.setAttribute("htmlContent",m,l);for(const{item:t}of n.editing.view.createRangeIn(r))i.consumable.consume(t,{name:!0});return l},converterPriority:"low"}),l.for("editingDowncast").elementToElement({model:{name:o.model,attributes:["htmlElementName","htmlAttributes","htmlContent"]},view:(t,{writer:e})=>{const r=t.getAttribute("htmlElementName"),o=e.createRawElement(r);return t.hasAttribute("htmlAttributes")&&Kr(e,t.getAttribute("htmlAttributes"),o),o}}),l.for("dataDowncast").elementToElement({model:{name:o.model,attributes:["htmlElementName","htmlAttributes","htmlContent"]},view:(t,{writer:e})=>{const r=t.getAttribute("htmlElementName"),o=t.getAttribute("htmlContent"),n=e.createRawElement(r,null,((t,e)=>{e.setContentOf(t,o);const r=t.firstChild;for(r.remove();r.firstChild;)t.appendChild(r.firstChild)}));return t.hasAttribute("htmlAttributes")&&Kr(e,t.getAttribute("htmlAttributes"),n),n}})}))}}class rn extends t.Plugin{static get pluginName(){return"GeneralHtmlSupport"}static get requires(){return[po,_o,So,Oo,ko,Co,$o,xo,Io,Yo,en]}init(){const t=this.editor,e=t.plugins.get(po);e.loadAllowedConfig(t.config.get("htmlSupport.allow")||[]),e.loadDisallowedConfig(t.config.get("htmlSupport.disallow")||[])}getGhsAttributeNameForElement(t){const e=this.editor.plugins.get("DataSchema"),r=Array.from(e.getDefinitionsForView(t,!1));return r&&r.length&&r[0].isInline&&!r[0].isObject?r[0].model:"htmlAttributes"}addModelHtmlClass(t,r,o){const n=this.editor.model,i=this.getGhsAttributeNameForElement(t);n.change((t=>{for(const l of on(n,o,i))nn(t,l,i,"classes",(t=>{for(const o of(0,e.toArray)(r))t.add(o)}))}))}removeModelHtmlClass(t,r,o){const n=this.editor.model,i=this.getGhsAttributeNameForElement(t);n.change((t=>{for(const l of on(n,o,i))nn(t,l,i,"classes",(t=>{for(const o of(0,e.toArray)(r))t.delete(o)}))}))}setModelHtmlAttributes(t,e,r){const o=this.editor.model,n=this.getGhsAttributeNameForElement(t);o.change((t=>{for(const i of on(o,r,n))nn(t,i,n,"attributes",(t=>{for(const[r,o]of Object.entries(e))t.set(r,o)}))}))}removeModelHtmlAttributes(t,r,o){const n=this.editor.model,i=this.getGhsAttributeNameForElement(t);n.change((t=>{for(const l of on(n,o,i))nn(t,l,i,"attributes",(t=>{for(const o of(0,e.toArray)(r))t.delete(o)}))}))}setModelHtmlStyles(t,e,r){const o=this.editor.model,n=this.getGhsAttributeNameForElement(t);o.change((t=>{for(const i of on(o,r,n))nn(t,i,n,"styles",(t=>{for(const[r,o]of Object.entries(e))t.set(r,o)}))}))}removeModelHtmlStyles(t,r,o){const n=this.editor.model,i=this.getGhsAttributeNameForElement(t);n.change((t=>{for(const l of on(n,o,i))nn(t,l,i,"styles",(t=>{for(const o of(0,e.toArray)(r))t.delete(o)}))}))}}function*on(t,e,r){if(e.is("documentSelection")&&e.isCollapsed)t.schema.checkAttributeInSelection(e,r)&&(yield e);else for(const o of function(t,e,r){return e.is("node")||e.is("$text")||e.is("$textProxy")?t.schema.checkAttribute(e,r)?[t.createRangeOn(e)]:[]:t.schema.getValidRanges(t.createSelection(e).getRanges(),r)}(t,e,r))yield*o.getItems({shallow:!0})}function nn(t,e,r,o,n){const i=e.getAttribute(r),l={};for(const t of["attributes","styles","classes"])if(t!=o)i&&i[t]&&(l[t]=i[t]);else{const e="classes"==t?new Set(i&&i[t]||[]):new Map(Object.entries(i&&i[t]||{}));n(e),e.size&&(l[t]="classes"==t?Array.from(e):Object.fromEntries(e))}Object.keys(l).length?e.is("documentSelection")?t.setSelectionAttribute(r,l):t.setAttribute(r,l,e):i&&(e.is("documentSelection")?t.removeSelectionAttribute(r):t.removeAttribute(r,e))}class ln extends t.Plugin{static get pluginName(){return"HtmlComment"}init(){const t=this.editor;t.model.schema.addAttributeCheck(((t,e)=>{if(t.endsWith("$root")&&e.startsWith("$comment"))return!0})),t.conversion.for("upcast").elementToMarker({view:"$comment",model:(t,{writer:r})=>{const o=this.editor.model.document.getRoot(),n=t.getCustomProperty("$rawContent"),i=`$comment:${(0,e.uid)()}`;return r.setAttribute(i,n,o),i}}),t.conversion.for("dataDowncast").markerToElement({model:"$comment",view:(t,{writer:e})=>{const r=this.editor.model.document.getRoot(),o=t.markerName,n=r.getAttribute(o),i=e.createUIElement("$comment");return e.setCustomProperty("$rawContent",n,i),i}}),t.model.document.registerPostFixer((e=>{const r=t.model.document.getRoot(),o=t.model.document.differ.getChangedMarkers().filter((t=>t.name.startsWith("$comment"))).filter((t=>{const e=t.data.newRange;return e&&"$graveyard"===e.root.rootName}));if(0===o.length)return!1;for(const t of o)e.removeMarker(t.name),e.removeAttribute(t.name,r);return!0})),t.data.on("set",(()=>{for(const e of t.model.markers.getMarkersGroup("$comment"))this.removeHtmlComment(e.name)}),{priority:"high"}),t.model.on("deleteContent",((e,[r])=>{for(const e of r.getRanges()){const r=t.model.schema.getLimitElement(e),o=t.model.createPositionAt(r,0),n=t.model.createPositionAt(r,"end");let i;i=o.isTouching(e.start)&&n.isTouching(e.end)?this.getHtmlCommentsInRange(t.model.createRange(o,n)):this.getHtmlCommentsInRange(e,{skipBoundaries:!0});for(const t of i)this.removeHtmlComment(t)}}),{priority:"high"})}createHtmlComment(t,r){const o=(0,e.uid)(),n=this.editor.model,i=n.document.getRoot(),l=`$comment:${o}`;return n.change((e=>{const o=e.createRange(t);return e.addMarker(l,{usingOperation:!0,affectsData:!0,range:o}),e.setAttribute(l,r,i),l}))}removeHtmlComment(t){const e=this.editor,r=e.model.document.getRoot(),o=e.model.markers.get(t);return!!o&&(e.model.change((e=>{e.removeMarker(o),e.removeAttribute(t,r)})),!0)}getHtmlCommentData(t){const e=this.editor,r=e.model.markers.get(t),o=e.model.document.getRoot();return r?{content:o.getAttribute(t),position:r.getStart()}:null}getHtmlCommentsInRange(t,{skipBoundaries:e=!1}={}){const r=!e;return Array.from(this.editor.model.markers.getMarkersGroup("$comment")).filter((e=>function(t,e){const o=t.getRange().start;return(o.isAfter(e.start)||r&&o.isEqual(e.start))&&(o.isBefore(e.end)||r&&o.isEqual(e.end))}(e,t))).map((t=>t.name))}}})(),(window.CKEditor5=window.CKEditor5||{}).htmlSupport=o})(); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/image/image.js b/web/core/assets/vendor/ckeditor5/image/image.js index 86bf90c29fa389a1eccfceabc5511c813126cbbf..47bad8f405bf749adadded04117f63d1399b18a0 100644 --- a/web/core/assets/vendor/ckeditor5/image/image.js +++ b/web/core/assets/vendor/ckeditor5/image/image.js @@ -2,4 +2,4 @@ /*! * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md. - */(()=>{var e={540:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck-content .image{clear:both;display:table;margin:.9em auto;min-width:50px;text-align:center}.ck-content .image img{display:block;margin:0 auto;max-width:100%;min-width:100%}.ck-content .image-inline{align-items:flex-start;display:inline-flex;max-width:100%}.ck-content .image-inline picture{display:flex}.ck-content .image-inline img,.ck-content .image-inline picture{flex-grow:1;flex-shrink:1;max-width:100%}.ck.ck-editor__editable .image>figcaption.ck-placeholder:before{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}.ck.ck-editor__editable .image-inline.ck-widget_selected,.ck.ck-editor__editable .image.ck-widget_selected{z-index:1}.ck.ck-editor__editable .image-inline.ck-widget_selected ::selection{display:none}.ck.ck-editor__editable td .image-inline img,.ck.ck-editor__editable th .image-inline img{max-width:none}",""]);const a=o},560:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,":root{--ck-color-image-caption-background:#f7f7f7;--ck-color-image-caption-text:#333;--ck-color-image-caption-highligted-background:#fd0}.ck-content .image>figcaption{background-color:var(--ck-color-image-caption-background);caption-side:bottom;color:var(--ck-color-image-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;word-break:break-word}.ck.ck-editor__editable .image>figcaption.image__caption_highlighted{animation:ck-image-caption-highlight .6s ease-out}@keyframes ck-image-caption-highlight{0%{background-color:var(--ck-color-image-caption-highligted-background)}to{background-color:var(--ck-color-image-caption-background)}}",""]);const a=o},91:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-image-insert__panel{padding:var(--ck-spacing-large)}.ck.ck-image-insert__ck-finder-button{border:1px solid #ccc;border-radius:var(--ck-border-radius);display:block;margin:var(--ck-spacing-standard) auto;width:100%}.ck.ck-splitbutton>.ck-file-dialog-button.ck-button{border:none;margin:0;padding:0}",""]);const a=o},439:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-image-insert-form:focus{outline:none}.ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-image-insert-form__action-row{margin-top:var(--ck-spacing-standard)}.ck.ck-form__row.ck-image-insert-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-image-insert-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row.ck-image-insert-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}",""]);const a=o},601:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck-content .image.image_resized{box-sizing:border-box;display:block;max-width:100%}.ck-content .image.image_resized img{width:100%}.ck-content .image.image_resized>figcaption{display:block}.ck.ck-editor__editable td .image-inline.image_resized img,.ck.ck-editor__editable th .image-inline.image_resized img{max-width:100%}[dir=ltr] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{margin-left:var(--ck-spacing-standard)}.ck.ck-dropdown .ck-button.ck-resize-image-button .ck-button__label{width:4em}",""]);const a=o},29:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,":root{--ck-image-style-spacing:1.5em;--ck-inline-image-style-spacing:calc(var(--ck-image-style-spacing)/2)}.ck-content .image-style-block-align-left,.ck-content .image-style-block-align-right{max-width:calc(100% - var(--ck-image-style-spacing))}.ck-content .image-style-align-left,.ck-content .image-style-align-right{clear:none}.ck-content .image-style-side{float:right;margin-left:var(--ck-image-style-spacing);max-width:50%}.ck-content .image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image-style-align-center{margin-left:auto;margin-right:auto}.ck-content .image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}.ck-content .image-style-block-align-right{margin-left:auto;margin-right:0}.ck-content .image-style-block-align-left{margin-left:0;margin-right:auto}.ck-content p+.image-style-align-left,.ck-content p+.image-style-align-right,.ck-content p+.image-style-side{margin-top:0}.ck-content .image-inline.image-style-align-left,.ck-content .image-inline.image-style-align-right{margin-bottom:var(--ck-inline-image-style-spacing);margin-top:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-left{margin-right:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-right{margin-left:var(--ck-inline-image-style-spacing)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-background)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after{display:none}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-hover-background)}",""]);const a=o},948:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck-image-upload-complete-icon{border-radius:50%;display:block;position:absolute;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);z-index:1}.ck-image-upload-complete-icon:after{content:"";position:absolute}:root{--ck-color-image-upload-icon:#fff;--ck-color-image-upload-icon-background:#008a00;--ck-image-upload-icon-size:20;--ck-image-upload-icon-width:2px;--ck-image-upload-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck-image-upload-complete-icon{animation-delay:0ms,3s;animation-duration:.5s,.5s;animation-fill-mode:forwards,forwards;animation-name:ck-upload-complete-icon-show,ck-upload-complete-icon-hide;background:var(--ck-color-image-upload-icon-background);font-size:calc(1px*var(--ck-image-upload-icon-size));height:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size));opacity:0;overflow:hidden;width:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size))}.ck-image-upload-complete-icon:after{animation-delay:.5s;animation-duration:.5s;animation-fill-mode:forwards;animation-name:ck-upload-complete-icon-check;border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);box-sizing:border-box;height:0;left:25%;opacity:0;top:50%;transform:scaleX(-1) rotate(135deg);transform-origin:left top;width:0}@keyframes ck-upload-complete-icon-show{0%{opacity:0}to{opacity:1}}@keyframes ck-upload-complete-icon-hide{0%{opacity:1}to{opacity:0}}@keyframes ck-upload-complete-icon-check{0%{height:0;opacity:1;width:0}33%{height:0;width:.3em}to{height:.45em;opacity:1;width:.3em}}',""]);const a=o},467:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck .ck-upload-placeholder-loader{align-items:center;display:flex;justify-content:center;left:0;position:absolute;top:0}.ck .ck-upload-placeholder-loader:before{content:"";position:relative}:root{--ck-color-upload-placeholder-loader:#b3b3b3;--ck-upload-placeholder-loader-size:32px;--ck-upload-placeholder-image-aspect-ratio:2.8}.ck .ck-image-upload-placeholder{margin:0;width:100%}.ck .ck-image-upload-placeholder.image-inline{width:calc(var(--ck-upload-placeholder-loader-size)*2*var(--ck-upload-placeholder-image-aspect-ratio))}.ck .ck-image-upload-placeholder img{aspect-ratio:var(--ck-upload-placeholder-image-aspect-ratio)}.ck .ck-upload-placeholder-loader{height:100%;width:100%}.ck .ck-upload-placeholder-loader:before{animation:ck-upload-placeholder-loader 1s linear infinite;border-radius:50%;border-right:2px solid transparent;border-top:3px solid var(--ck-color-upload-placeholder-loader);height:var(--ck-upload-placeholder-loader-size);width:var(--ck-upload-placeholder-loader-size)}@keyframes ck-upload-placeholder-loader{to{transform:rotate(1turn)}}',""]);const a=o},271:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-editor__editable .image,.ck.ck-editor__editable .image-inline{position:relative}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{left:0;position:absolute;top:0}.ck.ck-editor__editable .image-inline.ck-appear,.ck.ck-editor__editable .image.ck-appear{animation:fadeIn .7s}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{background:var(--ck-color-upload-bar-background);height:2px;transition:width .1s;width:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}",""]);const a=o},168:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-text-alternative-form{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-text-alternative-form .ck-labeled-field-view{display:inline-block}.ck.ck-text-alternative-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-text-alternative-form{flex-wrap:wrap}.ck.ck-text-alternative-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-text-alternative-form .ck-button{flex-basis:50%}}",""]);const a=o},764:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck-vertical-form .ck-button:after{bottom:var(--ck-spacing-small);content:"";position:absolute;right:-1px;top:var(--ck-spacing-small);width:0;z-index:1}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{bottom:var(--ck-spacing-small);content:"";position:absolute;right:-1px;top:var(--ck-spacing-small);width:0;z-index:1}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-large)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-width)*.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){border:0;border-radius:0;border-top:1px solid var(--ck-color-base-border);margin-top:var(--ck-spacing-large);padding:var(--ck-spacing-standard)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after,[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}',""]);const a=o},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=e(t);return t[2]?"@media ".concat(t[2]," {").concat(i,"}"):i})).join("")},t.i=function(e,i,n){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(n)for(var a=0;a<this.length;a++){var s=this[a][0];null!=s&&(o[s]=!0)}for(var r=0;r<e.length;r++){var l=[].concat(e[r]);n&&o[l[0]]||(i&&(l[2]?l[2]="".concat(i," and ").concat(l[2]):l[2]=i),t.push(l))}},t}},62:(e,t,i)=>{"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},a=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),s=[];function r(e){for(var t=-1,i=0;i<s.length;i++)if(s[i].identifier===e){t=i;break}return t}function l(e,t){for(var i={},n=[],o=0;o<e.length;o++){var a=e[o],l=t.base?a[0]+t.base:a[0],c=i[l]||0,g="".concat(l," ").concat(c);i[l]=c+1;var d=r(g),m={css:a[1],media:a[2],sourceMap:a[3]};-1!==d?(s[d].references++,s[d].updater(m)):s.push({identifier:g,updater:f(m,t),references:1}),n.push(g)}return n}function c(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var o=i.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var s=a(e.insert||"head");if(!s)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");s.appendChild(t)}return t}var g,d=(g=[],function(e,t){return g[e]=t,g.filter(Boolean).join("\n")});function m(e,t,i,n){var o=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=d(t,o);else{var a=document.createTextNode(o),s=e.childNodes;s[t]&&e.removeChild(s[t]),s.length?e.insertBefore(a,s[t]):e.appendChild(a)}}function u(e,t,i){var n=i.css,o=i.media,a=i.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),a&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var p=null,h=0;function f(e,t){var i,n,o;if(t.singleton){var a=h++;i=p||(p=c(t)),n=m.bind(null,i,a,!1),o=m.bind(null,i,a,!0)}else i=c(t),n=u.bind(null,i,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(i)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var i=l(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<i.length;n++){var o=r(i[n]);s[o].references--}for(var a=l(e,t),c=0;c<i.length;c++){var g=r(i[c]);0===s[g].references&&(s[g].updater(),s.splice(g,1))}i=a}}}},945:(e,t,i)=>{e.exports=i(79)("./src/clipboard.js")},704:(e,t,i)=>{e.exports=i(79)("./src/core.js")},492:(e,t,i)=>{e.exports=i(79)("./src/engine.js")},181:(e,t,i)=>{e.exports=i(79)("./src/typing.js")},273:(e,t,i)=>{e.exports=i(79)("./src/ui.js")},254:(e,t,i)=>{e.exports=i(79)("./src/undo.js")},448:(e,t,i)=>{e.exports=i(79)("./src/upload.js")},209:(e,t,i)=>{e.exports=i(79)("./src/utils.js")},995:(e,t,i)=>{e.exports=i(79)("./src/widget.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={id:n,exports:{}};return e[n](a,a.exports,i),a.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{AutoImage:()=>h,Image:()=>j,ImageCaption:()=>K,ImageCaptionEditing:()=>q,ImageCaptionUtils:()=>M,ImageEditing:()=>R,ImageInsert:()=>xe,ImageInsertUI:()=>_e,ImageResize:()=>Oe,ImageResizeButtons:()=>Te,ImageResizeEditing:()=>Se,ImageResizeHandles:()=>Re,ImageStyle:()=>st,ImageStyleEditing:()=>Qe,ImageStyleUI:()=>it,ImageTextAlternative:()=>A,ImageTextAlternativeEditing:()=>b,ImageTextAlternativeUI:()=>S,ImageToolbar:()=>rt,ImageUpload:()=>he,ImageUploadEditing:()=>ue,ImageUploadProgress:()=>se,ImageUploadUI:()=>Y,PictureEditing:()=>lt});var e=i(704),t=i(945),o=i(492),a=i(254),s=i(181),r=i(209),l=i(995);function c(e){return e.createContainerElement("figure",{class:"image"},[e.createEmptyElement("img"),e.createSlot()])}function g(e,t){const i=e.plugins.get("ImageUtils"),n=e.plugins.has("ImageInlineEditing")&&e.plugins.has("ImageBlockEditing");return e=>{if(!i.isInlineImageView(e))return null;if(!n)return o(e);return(e.findAncestor(i.isBlockImageView)?"imageBlock":"imageInline")!==t?null:o(e)};function o(e){const t={name:!0};return e.hasAttribute("src")&&(t.attributes=["src"]),t}}function d(e,t){const i=(0,r.first)(t.getSelectedBlocks());return!i||e.isObject(i)||i.isEmpty&&"listItem"!=i.name?"imageBlock":"imageInline"}class m extends e.Plugin{static get pluginName(){return"ImageUtils"}isImage(e){return this.isInlineImage(e)||this.isBlockImage(e)}isInlineImageView(e){return!!e&&e.is("element","img")}isBlockImageView(e){return!!e&&e.is("element","figure")&&e.hasClass("image")}insertImage(e={},t=null,i=null){const n=this.editor,o=n.model,a=o.document.selection;i=u(n,t||a,i),e={...Object.fromEntries(a.getAttributes()),...e};for(const t in e)o.schema.checkAttribute(i,t)||delete e[t];return o.change((n=>{const a=n.createElement(i,e);return o.insertObject(a,t,null,{setSelection:"on",findOptimalPosition:!t&&"imageInline"!=i}),a.parent?a:null}))}getClosestSelectedImageWidget(e){const t=e.getFirstPosition();if(!t)return null;const i=e.getSelectedElement();if(i&&this.isImageWidget(i))return i;let n=t.parent;for(;n;){if(n.is("element")&&this.isImageWidget(n))return n;n=n.parent}return null}getClosestSelectedImageElement(e){const t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}isImageAllowed(){const e=this.editor.model.document.selection;return function(e,t){if("imageBlock"==u(e,t)){const i=function(e,t){const i=(0,l.findOptimalInsertionRange)(e,t).start.parent;if(i.isEmpty&&!i.is("element","$root"))return i.parent;return i}(t,e.model);if(e.model.schema.checkChild(i,"imageBlock"))return!0}else if(e.model.schema.checkChild(t.focus,"imageInline"))return!0;return!1}(this.editor,e)&&function(e){return[...e.focus.getAncestors()].every((e=>!e.is("element","imageBlock")))}(e)}toImageWidget(e,t,i){t.setCustomProperty("image",!0,e);return(0,l.toWidget)(e,t,{label:()=>{const t=this.findViewImgElement(e).getAttribute("alt");return t?`${t} ${i}`:i}})}isImageWidget(e){return!!e.getCustomProperty("image")&&(0,l.isWidget)(e)}isBlockImage(e){return!!e&&e.is("element","imageBlock")}isInlineImage(e){return!!e&&e.is("element","imageInline")}findViewImgElement(e){if(this.isInlineImageView(e))return e;const t=this.editor.editing.view;for(const{item:i}of t.createRangeIn(e))if(this.isInlineImageView(i))return i}}function u(e,t,i){const n=e.model.schema,o=e.config.get("image.insert.type");return e.plugins.has("ImageBlockEditing")?e.plugins.has("ImageInlineEditing")?i||("inline"===o?"imageInline":"block"===o?"imageBlock":t.is("selection")?d(n,t):n.checkChild(t,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}const p=new RegExp(String(/^(http(s)?:\/\/)?[\w-]+\.[\w.~:/[\]@!$&'()*+,;=%-]+/.source+/\.(jpg|jpeg|png|gif|ico|webp|JPG|JPEG|PNG|GIF|ICO|WEBP)/.source+/(\?[\w.~:/[\]@!$&'()*+,;=%-]*)?/.source+/(#[\w.~:/[\]@!$&'()*+,;=%-]*)?$/.source));class h extends e.Plugin{static get requires(){return[t.Clipboard,m,a.Undo,s.Delete]}static get pluginName(){return"AutoImage"}constructor(e){super(e),this._timeoutId=null,this._positionToInsert=null}init(){const e=this.editor,t=e.model.document;this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(()=>{const e=t.selection.getFirstRange(),i=o.LivePosition.fromPosition(e.start);i.stickiness="toPrevious";const n=o.LivePosition.fromPosition(e.end);n.stickiness="toNext",t.once("change:data",(()=>{this._embedImageBetweenPositions(i,n),i.detach(),n.detach()}),{priority:"high"})})),e.commands.get("undo").on("execute",(()=>{this._timeoutId&&(r.global.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)}),{priority:"high"})}_embedImageBetweenPositions(e,t){const i=this.editor,n=new o.LiveRange(e,t),a=n.getWalker({ignoreElementEnd:!0}),s=Object.fromEntries(i.model.document.selection.getAttributes()),l=this.editor.plugins.get("ImageUtils");let c="";for(const e of a)e.item.is("$textProxy")&&(c+=e.item.data);c=c.trim(),c.match(p)?(this._positionToInsert=o.LivePosition.fromPosition(e),this._timeoutId=r.global.window.setTimeout((()=>{i.commands.get("insertImage").isEnabled?(i.model.change((e=>{let t;this._timeoutId=null,e.remove(n),n.detach(),"$graveyard"!==this._positionToInsert.root.rootName&&(t=this._positionToInsert.toPosition()),l.insertImage({...s,src:c},t),this._positionToInsert.detach(),this._positionToInsert=null})),i.plugins.get("Delete").requestUndoOnBackspace()):n.detach()}),100)):n.detach()}}class f extends e.Command{refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled&&e.hasAttribute("alt")?this.value=e.getAttribute("alt"):this.value=!1}execute(e){const t=this.editor,i=t.plugins.get("ImageUtils"),n=t.model,o=i.getClosestSelectedImageElement(n.document.selection);n.change((t=>{t.setAttribute("alt",e.newValue,o)}))}}class b extends e.Plugin{static get requires(){return[m]}static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new f(this.editor))}}var k=i(273),w=i(62),I=i.n(w),v=i(168),y={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(v.Z,y);v.Z.locals;var _=i(764),E={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(_.Z,E);_.Z.locals;class x extends k.View{constructor(t){super(t);const i=this.locale.t;this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(i("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(i("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._focusables=new k.ViewCollection,this._focusCycler=new k.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),(0,k.injectCssTransitionDisabler)(this)}render(){super.render(),this.keystrokes.listenTo(this.element),(0,k.submitHandler)({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createButton(e,t,i,n){const o=new k.ButtonView(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createLabeledInputView(){const e=this.locale.t,t=new k.LabeledFieldView(this.locale,k.createLabeledInputText);return t.label=e("Text alternative"),t}}function C(e){const t=e.editing.view,i=k.BalloonPanelView.defaultPositions,n=e.plugins.get("ImageUtils");return{target:t.domConverter.mapViewToDom(n.getClosestSelectedImageWidget(t.document.selection)),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast,i.viewportStickyNorth]}}class S extends e.Plugin{static get requires(){return[k.ContextualBalloon]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor,i=t.t;t.ui.componentFactory.add("imageTextAlternative",(n=>{const o=t.commands.get("imageTextAlternative"),a=new k.ButtonView(n);return a.set({label:i("Change image text alternative"),icon:e.icons.lowVision,tooltip:!0}),a.bind("isEnabled").to(o,"isEnabled"),this.listenTo(a,"execute",(()=>{this._showForm()})),a}))}_createForm(){const e=this.editor,t=e.editing.view.document,i=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new x(e.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{e.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((e,t)=>{this._hideForm(!0),t()})),this.listenTo(e.ui,"update",(()=>{i.getClosestSelectedImageWidget(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(e.plugins.get("ImageUtils").getClosestSelectedImageWidget(e.editing.view.document.selection)){const i=C(e);t.updatePosition(i)}}(e):this._hideForm(!0)})),(0,k.clickOutsideHandler)({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("imageTextAlternative"),i=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:C(e)}),i.fieldView.value=i.fieldView.element.value=t.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class A extends e.Plugin{static get requires(){return[b,S]}static get pluginName(){return"ImageTextAlternative"}}function T(e,t){return e=>{e.on(`attribute:srcset:${t}`,i)};function i(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,a=n.mapper.toViewElement(i.item),s=e.findViewImgElement(a);if(null===i.attributeNewValue){const e=i.attributeOldValue;e.data&&(o.removeAttribute("srcset",s),o.removeAttribute("sizes",s),e.width&&o.removeAttribute("width",s))}else{const e=i.attributeNewValue;e.data&&(o.setAttribute("srcset",e.data,s),o.setAttribute("sizes","100vw",s),e.width&&o.setAttribute("width",e.width,s))}}}function B(e,t,i){return e=>{e.on(`attribute:${i}:${t}`,n)};function n(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,a=n.mapper.toViewElement(i.item),s=e.findViewImgElement(a);o.setAttribute(i.attributeKey,i.attributeNewValue||"",s)}}class V extends o.Observer{observe(e){this.listenTo(e,"load",((e,t)=>{const i=t.target;this.checkShouldIgnoreEventFromTarget(i)||"IMG"==i.tagName&&this._fireEvents(t)}),{useCapture:!0})}_fireEvents(e){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",e))}}class U extends e.Command{constructor(e){super(e);const t=e.config.get("image.insert.type");e.plugins.has("ImageBlockEditing")||"block"===t&&(0,r.logWarning)("image-block-plugin-required"),e.plugins.has("ImageInlineEditing")||"inline"===t&&(0,r.logWarning)("image-inline-plugin-required")}refresh(){this.isEnabled=this.editor.plugins.get("ImageUtils").isImageAllowed()}execute(e){const t=(0,r.toArray)(e.source),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach(((e,t)=>{const a=i.getSelectedElement();if("string"==typeof e&&(e={src:e}),t&&a&&n.isImage(a)){const t=this.editor.model.createPositionAfter(a);n.insertImage({...e,...o},t)}else n.insertImage({...e,...o})}))}}class R extends e.Plugin{static get requires(){return[m]}static get pluginName(){return"ImageEditing"}init(){const e=this.editor,t=e.conversion;e.editing.view.addObserver(V),t.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:{key:"srcset",value:e=>{const t={data:e.getAttribute("srcset")};return e.hasAttribute("width")&&(t.width=e.getAttribute("width")),t}}});const i=new U(e);e.commands.add("insertImage",i),e.commands.add("imageInsert",i)}}class z extends e.Command{constructor(e,t){super(e),this._modelElementName=t}refresh(){const e=this.editor.plugins.get("ImageUtils"),t=e.getClosestSelectedImageElement(this.editor.model.document.selection);"imageBlock"===this._modelElementName?this.isEnabled=e.isInlineImage(t):this.isEnabled=e.isBlockImage(t)}execute(){const e=this.editor,t=this.editor.model,i=e.plugins.get("ImageUtils"),n=i.getClosestSelectedImageElement(t.document.selection),o=Object.fromEntries(n.getAttributes());return o.src||o.uploadId?t.change((e=>{const a=Array.from(t.markers).filter((e=>e.getRange().containsItem(n))),s=i.insertImage(o,t.createSelection(n,"on"),this._modelElementName);if(!s)return null;const r=e.createRangeOn(s);for(const t of a){const i=t.getRange(),n="$graveyard"!=i.root.rootName?i.getJoined(r,!0):r;e.updateMarker(t,{range:n})}return{oldElement:n,newElement:s}})):null}}class P extends e.Plugin{static get requires(){return[R,m,t.ClipboardPipeline]}static get pluginName(){return"ImageBlockEditing"}init(){const e=this.editor;e.model.schema.register("imageBlock",{inheritAllFrom:"$blockObject",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),e.plugins.has("ImageInlineEditing")&&(e.commands.add("imageTypeBlock",new z(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToStructure({model:"imageBlock",view:(e,{writer:t})=>c(t)}),i.for("editingDowncast").elementToStructure({model:"imageBlock",view:(e,{writer:i})=>n.toImageWidget(c(i),i,t("image widget"))}),i.for("downcast").add(B(n,"imageBlock","src")).add(B(n,"imageBlock","alt")).add(T(n,"imageBlock")),i.for("upcast").elementToElement({view:g(e,"imageBlock"),model:(e,{writer:t})=>t.createElement("imageBlock",e.hasAttribute("src")?{src:e.getAttribute("src")}:null)}).add(function(e){return e=>{e.on("element:figure",t)};function t(t,i,n){if(!n.consumable.test(i.viewItem,{name:!0,classes:"image"}))return;const o=e.findViewImgElement(i.viewItem);if(!o||!n.consumable.test(o,{name:!0}))return;n.consumable.consume(i.viewItem,{name:!0,classes:"image"});const a=n.convertItem(o,i.modelCursor),s=(0,r.first)(a.modelRange.getItems());s?(n.convertChildren(i.viewItem,s),n.updateConversionResult(s,i)):n.consumable.revert(i.viewItem,{name:!0,classes:"image"})}}(n))}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",((a,s)=>{const r=Array.from(s.content.getChildren());let l;if(!r.every(n.isInlineImageView))return;l=s.targetRanges?e.editing.mapper.toModelRange(s.targetRanges[0]):t.document.selection.getFirstRange();const c=t.createSelection(l);if("imageBlock"===d(t.schema,c)){const e=new o.UpcastWriter(i.document),t=r.map((t=>e.createElement("figure",{class:"image"},t)));s.content=e.createDocumentFragment(t)}}))}}var O=i(540),N={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(O.Z,N);O.Z.locals;class F extends e.Plugin{static get requires(){return[P,l.Widget,A]}static get pluginName(){return"ImageBlock"}}class L extends e.Plugin{static get requires(){return[R,m,t.ClipboardPipeline]}static get pluginName(){return"ImageInlineEditing"}init(){const e=this.editor,t=e.model.schema;t.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"]}),t.addChildCheck(((e,t)=>{if(e.endsWith("caption")&&"imageInline"===t.name)return!1})),this._setupConversion(),e.plugins.has("ImageBlockEditing")&&(e.commands.add("imageTypeInline",new z(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageInline",view:(e,{writer:t})=>t.createEmptyElement("img")}),i.for("editingDowncast").elementToStructure({model:"imageInline",view:(e,{writer:i})=>n.toImageWidget(function(e){return e.createContainerElement("span",{class:"image-inline"},e.createEmptyElement("img"))}(i),i,t("image widget"))}),i.for("downcast").add(B(n,"imageInline","src")).add(B(n,"imageInline","alt")).add(T(n,"imageInline")),i.for("upcast").elementToElement({view:g(e,"imageInline"),model:(e,{writer:t})=>t.createElement("imageInline",e.hasAttribute("src")?{src:e.getAttribute("src")}:null)})}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",((a,s)=>{const r=Array.from(s.content.getChildren());let l;if(!r.every(n.isBlockImageView))return;l=s.targetRanges?e.editing.mapper.toModelRange(s.targetRanges[0]):t.document.selection.getFirstRange();const c=t.createSelection(l);if("imageInline"===d(t.schema,c)){const e=new o.UpcastWriter(i.document),t=r.map((t=>1===t.childCount?(Array.from(t.getAttributes()).forEach((i=>e.setAttribute(...i,n.findViewImgElement(t)))),t.getChild(0)):t));s.content=e.createDocumentFragment(t)}}))}}class D extends e.Plugin{static get requires(){return[L,l.Widget,A]}static get pluginName(){return"ImageInline"}}class j extends e.Plugin{static get requires(){return[F,D]}static get pluginName(){return"Image"}}class M extends e.Plugin{static get pluginName(){return"ImageCaptionUtils"}static get requires(){return[m]}getCaptionFromImageModelElement(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}getCaptionFromModelSelection(e){const t=this.editor.plugins.get("ImageUtils"),i=e.getFirstPosition().findAncestor("caption");return i&&t.isBlockImage(i.parent)?i:null}matchImageCaptionViewElement(e){const t=this.editor.plugins.get("ImageUtils");return"figcaption"==e.name&&t.isBlockImageView(e.parent)?{name:!0}:null}}class W extends e.Command{refresh(){const e=this.editor,t=e.plugins.get("ImageCaptionUtils");if(!e.plugins.has(P))return this.isEnabled=!1,void(this.value=!1);const i=e.model.document.selection,n=i.getSelectedElement();if(!n){const e=t.getCaptionFromModelSelection(i);return this.isEnabled=!!e,void(this.value=!!e)}this.isEnabled=this.editor.plugins.get("ImageUtils").isImage(n),this.isEnabled?this.value=!!t.getCaptionFromImageModelElement(n):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change((e=>{this.value?this._hideImageCaption(e):this._showImageCaption(e,t)}))}_showImageCaption(e,t){const i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageCaptionEditing");let o=i.getSelectedElement();const a=n._getSavedCaption(o);this.editor.plugins.get("ImageUtils").isInlineImage(o)&&(this.editor.execute("imageTypeBlock"),o=i.getSelectedElement());const s=a||e.createElement("caption");e.append(s,o),t&&e.setSelection(s,"in")}_hideImageCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("ImageCaptionEditing"),o=t.plugins.get("ImageCaptionUtils");let a,s=i.getSelectedElement();s?a=o.getCaptionFromImageModelElement(s):(a=o.getCaptionFromModelSelection(i),s=a.parent),n._saveCaption(s,a),e.setSelection(s,"on"),e.remove(a)}}class q extends e.Plugin{static get requires(){return[m,M]}static get pluginName(){return"ImageCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"imageBlock"}):t.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleImageCaption",new W(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.plugins.get("ImageCaptionUtils"),a=e.t;e.conversion.for("upcast").elementToElement({view:e=>n.matchImageCaptionViewElement(e),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>i.isBlockImage(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:n})=>{if(!i.isBlockImage(e.parent))return null;const s=n.createEditableElement("figcaption");n.setCustomProperty("imageCaption",!0,s),(0,o.enablePlaceholder)({view:t,element:s,text:a("Enter image caption"),keepOnFocus:!0});const r=e.parent.getAttribute("alt"),c=r?a("Caption for image: %0",[r]):a("Caption for the image");return(0,l.toWidgetEditable)(s,n,{label:c})}})}_setupImageTypeCommandsIntegration(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.plugins.get("ImageCaptionUtils"),n=e.commands.get("imageTypeInline"),o=e.commands.get("imageTypeBlock"),a=e=>{if(!e.return)return;const{oldElement:n,newElement:o}=e.return;if(!n)return;if(t.isBlockImage(n)){const e=i.getCaptionFromImageModelElement(n);if(e)return void this._saveCaption(o,e)}const a=this._getSavedCaption(n);a&&this._saveCaption(o,a)};n&&this.listenTo(n,"execute",a,{priority:"low"}),o&&this.listenTo(o,"execute",a,{priority:"low"})}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?o.Element.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}_registerCaptionReconversion(){const e=this.editor,t=e.model,i=e.plugins.get("ImageUtils"),n=e.plugins.get("ImageCaptionUtils");t.document.on("change:data",(()=>{const o=t.document.differ.getChanges();for(const t of o){if("alt"!==t.attributeKey)continue;const o=t.range.start.nodeAfter;if(i.isBlockImage(o)){const t=n.getCaptionFromImageModelElement(o);if(!t)return;e.editing.reconvertItem(t)}}}))}}class Z extends e.Plugin{static get requires(){return[M]}static get pluginName(){return"ImageCaptionUI"}init(){const t=this.editor,i=t.editing.view,n=t.plugins.get("ImageCaptionUtils"),o=t.t;t.ui.componentFactory.add("toggleImageCaption",(a=>{const s=t.commands.get("toggleImageCaption"),r=new k.ButtonView(a);return r.set({icon:e.icons.caption,tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(s,"value","isEnabled"),r.bind("label").to(s,"value",(e=>o(e?"Toggle caption off":"Toggle caption on"))),this.listenTo(r,"execute",(()=>{t.execute("toggleImageCaption",{focusCaptionOnShow:!0});const e=n.getCaptionFromModelSelection(t.model.document.selection);if(e){const n=t.editing.mapper.toViewElement(e);i.scrollToTheSelection(),i.change((e=>{e.addClass("image__caption_highlighted",n)}))}})),r}))}}var $=i(560),H={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()($.Z,H);$.Z.locals;class K extends e.Plugin{static get requires(){return[q,Z]}static get pluginName(){return"ImageCaption"}}var G=i(448);function J(e){const t=e.map((e=>e.replace("+","\\+")));return new RegExp(`^image\\/(${t.join("|")})$`)}function Q(e){return new Promise(((t,i)=>{const n=e.getAttribute("src");fetch(n).then((e=>e.blob())).then((e=>{const i=X(e,n),o=i.replace("image/",""),a=new File([e],`image.${o}`,{type:i});t(a)})).catch((e=>e&&"TypeError"===e.name?function(e){return function(e){return new Promise(((t,i)=>{const n=r.global.document.createElement("img");n.addEventListener("load",(()=>{const e=r.global.document.createElement("canvas");e.width=n.width,e.height=n.height;e.getContext("2d").drawImage(n,0,0),e.toBlob((e=>e?t(e):i()))})),n.addEventListener("error",(()=>i())),n.src=e}))}(e).then((t=>{const i=X(t,e),n=i.replace("image/","");return new File([t],`image.${n}`,{type:i})}))}(n).then(t).catch(i):i(e)))}))}function X(e,t){return e.type?e.type:t.match(/data:(image\/\w+);base64/)?t.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class Y extends e.Plugin{static get pluginName(){return"ImageUploadUI"}init(){const t=this.editor,i=t.t,n=n=>{const o=new G.FileDialogButtonView(n),a=t.commands.get("uploadImage"),s=t.config.get("image.upload.types"),r=J(s);return o.set({acceptedType:s.map((e=>`image/${e}`)).join(","),allowMultipleFiles:!0}),o.buttonView.set({label:i("Insert image"),icon:e.icons.image,tooltip:!0}),o.buttonView.bind("isEnabled").to(a),o.on("done",((e,i)=>{const n=Array.from(i).filter((e=>r.test(e.type)));n.length&&t.execute("uploadImage",{file:n})})),o};t.ui.componentFactory.add("uploadImage",n),t.ui.componentFactory.add("imageUpload",n)}}var ee=i(271),te={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(ee.Z,te);ee.Z.locals;var ie=i(948),ne={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(ie.Z,ne);ie.Z.locals;var oe=i(467),ae={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(oe.Z,ae);oe.Z.locals;class se extends e.Plugin{static get pluginName(){return"ImageUploadProgress"}constructor(e){super(e),this.placeholder="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}init(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",((...e)=>this.uploadStatusChange(...e))),e.plugins.has("ImageInlineEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",((...e)=>this.uploadStatusChange(...e)))}uploadStatusChange(e,t,i){const n=this.editor,o=t.item,a=o.getAttribute("uploadId");if(!i.consumable.consume(t.item,e.name))return;const s=n.plugins.get("ImageUtils"),r=n.plugins.get(G.FileRepository),l=a?t.attributeNewValue:null,c=this.placeholder,g=n.editing.mapper.toViewElement(o),d=i.writer;if("reading"==l)return re(g,d),void le(s,c,g,d);if("uploading"==l){const e=r.loaders.get(a);return re(g,d),void(e?(ce(g,d),function(e,t,i,n){const o=function(e){const t=e.createUIElement("div",{class:"ck-progress-bar"});return e.setCustomProperty("progressBar",!0,t),t}(t);t.insert(t.createPositionAt(e,"end"),o),i.on("change:uploadedPercent",((e,t,i)=>{n.change((e=>{e.setStyle("width",i+"%",o)}))}))}(g,d,e,n.editing.view),function(e,t,i,n){if(n.data){const o=e.findViewImgElement(t);i.setAttribute("src",n.data,o)}}(s,g,d,e)):le(s,c,g,d))}"complete"==l&&r.loaders.get(a)&&function(e,t,i){const n=t.createUIElement("div",{class:"ck-image-upload-complete-icon"});t.insert(t.createPositionAt(e,"end"),n),setTimeout((()=>{i.change((e=>e.remove(e.createRangeOn(n))))}),3e3)}(g,d,n.editing.view),function(e,t){de(e,t,"progressBar")}(g,d),ce(g,d),function(e,t){t.removeClass("ck-appear",e)}(g,d)}}function re(e,t){e.hasClass("ck-appear")||t.addClass("ck-appear",e)}function le(e,t,i,n){i.hasClass("ck-image-upload-placeholder")||n.addClass("ck-image-upload-placeholder",i);const o=e.findViewImgElement(i);o.getAttribute("src")!==t&&n.setAttribute("src",t,o),ge(i,"placeholder")||n.insert(n.createPositionAfter(o),function(e){const t=e.createUIElement("div",{class:"ck-upload-placeholder-loader"});return e.setCustomProperty("placeholder",!0,t),t}(n))}function ce(e,t){e.hasClass("ck-image-upload-placeholder")&&t.removeClass("ck-image-upload-placeholder",e),de(e,t,"placeholder")}function ge(e,t){for(const i of e.getChildren())if(i.getCustomProperty(t))return i}function de(e,t,i){const n=ge(e,i);n&&t.remove(t.createRangeOn(n))}class me extends e.Command{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.model.document.selection.getSelectedElement();this.isEnabled=t.isImageAllowed()||t.isImage(i)}execute(e){const t=(0,r.toArray)(e.file),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach(((e,t)=>{const a=i.getSelectedElement();if(t&&a&&n.isImage(a)){const t=this.editor.model.createPositionAfter(a);this._uploadImage(e,o,t)}else this._uploadImage(e,o)}))}_uploadImage(e,t,i){const n=this.editor,o=n.plugins.get(G.FileRepository).createLoader(e),a=n.plugins.get("ImageUtils");o&&a.insertImage({...t,uploadId:o.id},i)}}class ue extends e.Plugin{static get requires(){return[G.FileRepository,k.Notification,t.ClipboardPipeline,m]}static get pluginName(){return"ImageUploadEditing"}constructor(e){super(e),e.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const e=this.editor,t=e.model.document,i=e.conversion,n=e.plugins.get(G.FileRepository),a=e.plugins.get("ImageUtils"),s=J(e.config.get("image.upload.types")),r=new me(e);e.commands.add("uploadImage",r),e.commands.add("imageUpload",r),i.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(e.editing.view.document,"clipboardInput",((t,i)=>{if(n=i.dataTransfer,Array.from(n.types).includes("text/html")&&""!==n.getData("text/html"))return;var n;const o=Array.from(i.dataTransfer.files).filter((e=>!!e&&s.test(e.type)));o.length&&(t.stop(),e.model.change((t=>{i.targetRanges&&t.setSelection(i.targetRanges.map((t=>e.editing.mapper.toModelRange(t)))),e.model.enqueueChange((()=>{e.execute("uploadImage",{file:o})}))})))})),this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",((t,i)=>{const s=Array.from(e.editing.view.createRangeIn(i.content)).filter((e=>function(e,t){return!(!e.isInlineImageView(t)||!t.getAttribute("src"))&&(t.getAttribute("src").match(/^data:image\/\w+;base64,/g)||t.getAttribute("src").match(/^blob:/g))}(a,e.item)&&!e.item.getAttribute("uploadProcessed"))).map((e=>({promise:Q(e.item),imageElement:e.item})));if(!s.length)return;const r=new o.UpcastWriter(e.editing.view.document);for(const e of s){r.setAttribute("uploadProcessed",!0,e.imageElement);const t=n.createLoader(e.promise);t&&(r.setAttribute("src","",e.imageElement),r.setAttribute("uploadId",t.id,e.imageElement))}})),e.editing.view.document.on("dragover",((e,t)=>{t.preventDefault()})),t.on("change",(()=>{const i=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),o=new Set;for(const t of i)if("insert"==t.type&&"$text"!=t.name){const i=t.position.nodeAfter,a="$graveyard"==t.position.root.rootName;for(const t of pe(e,i)){const e=t.getAttribute("uploadId");if(!e)continue;const i=n.loaders.get(e);i&&(a?o.has(e)||i.abort():(o.add(e),this._uploadImageElements.set(e,t),"idle"==i.status&&this._readAndUpload(i)))}}})),this.on("uploadComplete",((e,{imageElement:t,data:i})=>{const n=i.urls?i.urls:i;this.editor.model.change((e=>{e.setAttribute("src",n.default,t),this._parseAndSetSrcsetAttributeOnImage(n,t,e)}))}),{priority:"low"})}afterInit(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&e.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this.editor.plugins.has("ImageInlineEditing")&&e.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]})}_readAndUpload(e){const t=this.editor,i=t.model,n=t.locale.t,o=t.plugins.get(G.FileRepository),a=t.plugins.get(k.Notification),s=t.plugins.get("ImageUtils"),l=this._uploadImageElements;return i.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("uploadStatus","reading",l.get(e.id))})),e.read().then((()=>{const n=e.upload(),o=l.get(e.id);if(r.env.isSafari){const e=t.editing.mapper.toViewElement(o),i=s.findViewImgElement(e);t.editing.view.once("render",(()=>{if(!i.parent)return;const e=t.editing.view.domConverter.mapViewToDom(i.parent);if(!e)return;const n=e.style.display;e.style.display="none",e._ckHack=e.offsetHeight,e.style.display=n}))}return i.enqueueChange({isUndoable:!1},(e=>{e.setAttribute("uploadStatus","uploading",o)})),n})).then((t=>{i.enqueueChange({isUndoable:!1},(i=>{const n=l.get(e.id);i.setAttribute("uploadStatus","complete",n),this.fire("uploadComplete",{data:t,imageElement:n})})),c()})).catch((t=>{if("error"!==e.status&&"aborted"!==e.status)throw t;"error"==e.status&&t&&a.showWarning(t,{title:n("Upload failed"),namespace:"upload"}),i.enqueueChange({isUndoable:!1},(t=>{t.remove(l.get(e.id))})),c()}));function c(){i.enqueueChange({isUndoable:!1},(t=>{const i=l.get(e.id);t.removeAttribute("uploadId",i),t.removeAttribute("uploadStatus",i),l.delete(e.id)})),o.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,i){let n=0;const o=Object.keys(e).filter((e=>{const t=parseInt(e,10);if(!isNaN(t))return n=Math.max(n,t),!0})).map((t=>`${e[t]} ${t}w`)).join(", ");""!=o&&i.setAttribute("srcset",{data:o,width:n},t)}}function pe(e,t){const i=e.plugins.get("ImageUtils");return Array.from(e.model.createRangeOn(t)).filter((e=>i.isImage(e.item))).map((e=>e.item))}class he extends e.Plugin{static get pluginName(){return"ImageUpload"}static get requires(){return[ue,Y,se]}}var fe=i(439),be={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(fe.Z,be);fe.Z.locals;class ke extends k.View{constructor(e,t={}){super(e);const i=this.bindTemplate;this.set("class",t.class||null),this.children=this.createCollection(),t.children&&t.children.forEach((e=>this.children.add(e))),this.set("_role",null),this.set("_ariaLabelledBy",null),t.labelView&&this.set({_role:"group",_ariaLabelledBy:t.labelView.id}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__row",i.to("class")],role:i.to("_role"),"aria-labelledby":i.to("_ariaLabelledBy")},children:this.children})}}var we=i(91),Ie={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(we.Z,Ie);we.Z.locals;class ve extends k.View{constructor(e,t){super(e);const{insertButtonView:i,cancelButtonView:n}=this._createActionButtons(e);if(this.insertButtonView=i,this.cancelButtonView=n,this.set("imageURLInputValue",""),this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this._focusables=new k.ViewCollection,this._focusCycler=new k.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.set("_integrations",new r.Collection),t)for(const[e,i]of Object.entries(t))"insertImageViaUrl"===e&&(i.fieldView.bind("value").to(this,"imageURLInputValue",(e=>e||"")),i.fieldView.on("input",(()=>{this.imageURLInputValue=i.fieldView.element.value.trim()}))),i.name=e,this._integrations.add(i);this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-form"],tabindex:"-1"},children:[...this._integrations,new ke(e,{children:[this.insertButtonView,this.cancelButtonView],class:"ck-image-insert-form__action-row"})]})}render(){super.render(),(0,k.submitHandler)({view:this});const e=[...this._integrations,this.insertButtonView,this.cancelButtonView];e.forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element);const t=e=>e.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t),this.listenTo(e[0].element,"selectstart",((e,t)=>{t.stopPropagation()}),{priority:"high"})}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}getIntegration(e){return this._integrations.find((t=>t.name===e))}_createActionButtons(t){const i=t.t,n=new k.ButtonView(t),o=new k.ButtonView(t);return n.set({label:i("Insert"),icon:e.icons.check,class:"ck-button-save",type:"submit",withText:!0,isEnabled:this.imageURLInputValue}),o.set({label:i("Cancel"),icon:e.icons.cancel,class:"ck-button-cancel",withText:!0}),n.bind("isEnabled").to(this,"imageURLInputValue",(e=>!!e)),n.delegate("execute").to(this,"submit"),o.delegate("execute").to(this,"cancel"),{insertButtonView:n,cancelButtonView:o}}focus(){this._focusCycler.focusFirst()}}function ye(e){const t=e.t,i=new k.LabeledFieldView(e,k.createLabeledInputText);return i.set({label:t("Insert image via URL")}),i.fieldView.placeholder="https://example.com/image.png",i}class _e extends e.Plugin{static get pluginName(){return"ImageInsertUI"}init(){const e=this.editor,t=e=>this._createDropdownView(e);e.ui.componentFactory.add("insertImage",t),e.ui.componentFactory.add("imageInsert",t)}_createDropdownView(t){const i=this.editor,n=t.t,o=i.commands.get("uploadImage"),a=i.commands.get("insertImage");this.dropdownView=(0,k.createDropdown)(t,o?k.SplitButtonView:void 0);const s=this.dropdownView.buttonView,r=this.dropdownView.panelView;if(s.set({label:n("Insert image"),icon:e.icons.image,tooltip:!0}),r.extendTemplate({attributes:{class:"ck-image-insert__panel"}}),o){const e=this.dropdownView.buttonView;e.actionView=i.ui.componentFactory.create("uploadImage"),e.actionView.extendTemplate({attributes:{class:"ck ck-button ck-splitbutton__action"}})}return this._setUpDropdown(o||a)}_setUpDropdown(e){const t=this.editor,i=t.t,n=new ve(t.locale,function(e){const t=e.config.get("image.insert.integrations"),i=e.plugins.get("ImageInsertUI"),n={insertImageViaUrl:ye(e.locale)};if(!t)return n;if(t.find((e=>"openCKFinder"===e))&&e.ui.componentFactory.has("ckfinder")){const t=e.ui.componentFactory.create("ckfinder");t.set({withText:!0,class:"ck-image-insert__ck-finder-button"}),t.delegate("execute").to(i,"cancel"),n.openCKFinder=t}return t.reduce(((t,i)=>(n[i]?t[i]=n[i]:e.ui.componentFactory.has(i)&&(t[i]=e.ui.componentFactory.create(i)),t)),{})}(t)),o=n.insertButtonView,a=n.getIntegration("insertImageViaUrl"),s=this.dropdownView,r=s.panelView,l=this.editor.plugins.get("ImageUtils");function c(){t.editing.view.focus(),s.isOpen=!1}return s.bind("isEnabled").to(e),s.buttonView.once("open",(()=>{r.children.add(n)})),s.on("change:isOpen",(()=>{const e=t.model.document.selection.getSelectedElement();s.isOpen&&(l.isImage(e)?(n.imageURLInputValue=e.getAttribute("src"),o.label=i("Update"),a.label=i("Update image URL")):(n.imageURLInputValue="",o.label=i("Insert"),a.label=i("Insert image via URL")))}),{priority:"low"}),n.delegate("submit","cancel").to(s),this.delegate("cancel").to(s),s.on("submit",(()=>{c(),function(){const e=t.model.document.selection.getSelectedElement();l.isImage(e)?t.model.change((t=>{t.setAttribute("src",n.imageURLInputValue,e),t.removeAttribute("srcset",e),t.removeAttribute("sizes",e)})):t.execute("insertImage",{source:n.imageURLInputValue})}()})),s.on("cancel",(()=>{c()})),s}}class Ee extends e.Plugin{static get pluginName(){return"ImageInsertViaUrl"}static get requires(){return[_e]}}class xe extends e.Plugin{static get pluginName(){return"ImageInsert"}static get requires(){return[he,Ee,_e]}}class Ce extends e.Command{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils").getClosestSelectedImageElement(e.model.document.selection);this.isEnabled=!!t,t&&t.hasAttribute("width")?this.value={width:t.getAttribute("width"),height:null}:this.value=null}execute(e){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils").getClosestSelectedImageElement(i.document.selection);this.value={width:e.width,height:null},n&&i.change((t=>{t.setAttribute("width",e.width,n)}))}}class Se extends e.Plugin{static get requires(){return[m]}static get pluginName(){return"ImageResizeEditing"}constructor(e){super(e),e.config.define("image",{resizeUnit:"%",resizeOptions:[{name:"resizeImage:original",value:null,icon:"original"},{name:"resizeImage:25",value:"25",icon:"small"},{name:"resizeImage:50",value:"50",icon:"medium"},{name:"resizeImage:75",value:"75",icon:"large"}]})}init(){const e=this.editor,t=new Ce(e);this._registerSchema(),this._registerConverters("imageBlock"),this._registerConverters("imageInline"),e.commands.add("resizeImage",t),e.commands.add("imageResize",t)}_registerSchema(){this.editor.plugins.has("ImageBlockEditing")&&this.editor.model.schema.extend("imageBlock",{allowAttributes:"width"}),this.editor.plugins.has("ImageInlineEditing")&&this.editor.model.schema.extend("imageInline",{allowAttributes:"width"})}_registerConverters(e){const t=this.editor;t.conversion.for("downcast").add((t=>t.on(`attribute:width:${e}`,((e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=i.writer,o=i.mapper.toViewElement(t.item);null!==t.attributeNewValue?(n.setStyle("width",t.attributeNewValue,o),n.addClass("image_resized",o)):(n.removeStyle("width",o),n.removeClass("image_resized",o))})))),t.conversion.for("upcast").attributeToAttribute({view:{name:"imageBlock"===e?"figure":"img",styles:{width:/.+/}},model:{key:"width",value:e=>e.getStyle("width")}})}}const Ae={small:e.icons.objectSizeSmall,medium:e.icons.objectSizeMedium,large:e.icons.objectSizeLarge,original:e.icons.objectSizeFull};class Te extends e.Plugin{static get requires(){return[Se]}static get pluginName(){return"ImageResizeButtons"}constructor(e){super(e),this._resizeUnit=e.config.get("image.resizeUnit")}init(){const e=this.editor,t=e.config.get("image.resizeOptions"),i=e.commands.get("resizeImage");this.bind("isEnabled").to(i);for(const e of t)this._registerImageResizeButton(e);this._registerImageResizeDropdown(t)}_registerImageResizeButton(e){const t=this.editor,{name:i,value:n,icon:o}=e,a=n?n+this._resizeUnit:null;t.ui.componentFactory.add(i,(i=>{const n=new k.ButtonView(i),s=t.commands.get("resizeImage"),l=this._getOptionLabelValue(e,!0);if(!Ae[o])throw new r.CKEditorError("imageresizebuttons-missing-icon",t,e);return n.set({label:l,icon:Ae[o],tooltip:l,isToggleable:!0}),n.bind("isEnabled").to(this),n.bind("isOn").to(s,"value",Be(a)),this.listenTo(n,"execute",(()=>{t.execute("resizeImage",{width:a})})),n}))}_registerImageResizeDropdown(e){const t=this.editor,i=t.t,n=e.find((e=>!e.value)),o=o=>{const a=t.commands.get("resizeImage"),s=(0,k.createDropdown)(o,k.DropdownButtonView),r=s.buttonView;return r.set({tooltip:i("Resize image"),commandValue:n.value,icon:Ae.medium,isToggleable:!0,label:this._getOptionLabelValue(n),withText:!0,class:"ck-resize-image-button"}),r.bind("label").to(a,"value",(e=>e&&e.width?e.width:this._getOptionLabelValue(n))),s.bind("isOn").to(a),s.bind("isEnabled").to(this),(0,k.addListToDropdown)(s,this._getResizeDropdownListItemDefinitions(e,a)),s.listView.ariaLabel=i("Image resize list"),this.listenTo(s,"execute",(e=>{t.execute(e.source.commandName,{width:e.source.commandValue}),t.editing.view.focus()})),s};t.ui.componentFactory.add("resizeImage",o),t.ui.componentFactory.add("imageResize",o)}_getOptionLabelValue(e,t){const i=this.editor.t;return e.label?e.label:t?e.value?i("Resize image to %0",e.value+this._resizeUnit):i("Resize image to the original size"):e.value?e.value+this._resizeUnit:i("Original")}_getResizeDropdownListItemDefinitions(e,t){const i=new r.Collection;return e.map((e=>{const n=e.value?e.value+this._resizeUnit:null,o={type:"button",model:new k.Model({commandName:"resizeImage",commandValue:n,label:this._getOptionLabelValue(e),withText:!0,icon:null})};o.model.bind("isOn").to(t,"value",Be(n)),i.add(o)})),i}}function Be(e){return t=>null===e&&t===e||t&&t.width===e}const Ve=/(image|image-inline)/,Ue="image_resized";class Re extends e.Plugin{static get requires(){return[l.WidgetResize]}static get pluginName(){return"ImageResizeHandles"}init(){const e=this.editor.commands.get("resizeImage");this.bind("isEnabled").to(e),this._setupResizerCreator()}_setupResizerCreator(){const e=this.editor,t=e.editing.view;t.addObserver(V),this.listenTo(t.document,"imageLoaded",((i,n)=>{if(!n.target.matches("figure.image.ck-widget > img,figure.image.ck-widget > picture > img,figure.image.ck-widget > a > img,figure.image.ck-widget > a > picture > img,span.image-inline.ck-widget > img,span.image-inline.ck-widget > picture > img"))return;const o=e.editing.view.domConverter,a=o.domToView(n.target).findAncestor({classes:Ve});let s=this.editor.plugins.get(l.WidgetResize).getResizerByViewElement(a);if(s)return void s.redraw();const r=e.editing.mapper,c=r.toModelElement(a);s=e.plugins.get(l.WidgetResize).attachTo({unit:e.config.get("image.resizeUnit"),modelElement:c,viewElement:a,editor:e,getHandleHost:e=>e.querySelector("img"),getResizeHost:()=>o.mapViewToDom(r.toViewElement(c.parent)),isCentered(){const e=c.getAttribute("imageStyle");return!e||"block"==e||"alignCenter"==e},onCommit(i){t.change((e=>{e.removeClass(Ue,a)})),e.execute("resizeImage",{width:i})}}),s.on("updateSize",(()=>{a.hasClass(Ue)||t.change((e=>{e.addClass(Ue,a)}))})),s.bind("isEnabled").to(this)}))}}var ze=i(601),Pe={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(ze.Z,Pe);ze.Z.locals;class Oe extends e.Plugin{static get requires(){return[Se,Re,Te]}static get pluginName(){return"ImageResize"}}class Ne extends e.Command{constructor(e,t){super(e),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(t.map((e=>{if(e.isDefault)for(const t of e.modelElements)this._defaultStyles[t]=e.name;return[e.name,e]})))}refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled?e.hasAttribute("imageStyle")?this.value=e.getAttribute("imageStyle"):this.value=this._defaultStyles[e.name]:this.value=!1}execute(e={}){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils");i.change((t=>{const o=e.value;let a=n.getClosestSelectedImageElement(i.document.selection);o&&this.shouldConvertImageType(o,a)&&(this.editor.execute(n.isBlockImage(a)?"imageTypeInline":"imageTypeBlock"),a=n.getClosestSelectedImageElement(i.document.selection)),!o||this._styles.get(o).isDefault?t.removeAttribute("imageStyle",a):t.setAttribute("imageStyle",o,a)}))}shouldConvertImageType(e,t){return!this._styles.get(e).modelElements.includes(t.name)}}const{objectFullWidth:Fe,objectInline:Le,objectLeft:De,objectRight:je,objectCenter:Me,objectBlockLeft:We,objectBlockRight:qe}=e.icons,Ze={get inline(){return{name:"inline",title:"In line",icon:Le,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:De,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:We,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:Me,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:je,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:qe,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:Me,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:je,modelElements:["imageBlock"],className:"image-style-side"}}},$e={full:Fe,left:We,right:qe,center:Me,inlineLeft:De,inlineRight:je,inline:Le},He=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function Ke(e){(0,r.logWarning)("image-style-configuration-definition-invalid",e)}const Ge={normalizeStyles:function(e){return(e.configuredStyles.options||[]).map((e=>function(e){e="string"==typeof e?Ze[e]?{...Ze[e]}:{name:e}:function(e,t){const i={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(i[n]=e[n]);return i}(Ze[e.name],e);"string"==typeof e.icon&&(e.icon=$e[e.icon]||e.icon);return e}(e))).filter((t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:i}){const{modelElements:n,name:o}=e;if(!(n&&n.length&&o))return Ke({style:e}),!1;{const o=[t?"imageBlock":null,i?"imageInline":null];if(!n.some((e=>o.includes(e))))return(0,r.logWarning)("image-style-missing-dependency",{style:e,missingPlugins:n.map((e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(t,e)))},getDefaultStylesConfiguration:function(e,t){return e&&t?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:e?{options:["block","side"]}:t?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(e){return e.has("ImageBlockEditing")&&e.has("ImageInlineEditing")?[...He]:[]},warnInvalidStyle:Ke,DEFAULT_OPTIONS:Ze,DEFAULT_ICONS:$e,DEFAULT_DROPDOWN_DEFINITIONS:He};function Je(e,t){for(const i of t)if(i.name===e)return i}class Qe extends e.Plugin{static get pluginName(){return"ImageStyleEditing"}static get requires(){return[m]}init(){const{normalizeStyles:e,getDefaultStylesConfiguration:t}=Ge,i=this.editor,n=i.plugins.has("ImageBlockEditing"),o=i.plugins.has("ImageInlineEditing");i.config.define("image.styles",t(n,o)),this.normalizedStyles=e({configuredStyles:i.config.get("image.styles"),isBlockPluginLoaded:n,isInlinePluginLoaded:o}),this._setupConversion(n,o),this._setupPostFixer(),i.commands.add("imageStyle",new Ne(i,this.normalizedStyles))}_setupConversion(e,t){const i=this.editor,n=i.model.schema,o=(a=this.normalizedStyles,(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=Je(t.attributeNewValue,a),o=Je(t.attributeOldValue,a),s=i.mapper.toViewElement(t.item),r=i.writer;o&&r.removeClass(o.className,s),n&&r.addClass(n.className,s)});var a;const s=function(e){const t={imageInline:e.filter((e=>!e.isDefault&&e.modelElements.includes("imageInline"))),imageBlock:e.filter((e=>!e.isDefault&&e.modelElements.includes("imageBlock")))};return(e,i,n)=>{if(!i.modelRange)return;const o=i.viewItem,a=(0,r.first)(i.modelRange.getItems());if(a&&n.schema.checkAttribute(a,"imageStyle"))for(const e of t[a.name])n.consumable.consume(o,{classes:e.className})&&n.writer.setAttribute("imageStyle",e.name,a)}}(this.normalizedStyles);i.editing.downcastDispatcher.on("attribute:imageStyle",o),i.data.downcastDispatcher.on("attribute:imageStyle",o),e&&(n.extend("imageBlock",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),t&&(n.extend("imageInline",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const e=this.editor,t=e.model.document,i=e.plugins.get(m),n=new Map(this.normalizedStyles.map((e=>[e.name,e])));t.registerPostFixer((e=>{let o=!1;for(const a of t.differ.getChanges())if("insert"==a.type||"attribute"==a.type&&"imageStyle"==a.attributeKey){let t="insert"==a.type?a.position.nodeAfter:a.range.start.nodeAfter;if(t&&t.is("element","paragraph")&&t.childCount>0&&(t=t.getChild(0)),!i.isImage(t))continue;const s=t.getAttribute("imageStyle");if(!s)continue;const r=n.get(s);r&&r.modelElements.includes(t.name)||(e.removeAttribute("imageStyle",t),o=!0)}return o}))}}const Xe=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)};const Ye=function(e){return e};var et=i(29),tt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(et.Z,tt);et.Z.locals;class it extends e.Plugin{static get requires(){return[Qe]}static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const e=this.editor.t;return{"Wrap text":e("Wrap text"),"Break text":e("Break text"),"In line":e("In line"),"Full size image":e("Full size image"),"Side image":e("Side image"),"Left aligned image":e("Left aligned image"),"Centered image":e("Centered image"),"Right aligned image":e("Right aligned image")}}init(){const e=this.editor.plugins,t=this.editor.config.get("image.toolbar")||[],i=nt(e.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const e of i)this._createButton(e);const n=nt([...t.filter(Xe),...Ge.getDefaultDropdownDefinitions(e)],this.localizedDefaultStylesTitles);for(const e of n)this._createDropdown(e,i)}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,(n=>{let o;const{defaultItem:a,items:s,title:r}=e,l=s.filter((e=>t.find((({name:t})=>ot(t)===e)))).map((e=>{const t=i.create(e);return e===a&&(o=t),t}));s.length!==l.length&&Ge.warnInvalidStyle({dropdown:e});const c=(0,k.createDropdown)(n,k.SplitButtonView),g=c.buttonView,d=g.arrowView;return(0,k.addToolbarToDropdown)(c,l,{enableActiveItemFocusOnDropdownOpen:!0}),g.set({label:at(r,o.label),class:null,tooltip:!0}),d.unbind("label"),d.set({label:r}),g.bind("icon").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Ye);return t<0?o.icon:l[t].icon})),g.bind("label").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Ye);return at(r,t<0?o.label:l[t].label)})),g.bind("isOn").toMany(l,"isOn",((...e)=>e.some(Ye))),g.bind("class").toMany(l,"isOn",((...e)=>e.some(Ye)?"ck-splitbutton_flatten":null)),g.on("execute",(()=>{l.some((({isOn:e})=>e))?c.isOpen=!c.isOpen:o.fire("execute")})),c.bind("isEnabled").toMany(l,"isEnabled",((...e)=>e.some(Ye))),this.listenTo(c,"execute",(()=>{this.editor.editing.view.focus()})),c}))}_createButton(e){const t=e.name;this.editor.ui.componentFactory.add(ot(t),(i=>{const n=this.editor.commands.get("imageStyle"),o=new k.ButtonView(i);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(n,"isEnabled"),o.bind("isOn").to(n,"value",(e=>e===t)),o.on("execute",this._executeCommand.bind(this,t)),o}))}_executeCommand(e){this.editor.execute("imageStyle",{value:e}),this.editor.editing.view.focus()}}function nt(e,t){for(const i of e)t[i.title]&&(i.title=t[i.title]);return e}function ot(e){return`imageStyle:${e}`}function at(e,t){return(e?e+": ":"")+t}class st extends e.Plugin{static get requires(){return[Qe,it]}static get pluginName(){return"ImageStyle"}}class rt extends e.Plugin{static get requires(){return[l.WidgetToolbarRepository,m]}static get pluginName(){return"ImageToolbar"}afterInit(){const e=this.editor,t=e.t,i=e.plugins.get(l.WidgetToolbarRepository),n=e.plugins.get("ImageUtils");var o;i.register("image",{ariaLabel:t("Image toolbar"),items:(o=e.config.get("image.toolbar")||[],o.map((e=>Xe(e)?e.name:e))),getRelatedElement:e=>n.getClosestSelectedImageWidget(e)})}}class lt extends e.Plugin{static get requires(){return[R,m]}static get pluginName(){return"PictureEditing"}afterInit(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.model.schema.extend("imageBlock",{allowAttributes:["sources"]}),e.plugins.has("ImageInlineEditing")&&e.model.schema.extend("imageInline",{allowAttributes:["sources"]}),this._setupConversion(),this._setupImageUploadEditingIntegration()}_setupConversion(){const e=this.editor,t=e.conversion,i=e.plugins.get("ImageUtils");t.for("upcast").add(function(e){const t=["srcset","media","type","sizes"];return e=>{e.on("element:picture",i)};function i(i,n,o){const a=n.viewItem;if(!o.consumable.test(a,{name:!0}))return;const s=new Map;for(const e of a.getChildren())if(e.is("element","source")){const i={};for(const n of t)e.hasAttribute(n)&&o.consumable.test(e,{attributes:n})&&(i[n]=e.getAttribute(n));Object.keys(i).length&&s.set(e,i)}const l=e.findViewImgElement(a);if(!l)return;let c=n.modelCursor.parent;if(!c.is("element","imageBlock")){const e=o.convertItem(l,n.modelCursor);n.modelRange=e.modelRange,n.modelCursor=e.modelCursor,c=(0,r.first)(e.modelRange.getItems())}o.consumable.consume(a,{name:!0});for(const[e,t]of s)o.consumable.consume(e,{attributes:Object.keys(t)});s.size&&o.writer.setAttribute("sources",Array.from(s.values()),c),o.convertChildren(a,c)}}(i)),t.for("downcast").add(function(e){return e=>{e.on("attribute:sources:imageBlock",t),e.on("attribute:sources:imageInline",t)};function t(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,a=n.mapper.toViewElement(i.item),s=e.findViewImgElement(a);if(i.attributeNewValue&&i.attributeNewValue.length){const e=o.createContainerElement("picture",null,i.attributeNewValue.map((e=>o.createEmptyElement("source",e)))),t=[];let n=s.parent;for(;n&&n.is("attributeElement");){const e=n.parent;o.unwrap(o.createRangeOn(s),n),t.unshift(n),n=e}o.insert(o.createPositionBefore(s),e),o.move(o.createRangeOn(s),o.createPositionAt(e,"end"));for(const i of t)o.wrap(o.createRangeOn(e),i)}else if(s.parent.is("element","picture")){const e=s.parent;o.move(o.createRangeOn(s),o.createPositionBefore(e)),o.remove(e)}}}(i))}_setupImageUploadEditingIntegration(){const e=this.editor;e.plugins.has("ImageUploadEditing")&&this.listenTo(e.plugins.get("ImageUploadEditing"),"uploadComplete",((t,{imageElement:i,data:n})=>{const o=n.sources;o&&e.model.change((e=>{e.setAttributes({sources:o},i)}))}))}}})(),(window.CKEditor5=window.CKEditor5||{}).image=n})(); \ No newline at end of file + */(()=>{var e={540:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck-content .image{clear:both;display:table;margin:.9em auto;min-width:50px;text-align:center}.ck-content .image img{display:block;margin:0 auto;max-width:100%;min-width:100%}.ck-content .image-inline{align-items:flex-start;display:inline-flex;max-width:100%}.ck-content .image-inline picture{display:flex}.ck-content .image-inline img,.ck-content .image-inline picture{flex-grow:1;flex-shrink:1;max-width:100%}.ck.ck-editor__editable .image>figcaption.ck-placeholder:before{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}.ck.ck-editor__editable .image-inline.ck-widget_selected,.ck.ck-editor__editable .image.ck-widget_selected{z-index:1}.ck.ck-editor__editable .image-inline.ck-widget_selected ::selection{display:none}.ck.ck-editor__editable td .image-inline img,.ck.ck-editor__editable th .image-inline img{max-width:none}",""]);const a=o},560:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,":root{--ck-color-image-caption-background:#f7f7f7;--ck-color-image-caption-text:#333;--ck-color-image-caption-highligted-background:#fd0}.ck-content .image>figcaption{background-color:var(--ck-color-image-caption-background);caption-side:bottom;color:var(--ck-color-image-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;word-break:break-word}.ck.ck-editor__editable .image>figcaption.image__caption_highlighted{animation:ck-image-caption-highlight .6s ease-out}@keyframes ck-image-caption-highlight{0%{background-color:var(--ck-color-image-caption-highligted-background)}to{background-color:var(--ck-color-image-caption-background)}}",""]);const a=o},91:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-image-insert__panel{padding:var(--ck-spacing-large)}.ck.ck-image-insert__ck-finder-button{border:1px solid #ccc;border-radius:var(--ck-border-radius);display:block;margin:var(--ck-spacing-standard) auto;width:100%}.ck.ck-splitbutton>.ck-file-dialog-button.ck-button{border:none;margin:0;padding:0}",""]);const a=o},439:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-image-insert-form:focus{outline:none}.ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-image-insert-form__action-row{margin-top:var(--ck-spacing-standard)}.ck.ck-form__row.ck-image-insert-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-image-insert-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row.ck-image-insert-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}",""]);const a=o},601:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck-content .image.image_resized{box-sizing:border-box;display:block;max-width:100%}.ck-content .image.image_resized img{width:100%}.ck-content .image.image_resized>figcaption{display:block}.ck.ck-editor__editable td .image-inline.image_resized img,.ck.ck-editor__editable th .image-inline.image_resized img{max-width:100%}[dir=ltr] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-button.ck-button_with-text.ck-resize-image-button .ck-button__icon{margin-left:var(--ck-spacing-standard)}.ck.ck-dropdown .ck-button.ck-resize-image-button .ck-button__label{width:4em}",""]);const a=o},29:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,":root{--ck-image-style-spacing:1.5em;--ck-inline-image-style-spacing:calc(var(--ck-image-style-spacing)/2)}.ck-content .image-style-block-align-left,.ck-content .image-style-block-align-right{max-width:calc(100% - var(--ck-image-style-spacing))}.ck-content .image-style-align-left,.ck-content .image-style-align-right{clear:none}.ck-content .image-style-side{float:right;margin-left:var(--ck-image-style-spacing);max-width:50%}.ck-content .image-style-align-left{float:left;margin-right:var(--ck-image-style-spacing)}.ck-content .image-style-align-center{margin-left:auto;margin-right:auto}.ck-content .image-style-align-right{float:right;margin-left:var(--ck-image-style-spacing)}.ck-content .image-style-block-align-right{margin-left:auto;margin-right:0}.ck-content .image-style-block-align-left{margin-left:0;margin-right:auto}.ck-content p+.image-style-align-left,.ck-content p+.image-style-align-right,.ck-content p+.image-style-side{margin-top:0}.ck-content .image-inline.image-style-align-left,.ck-content .image-inline.image-style-align-right{margin-bottom:var(--ck-inline-image-style-spacing);margin-top:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-left{margin-right:var(--ck-inline-image-style-spacing)}.ck-content .image-inline.image-style-align-right{margin-left:var(--ck-inline-image-style-spacing)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-background)}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__action:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):after,.ck.ck-splitbutton.ck-splitbutton_flatten:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover):after{display:none}.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__action:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled),.ck.ck-splitbutton.ck-splitbutton_flatten.ck-splitbutton_open:hover>.ck-splitbutton__arrow:not(.ck-disabled):not(:hover){background-color:var(--ck-color-button-on-hover-background)}",""]);const a=o},948:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck-image-upload-complete-icon{border-radius:50%;display:block;position:absolute;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);z-index:1}.ck-image-upload-complete-icon:after{content:"";position:absolute}:root{--ck-color-image-upload-icon:#fff;--ck-color-image-upload-icon-background:#008a00;--ck-image-upload-icon-size:20;--ck-image-upload-icon-width:2px;--ck-image-upload-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck-image-upload-complete-icon{animation-delay:0ms,3s;animation-duration:.5s,.5s;animation-fill-mode:forwards,forwards;animation-name:ck-upload-complete-icon-show,ck-upload-complete-icon-hide;background:var(--ck-color-image-upload-icon-background);font-size:calc(1px*var(--ck-image-upload-icon-size));height:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size));opacity:0;overflow:hidden;width:calc(var(--ck-image-upload-icon-is-visible)*var(--ck-image-upload-icon-size))}.ck-image-upload-complete-icon:after{animation-delay:.5s;animation-duration:.5s;animation-fill-mode:forwards;animation-name:ck-upload-complete-icon-check;border-right:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);border-top:var(--ck-image-upload-icon-width) solid var(--ck-color-image-upload-icon);box-sizing:border-box;height:0;left:25%;opacity:0;top:50%;transform:scaleX(-1) rotate(135deg);transform-origin:left top;width:0}@keyframes ck-upload-complete-icon-show{0%{opacity:0}to{opacity:1}}@keyframes ck-upload-complete-icon-hide{0%{opacity:1}to{opacity:0}}@keyframes ck-upload-complete-icon-check{0%{height:0;opacity:1;width:0}33%{height:0;width:.3em}to{height:.45em;opacity:1;width:.3em}}',""]);const a=o},467:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck .ck-upload-placeholder-loader{align-items:center;display:flex;justify-content:center;left:0;position:absolute;top:0}.ck .ck-upload-placeholder-loader:before{content:"";position:relative}:root{--ck-color-upload-placeholder-loader:#b3b3b3;--ck-upload-placeholder-loader-size:32px;--ck-upload-placeholder-image-aspect-ratio:2.8}.ck .ck-image-upload-placeholder{margin:0;width:100%}.ck .ck-image-upload-placeholder.image-inline{width:calc(var(--ck-upload-placeholder-loader-size)*2*var(--ck-upload-placeholder-image-aspect-ratio))}.ck .ck-image-upload-placeholder img{aspect-ratio:var(--ck-upload-placeholder-image-aspect-ratio)}.ck .ck-upload-placeholder-loader{height:100%;width:100%}.ck .ck-upload-placeholder-loader:before{animation:ck-upload-placeholder-loader 1s linear infinite;border-radius:50%;border-right:2px solid transparent;border-top:3px solid var(--ck-color-upload-placeholder-loader);height:var(--ck-upload-placeholder-loader-size);width:var(--ck-upload-placeholder-loader-size)}@keyframes ck-upload-placeholder-loader{to{transform:rotate(1turn)}}',""]);const a=o},271:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-editor__editable .image,.ck.ck-editor__editable .image-inline{position:relative}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{left:0;position:absolute;top:0}.ck.ck-editor__editable .image-inline.ck-appear,.ck.ck-editor__editable .image.ck-appear{animation:fadeIn .7s}.ck.ck-editor__editable .image .ck-progress-bar,.ck.ck-editor__editable .image-inline .ck-progress-bar{background:var(--ck-color-upload-bar-background);height:2px;transition:width .1s;width:0}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}",""]);const a=o},168:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-text-alternative-form{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-text-alternative-form .ck-labeled-field-view{display:inline-block}.ck.ck-text-alternative-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-text-alternative-form{flex-wrap:wrap}.ck.ck-text-alternative-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-text-alternative-form .ck-button{flex-basis:50%}}",""]);const a=o},764:(e,t,i)=>{"use strict";i.d(t,{Z:()=>a});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck-vertical-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck-vertical-form .ck-button:focus:after{display:none}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck.ck-responsive-form .ck-button:focus:after{display:none}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-large)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-width)*.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){border-radius:0;margin-top:var(--ck-spacing-large);padding:var(--ck-spacing-standard)}.ck.ck-responsive-form>.ck-button:last-child:not(:focus),.ck.ck-responsive-form>.ck-button:nth-last-child(2):not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}',""]);const a=o},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=e(t);return t[2]?"@media ".concat(t[2]," {").concat(i,"}"):i})).join("")},t.i=function(e,i,n){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(n)for(var a=0;a<this.length;a++){var s=this[a][0];null!=s&&(o[s]=!0)}for(var r=0;r<e.length;r++){var l=[].concat(e[r]);n&&o[l[0]]||(i&&(l[2]?l[2]="".concat(i," and ").concat(l[2]):l[2]=i),t.push(l))}},t}},62:(e,t,i)=>{"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},a=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),s=[];function r(e){for(var t=-1,i=0;i<s.length;i++)if(s[i].identifier===e){t=i;break}return t}function l(e,t){for(var i={},n=[],o=0;o<e.length;o++){var a=e[o],l=t.base?a[0]+t.base:a[0],c=i[l]||0,g="".concat(l," ").concat(c);i[l]=c+1;var d=r(g),m={css:a[1],media:a[2],sourceMap:a[3]};-1!==d?(s[d].references++,s[d].updater(m)):s.push({identifier:g,updater:f(m,t),references:1}),n.push(g)}return n}function c(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var o=i.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var s=a(e.insert||"head");if(!s)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");s.appendChild(t)}return t}var g,d=(g=[],function(e,t){return g[e]=t,g.filter(Boolean).join("\n")});function m(e,t,i,n){var o=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=d(t,o);else{var a=document.createTextNode(o),s=e.childNodes;s[t]&&e.removeChild(s[t]),s.length?e.insertBefore(a,s[t]):e.appendChild(a)}}function u(e,t,i){var n=i.css,o=i.media,a=i.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),a&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(a))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var p=null,h=0;function f(e,t){var i,n,o;if(t.singleton){var a=h++;i=p||(p=c(t)),n=m.bind(null,i,a,!1),o=m.bind(null,i,a,!0)}else i=c(t),n=u.bind(null,i,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(i)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var i=l(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<i.length;n++){var o=r(i[n]);s[o].references--}for(var a=l(e,t),c=0;c<i.length;c++){var g=r(i[c]);0===s[g].references&&(s[g].updater(),s.splice(g,1))}i=a}}}},945:(e,t,i)=>{e.exports=i(79)("./src/clipboard.js")},704:(e,t,i)=>{e.exports=i(79)("./src/core.js")},492:(e,t,i)=>{e.exports=i(79)("./src/engine.js")},181:(e,t,i)=>{e.exports=i(79)("./src/typing.js")},273:(e,t,i)=>{e.exports=i(79)("./src/ui.js")},254:(e,t,i)=>{e.exports=i(79)("./src/undo.js")},448:(e,t,i)=>{e.exports=i(79)("./src/upload.js")},209:(e,t,i)=>{e.exports=i(79)("./src/utils.js")},995:(e,t,i)=>{e.exports=i(79)("./src/widget.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var o=t[n];if(void 0!==o)return o.exports;var a=t[n]={id:n,exports:{}};return e[n](a,a.exports,i),a.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{AutoImage:()=>h,Image:()=>j,ImageCaption:()=>K,ImageCaptionEditing:()=>q,ImageCaptionUtils:()=>M,ImageEditing:()=>R,ImageInsert:()=>xe,ImageInsertUI:()=>_e,ImageResize:()=>Oe,ImageResizeButtons:()=>Te,ImageResizeEditing:()=>Se,ImageResizeHandles:()=>Re,ImageStyle:()=>st,ImageStyleEditing:()=>Qe,ImageStyleUI:()=>it,ImageTextAlternative:()=>A,ImageTextAlternativeEditing:()=>b,ImageTextAlternativeUI:()=>S,ImageToolbar:()=>rt,ImageUpload:()=>he,ImageUploadEditing:()=>ue,ImageUploadProgress:()=>se,ImageUploadUI:()=>Y,PictureEditing:()=>lt});var e=i(704),t=i(945),o=i(492),a=i(254),s=i(181),r=i(209),l=i(995);function c(e){return e.createContainerElement("figure",{class:"image"},[e.createEmptyElement("img"),e.createSlot()])}function g(e,t){const i=e.plugins.get("ImageUtils"),n=e.plugins.has("ImageInlineEditing")&&e.plugins.has("ImageBlockEditing");return e=>{if(!i.isInlineImageView(e))return null;if(!n)return o(e);return(e.findAncestor(i.isBlockImageView)?"imageBlock":"imageInline")!==t?null:o(e)};function o(e){const t={name:!0};return e.hasAttribute("src")&&(t.attributes=["src"]),t}}function d(e,t){const i=(0,r.first)(t.getSelectedBlocks());return!i||e.isObject(i)||i.isEmpty&&"listItem"!=i.name?"imageBlock":"imageInline"}class m extends e.Plugin{static get pluginName(){return"ImageUtils"}isImage(e){return this.isInlineImage(e)||this.isBlockImage(e)}isInlineImageView(e){return!!e&&e.is("element","img")}isBlockImageView(e){return!!e&&e.is("element","figure")&&e.hasClass("image")}insertImage(e={},t=null,i=null){const n=this.editor,o=n.model,a=o.document.selection;i=u(n,t||a,i),e={...Object.fromEntries(a.getAttributes()),...e};for(const t in e)o.schema.checkAttribute(i,t)||delete e[t];return o.change((n=>{const a=n.createElement(i,e);return o.insertObject(a,t,null,{setSelection:"on",findOptimalPosition:!t&&"imageInline"!=i}),a.parent?a:null}))}getClosestSelectedImageWidget(e){const t=e.getFirstPosition();if(!t)return null;const i=e.getSelectedElement();if(i&&this.isImageWidget(i))return i;let n=t.parent;for(;n;){if(n.is("element")&&this.isImageWidget(n))return n;n=n.parent}return null}getClosestSelectedImageElement(e){const t=e.getSelectedElement();return this.isImage(t)?t:e.getFirstPosition().findAncestor("imageBlock")}isImageAllowed(){const e=this.editor.model.document.selection;return function(e,t){if("imageBlock"==u(e,t)){const i=function(e,t){const i=(0,l.findOptimalInsertionRange)(e,t).start.parent;if(i.isEmpty&&!i.is("element","$root"))return i.parent;return i}(t,e.model);if(e.model.schema.checkChild(i,"imageBlock"))return!0}else if(e.model.schema.checkChild(t.focus,"imageInline"))return!0;return!1}(this.editor,e)&&function(e){return[...e.focus.getAncestors()].every((e=>!e.is("element","imageBlock")))}(e)}toImageWidget(e,t,i){t.setCustomProperty("image",!0,e);return(0,l.toWidget)(e,t,{label:()=>{const t=this.findViewImgElement(e).getAttribute("alt");return t?`${t} ${i}`:i}})}isImageWidget(e){return!!e.getCustomProperty("image")&&(0,l.isWidget)(e)}isBlockImage(e){return!!e&&e.is("element","imageBlock")}isInlineImage(e){return!!e&&e.is("element","imageInline")}findViewImgElement(e){if(this.isInlineImageView(e))return e;const t=this.editor.editing.view;for(const{item:i}of t.createRangeIn(e))if(this.isInlineImageView(i))return i}}function u(e,t,i){const n=e.model.schema,o=e.config.get("image.insert.type");return e.plugins.has("ImageBlockEditing")?e.plugins.has("ImageInlineEditing")?i||("inline"===o?"imageInline":"block"===o?"imageBlock":t.is("selection")?d(n,t):n.checkChild(t,"imageInline")?"imageInline":"imageBlock"):"imageBlock":"imageInline"}const p=new RegExp(String(/^(http(s)?:\/\/)?[\w-]+\.[\w.~:/[\]@!$&'()*+,;=%-]+/.source+/\.(jpg|jpeg|png|gif|ico|webp|JPG|JPEG|PNG|GIF|ICO|WEBP)/.source+/(\?[\w.~:/[\]@!$&'()*+,;=%-]*)?/.source+/(#[\w.~:/[\]@!$&'()*+,;=%-]*)?$/.source));class h extends e.Plugin{static get requires(){return[t.Clipboard,m,a.Undo,s.Delete]}static get pluginName(){return"AutoImage"}constructor(e){super(e),this._timeoutId=null,this._positionToInsert=null}init(){const e=this.editor,t=e.model.document;this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",(()=>{const e=t.selection.getFirstRange(),i=o.LivePosition.fromPosition(e.start);i.stickiness="toPrevious";const n=o.LivePosition.fromPosition(e.end);n.stickiness="toNext",t.once("change:data",(()=>{this._embedImageBetweenPositions(i,n),i.detach(),n.detach()}),{priority:"high"})})),e.commands.get("undo").on("execute",(()=>{this._timeoutId&&(r.global.window.clearTimeout(this._timeoutId),this._positionToInsert.detach(),this._timeoutId=null,this._positionToInsert=null)}),{priority:"high"})}_embedImageBetweenPositions(e,t){const i=this.editor,n=new o.LiveRange(e,t),a=n.getWalker({ignoreElementEnd:!0}),s=Object.fromEntries(i.model.document.selection.getAttributes()),l=this.editor.plugins.get("ImageUtils");let c="";for(const e of a)e.item.is("$textProxy")&&(c+=e.item.data);c=c.trim(),c.match(p)?(this._positionToInsert=o.LivePosition.fromPosition(e),this._timeoutId=r.global.window.setTimeout((()=>{i.commands.get("insertImage").isEnabled?(i.model.change((e=>{let t;this._timeoutId=null,e.remove(n),n.detach(),"$graveyard"!==this._positionToInsert.root.rootName&&(t=this._positionToInsert.toPosition()),l.insertImage({...s,src:c},t),this._positionToInsert.detach(),this._positionToInsert=null})),i.plugins.get("Delete").requestUndoOnBackspace()):n.detach()}),100)):n.detach()}}class f extends e.Command{refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled&&e.hasAttribute("alt")?this.value=e.getAttribute("alt"):this.value=!1}execute(e){const t=this.editor,i=t.plugins.get("ImageUtils"),n=t.model,o=i.getClosestSelectedImageElement(n.document.selection);n.change((t=>{t.setAttribute("alt",e.newValue,o)}))}}class b extends e.Plugin{static get requires(){return[m]}static get pluginName(){return"ImageTextAlternativeEditing"}init(){this.editor.commands.add("imageTextAlternative",new f(this.editor))}}var k=i(273),w=i(62),I=i.n(w),v=i(168),y={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(v.Z,y);v.Z.locals;var _=i(764),E={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(_.Z,E);_.Z.locals;class x extends k.View{constructor(t){super(t);const i=this.locale.t;this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(i("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(i("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._focusables=new k.ViewCollection,this._focusCycler=new k.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-responsive-form"],tabindex:"-1"},children:[this.labeledInput,this.saveButtonView,this.cancelButtonView]}),(0,k.injectCssTransitionDisabler)(this)}render(){super.render(),this.keystrokes.listenTo(this.element),(0,k.submitHandler)({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createButton(e,t,i,n){const o=new k.ButtonView(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createLabeledInputView(){const e=this.locale.t,t=new k.LabeledFieldView(this.locale,k.createLabeledInputText);return t.label=e("Text alternative"),t}}function C(e){const t=e.editing.view,i=k.BalloonPanelView.defaultPositions,n=e.plugins.get("ImageUtils");return{target:t.domConverter.mapViewToDom(n.getClosestSelectedImageWidget(t.document.selection)),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast,i.viewportStickyNorth]}}class S extends e.Plugin{static get requires(){return[k.ContextualBalloon]}static get pluginName(){return"ImageTextAlternativeUI"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor,i=t.t;t.ui.componentFactory.add("imageTextAlternative",(n=>{const o=t.commands.get("imageTextAlternative"),a=new k.ButtonView(n);return a.set({label:i("Change image text alternative"),icon:e.icons.lowVision,tooltip:!0}),a.bind("isEnabled").to(o,"isEnabled"),this.listenTo(a,"execute",(()=>{this._showForm()})),a}))}_createForm(){const e=this.editor,t=e.editing.view.document,i=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new x(e.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{e.execute("imageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((e,t)=>{this._hideForm(!0),t()})),this.listenTo(e.ui,"update",(()=>{i.getClosestSelectedImageWidget(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(e.plugins.get("ImageUtils").getClosestSelectedImageWidget(e.editing.view.document.selection)){const i=C(e);t.updatePosition(i)}}(e):this._hideForm(!0)})),(0,k.clickOutsideHandler)({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("imageTextAlternative"),i=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:C(e)}),i.fieldView.value=i.fieldView.element.value=t.value||"",this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class A extends e.Plugin{static get requires(){return[b,S]}static get pluginName(){return"ImageTextAlternative"}}function T(e,t){return e=>{e.on(`attribute:srcset:${t}`,i)};function i(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,a=n.mapper.toViewElement(i.item),s=e.findViewImgElement(a);if(null===i.attributeNewValue){const e=i.attributeOldValue;e.data&&(o.removeAttribute("srcset",s),o.removeAttribute("sizes",s),e.width&&o.removeAttribute("width",s))}else{const e=i.attributeNewValue;e.data&&(o.setAttribute("srcset",e.data,s),o.setAttribute("sizes","100vw",s),e.width&&o.setAttribute("width",e.width,s))}}}function B(e,t,i){return e=>{e.on(`attribute:${i}:${t}`,n)};function n(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,a=n.mapper.toViewElement(i.item),s=e.findViewImgElement(a);o.setAttribute(i.attributeKey,i.attributeNewValue||"",s)}}class V extends o.Observer{observe(e){this.listenTo(e,"load",((e,t)=>{const i=t.target;this.checkShouldIgnoreEventFromTarget(i)||"IMG"==i.tagName&&this._fireEvents(t)}),{useCapture:!0})}_fireEvents(e){this.isEnabled&&(this.document.fire("layoutChanged"),this.document.fire("imageLoaded",e))}}class U extends e.Command{constructor(e){super(e);const t=e.config.get("image.insert.type");e.plugins.has("ImageBlockEditing")||"block"===t&&(0,r.logWarning)("image-block-plugin-required"),e.plugins.has("ImageInlineEditing")||"inline"===t&&(0,r.logWarning)("image-inline-plugin-required")}refresh(){this.isEnabled=this.editor.plugins.get("ImageUtils").isImageAllowed()}execute(e){const t=(0,r.toArray)(e.source),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach(((e,t)=>{const a=i.getSelectedElement();if("string"==typeof e&&(e={src:e}),t&&a&&n.isImage(a)){const t=this.editor.model.createPositionAfter(a);n.insertImage({...e,...o},t)}else n.insertImage({...e,...o})}))}}class R extends e.Plugin{static get requires(){return[m]}static get pluginName(){return"ImageEditing"}init(){const e=this.editor,t=e.conversion;e.editing.view.addObserver(V),t.for("upcast").attributeToAttribute({view:{name:"img",key:"alt"},model:"alt"}).attributeToAttribute({view:{name:"img",key:"srcset"},model:{key:"srcset",value:e=>{const t={data:e.getAttribute("srcset")};return e.hasAttribute("width")&&(t.width=e.getAttribute("width")),t}}});const i=new U(e);e.commands.add("insertImage",i),e.commands.add("imageInsert",i)}}class z extends e.Command{constructor(e,t){super(e),this._modelElementName=t}refresh(){const e=this.editor.plugins.get("ImageUtils"),t=e.getClosestSelectedImageElement(this.editor.model.document.selection);"imageBlock"===this._modelElementName?this.isEnabled=e.isInlineImage(t):this.isEnabled=e.isBlockImage(t)}execute(){const e=this.editor,t=this.editor.model,i=e.plugins.get("ImageUtils"),n=i.getClosestSelectedImageElement(t.document.selection),o=Object.fromEntries(n.getAttributes());return o.src||o.uploadId?t.change((e=>{const a=Array.from(t.markers).filter((e=>e.getRange().containsItem(n))),s=i.insertImage(o,t.createSelection(n,"on"),this._modelElementName);if(!s)return null;const r=e.createRangeOn(s);for(const t of a){const i=t.getRange(),n="$graveyard"!=i.root.rootName?i.getJoined(r,!0):r;e.updateMarker(t,{range:n})}return{oldElement:n,newElement:s}})):null}}class P extends e.Plugin{static get requires(){return[R,m,t.ClipboardPipeline]}static get pluginName(){return"ImageBlockEditing"}init(){const e=this.editor;e.model.schema.register("imageBlock",{inheritAllFrom:"$blockObject",allowAttributes:["alt","src","srcset"]}),this._setupConversion(),e.plugins.has("ImageInlineEditing")&&(e.commands.add("imageTypeBlock",new z(this.editor,"imageBlock")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToStructure({model:"imageBlock",view:(e,{writer:t})=>c(t)}),i.for("editingDowncast").elementToStructure({model:"imageBlock",view:(e,{writer:i})=>n.toImageWidget(c(i),i,t("image widget"))}),i.for("downcast").add(B(n,"imageBlock","src")).add(B(n,"imageBlock","alt")).add(T(n,"imageBlock")),i.for("upcast").elementToElement({view:g(e,"imageBlock"),model:(e,{writer:t})=>t.createElement("imageBlock",e.hasAttribute("src")?{src:e.getAttribute("src")}:null)}).add(function(e){return e=>{e.on("element:figure",t)};function t(t,i,n){if(!n.consumable.test(i.viewItem,{name:!0,classes:"image"}))return;const o=e.findViewImgElement(i.viewItem);if(!o||!n.consumable.test(o,{name:!0}))return;n.consumable.consume(i.viewItem,{name:!0,classes:"image"});const a=n.convertItem(o,i.modelCursor),s=(0,r.first)(a.modelRange.getItems());s?(n.convertChildren(i.viewItem,s),n.updateConversionResult(s,i)):n.consumable.revert(i.viewItem,{name:!0,classes:"image"})}}(n))}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",((a,s)=>{const r=Array.from(s.content.getChildren());let l;if(!r.every(n.isInlineImageView))return;l=s.targetRanges?e.editing.mapper.toModelRange(s.targetRanges[0]):t.document.selection.getFirstRange();const c=t.createSelection(l);if("imageBlock"===d(t.schema,c)){const e=new o.UpcastWriter(i.document),t=r.map((t=>e.createElement("figure",{class:"image"},t)));s.content=e.createDocumentFragment(t)}}))}}var O=i(540),N={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(O.Z,N);O.Z.locals;class F extends e.Plugin{static get requires(){return[P,l.Widget,A]}static get pluginName(){return"ImageBlock"}}class L extends e.Plugin{static get requires(){return[R,m,t.ClipboardPipeline]}static get pluginName(){return"ImageInlineEditing"}init(){const e=this.editor,t=e.model.schema;t.register("imageInline",{inheritAllFrom:"$inlineObject",allowAttributes:["alt","src","srcset"]}),t.addChildCheck(((e,t)=>{if(e.endsWith("caption")&&"imageInline"===t.name)return!1})),this._setupConversion(),e.plugins.has("ImageBlockEditing")&&(e.commands.add("imageTypeInline",new z(this.editor,"imageInline")),this._setupClipboardIntegration())}_setupConversion(){const e=this.editor,t=e.t,i=e.conversion,n=e.plugins.get("ImageUtils");i.for("dataDowncast").elementToElement({model:"imageInline",view:(e,{writer:t})=>t.createEmptyElement("img")}),i.for("editingDowncast").elementToStructure({model:"imageInline",view:(e,{writer:i})=>n.toImageWidget(function(e){return e.createContainerElement("span",{class:"image-inline"},e.createEmptyElement("img"))}(i),i,t("image widget"))}),i.for("downcast").add(B(n,"imageInline","src")).add(B(n,"imageInline","alt")).add(T(n,"imageInline")),i.for("upcast").elementToElement({view:g(e,"imageInline"),model:(e,{writer:t})=>t.createElement("imageInline",e.hasAttribute("src")?{src:e.getAttribute("src")}:null)})}_setupClipboardIntegration(){const e=this.editor,t=e.model,i=e.editing.view,n=e.plugins.get("ImageUtils");this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",((a,s)=>{const r=Array.from(s.content.getChildren());let l;if(!r.every(n.isBlockImageView))return;l=s.targetRanges?e.editing.mapper.toModelRange(s.targetRanges[0]):t.document.selection.getFirstRange();const c=t.createSelection(l);if("imageInline"===d(t.schema,c)){const e=new o.UpcastWriter(i.document),t=r.map((t=>1===t.childCount?(Array.from(t.getAttributes()).forEach((i=>e.setAttribute(...i,n.findViewImgElement(t)))),t.getChild(0)):t));s.content=e.createDocumentFragment(t)}}))}}class D extends e.Plugin{static get requires(){return[L,l.Widget,A]}static get pluginName(){return"ImageInline"}}class j extends e.Plugin{static get requires(){return[F,D]}static get pluginName(){return"Image"}}class M extends e.Plugin{static get pluginName(){return"ImageCaptionUtils"}static get requires(){return[m]}getCaptionFromImageModelElement(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}getCaptionFromModelSelection(e){const t=this.editor.plugins.get("ImageUtils"),i=e.getFirstPosition().findAncestor("caption");return i&&t.isBlockImage(i.parent)?i:null}matchImageCaptionViewElement(e){const t=this.editor.plugins.get("ImageUtils");return"figcaption"==e.name&&t.isBlockImageView(e.parent)?{name:!0}:null}}class W extends e.Command{refresh(){const e=this.editor,t=e.plugins.get("ImageCaptionUtils");if(!e.plugins.has(P))return this.isEnabled=!1,void(this.value=!1);const i=e.model.document.selection,n=i.getSelectedElement();if(!n){const e=t.getCaptionFromModelSelection(i);return this.isEnabled=!!e,void(this.value=!!e)}this.isEnabled=this.editor.plugins.get("ImageUtils").isImage(n),this.isEnabled?this.value=!!t.getCaptionFromImageModelElement(n):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change((e=>{this.value?this._hideImageCaption(e):this._showImageCaption(e,t)}))}_showImageCaption(e,t){const i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageCaptionEditing");let o=i.getSelectedElement();const a=n._getSavedCaption(o);this.editor.plugins.get("ImageUtils").isInlineImage(o)&&(this.editor.execute("imageTypeBlock"),o=i.getSelectedElement());const s=a||e.createElement("caption");e.append(s,o),t&&e.setSelection(s,"in")}_hideImageCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("ImageCaptionEditing"),o=t.plugins.get("ImageCaptionUtils");let a,s=i.getSelectedElement();s?a=o.getCaptionFromImageModelElement(s):(a=o.getCaptionFromModelSelection(i),s=a.parent),n._saveCaption(s,a),e.setSelection(s,"on"),e.remove(a)}}class q extends e.Plugin{static get requires(){return[m,M]}static get pluginName(){return"ImageCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"imageBlock"}):t.register("caption",{allowIn:"imageBlock",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleImageCaption",new W(this.editor)),this._setupConversion(),this._setupImageTypeCommandsIntegration(),this._registerCaptionReconversion()}_setupConversion(){const e=this.editor,t=e.editing.view,i=e.plugins.get("ImageUtils"),n=e.plugins.get("ImageCaptionUtils"),a=e.t;e.conversion.for("upcast").elementToElement({view:e=>n.matchImageCaptionViewElement(e),model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>i.isBlockImage(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:n})=>{if(!i.isBlockImage(e.parent))return null;const s=n.createEditableElement("figcaption");n.setCustomProperty("imageCaption",!0,s),(0,o.enablePlaceholder)({view:t,element:s,text:a("Enter image caption"),keepOnFocus:!0});const r=e.parent.getAttribute("alt"),c=r?a("Caption for image: %0",[r]):a("Caption for the image");return(0,l.toWidgetEditable)(s,n,{label:c})}})}_setupImageTypeCommandsIntegration(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.plugins.get("ImageCaptionUtils"),n=e.commands.get("imageTypeInline"),o=e.commands.get("imageTypeBlock"),a=e=>{if(!e.return)return;const{oldElement:n,newElement:o}=e.return;if(!n)return;if(t.isBlockImage(n)){const e=i.getCaptionFromImageModelElement(n);if(e)return void this._saveCaption(o,e)}const a=this._getSavedCaption(n);a&&this._saveCaption(o,a)};n&&this.listenTo(n,"execute",a,{priority:"low"}),o&&this.listenTo(o,"execute",a,{priority:"low"})}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?o.Element.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}_registerCaptionReconversion(){const e=this.editor,t=e.model,i=e.plugins.get("ImageUtils"),n=e.plugins.get("ImageCaptionUtils");t.document.on("change:data",(()=>{const o=t.document.differ.getChanges();for(const t of o){if("alt"!==t.attributeKey)continue;const o=t.range.start.nodeAfter;if(i.isBlockImage(o)){const t=n.getCaptionFromImageModelElement(o);if(!t)return;e.editing.reconvertItem(t)}}}))}}class Z extends e.Plugin{static get requires(){return[M]}static get pluginName(){return"ImageCaptionUI"}init(){const t=this.editor,i=t.editing.view,n=t.plugins.get("ImageCaptionUtils"),o=t.t;t.ui.componentFactory.add("toggleImageCaption",(a=>{const s=t.commands.get("toggleImageCaption"),r=new k.ButtonView(a);return r.set({icon:e.icons.caption,tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(s,"value","isEnabled"),r.bind("label").to(s,"value",(e=>o(e?"Toggle caption off":"Toggle caption on"))),this.listenTo(r,"execute",(()=>{t.execute("toggleImageCaption",{focusCaptionOnShow:!0});const e=n.getCaptionFromModelSelection(t.model.document.selection);if(e){const n=t.editing.mapper.toViewElement(e);i.scrollToTheSelection(),i.change((e=>{e.addClass("image__caption_highlighted",n)}))}t.editing.view.focus()})),r}))}}var $=i(560),H={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()($.Z,H);$.Z.locals;class K extends e.Plugin{static get requires(){return[q,Z]}static get pluginName(){return"ImageCaption"}}var G=i(448);function J(e){const t=e.map((e=>e.replace("+","\\+")));return new RegExp(`^image\\/(${t.join("|")})$`)}function Q(e){return new Promise(((t,i)=>{const n=e.getAttribute("src");fetch(n).then((e=>e.blob())).then((e=>{const i=X(e,n),o=i.replace("image/",""),a=new File([e],`image.${o}`,{type:i});t(a)})).catch((e=>e&&"TypeError"===e.name?function(e){return function(e){return new Promise(((t,i)=>{const n=r.global.document.createElement("img");n.addEventListener("load",(()=>{const e=r.global.document.createElement("canvas");e.width=n.width,e.height=n.height;e.getContext("2d").drawImage(n,0,0),e.toBlob((e=>e?t(e):i()))})),n.addEventListener("error",(()=>i())),n.src=e}))}(e).then((t=>{const i=X(t,e),n=i.replace("image/","");return new File([t],`image.${n}`,{type:i})}))}(n).then(t).catch(i):i(e)))}))}function X(e,t){return e.type?e.type:t.match(/data:(image\/\w+);base64/)?t.match(/data:(image\/\w+);base64/)[1].toLowerCase():"image/jpeg"}class Y extends e.Plugin{static get pluginName(){return"ImageUploadUI"}init(){const t=this.editor,i=t.t,n=n=>{const o=new G.FileDialogButtonView(n),a=t.commands.get("uploadImage"),s=t.config.get("image.upload.types"),r=J(s);return o.set({acceptedType:s.map((e=>`image/${e}`)).join(","),allowMultipleFiles:!0}),o.buttonView.set({label:i("Insert image"),icon:e.icons.image,tooltip:!0}),o.buttonView.bind("isEnabled").to(a),o.on("done",((e,i)=>{const n=Array.from(i).filter((e=>r.test(e.type)));n.length&&(t.execute("uploadImage",{file:n}),t.editing.view.focus())})),o};t.ui.componentFactory.add("uploadImage",n),t.ui.componentFactory.add("imageUpload",n)}}var ee=i(271),te={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(ee.Z,te);ee.Z.locals;var ie=i(948),ne={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(ie.Z,ne);ie.Z.locals;var oe=i(467),ae={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(oe.Z,ae);oe.Z.locals;class se extends e.Plugin{static get pluginName(){return"ImageUploadProgress"}constructor(e){super(e),this.placeholder="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw=="}init(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageBlock",((...e)=>this.uploadStatusChange(...e))),e.plugins.has("ImageInlineEditing")&&e.editing.downcastDispatcher.on("attribute:uploadStatus:imageInline",((...e)=>this.uploadStatusChange(...e)))}uploadStatusChange(e,t,i){const n=this.editor,o=t.item,a=o.getAttribute("uploadId");if(!i.consumable.consume(t.item,e.name))return;const s=n.plugins.get("ImageUtils"),r=n.plugins.get(G.FileRepository),l=a?t.attributeNewValue:null,c=this.placeholder,g=n.editing.mapper.toViewElement(o),d=i.writer;if("reading"==l)return re(g,d),void le(s,c,g,d);if("uploading"==l){const e=r.loaders.get(a);return re(g,d),void(e?(ce(g,d),function(e,t,i,n){const o=function(e){const t=e.createUIElement("div",{class:"ck-progress-bar"});return e.setCustomProperty("progressBar",!0,t),t}(t);t.insert(t.createPositionAt(e,"end"),o),i.on("change:uploadedPercent",((e,t,i)=>{n.change((e=>{e.setStyle("width",i+"%",o)}))}))}(g,d,e,n.editing.view),function(e,t,i,n){if(n.data){const o=e.findViewImgElement(t);i.setAttribute("src",n.data,o)}}(s,g,d,e)):le(s,c,g,d))}"complete"==l&&r.loaders.get(a)&&function(e,t,i){const n=t.createUIElement("div",{class:"ck-image-upload-complete-icon"});t.insert(t.createPositionAt(e,"end"),n),setTimeout((()=>{i.change((e=>e.remove(e.createRangeOn(n))))}),3e3)}(g,d,n.editing.view),function(e,t){de(e,t,"progressBar")}(g,d),ce(g,d),function(e,t){t.removeClass("ck-appear",e)}(g,d)}}function re(e,t){e.hasClass("ck-appear")||t.addClass("ck-appear",e)}function le(e,t,i,n){i.hasClass("ck-image-upload-placeholder")||n.addClass("ck-image-upload-placeholder",i);const o=e.findViewImgElement(i);o.getAttribute("src")!==t&&n.setAttribute("src",t,o),ge(i,"placeholder")||n.insert(n.createPositionAfter(o),function(e){const t=e.createUIElement("div",{class:"ck-upload-placeholder-loader"});return e.setCustomProperty("placeholder",!0,t),t}(n))}function ce(e,t){e.hasClass("ck-image-upload-placeholder")&&t.removeClass("ck-image-upload-placeholder",e),de(e,t,"placeholder")}function ge(e,t){for(const i of e.getChildren())if(i.getCustomProperty(t))return i}function de(e,t,i){const n=ge(e,i);n&&t.remove(t.createRangeOn(n))}class me extends e.Command{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils"),i=e.model.document.selection.getSelectedElement();this.isEnabled=t.isImageAllowed()||t.isImage(i)}execute(e){const t=(0,r.toArray)(e.file),i=this.editor.model.document.selection,n=this.editor.plugins.get("ImageUtils"),o=Object.fromEntries(i.getAttributes());t.forEach(((e,t)=>{const a=i.getSelectedElement();if(t&&a&&n.isImage(a)){const t=this.editor.model.createPositionAfter(a);this._uploadImage(e,o,t)}else this._uploadImage(e,o)}))}_uploadImage(e,t,i){const n=this.editor,o=n.plugins.get(G.FileRepository).createLoader(e),a=n.plugins.get("ImageUtils");o&&a.insertImage({...t,uploadId:o.id},i)}}class ue extends e.Plugin{static get requires(){return[G.FileRepository,k.Notification,t.ClipboardPipeline,m]}static get pluginName(){return"ImageUploadEditing"}constructor(e){super(e),e.config.define("image",{upload:{types:["jpeg","png","gif","bmp","webp","tiff"]}}),this._uploadImageElements=new Map}init(){const e=this.editor,t=e.model.document,i=e.conversion,n=e.plugins.get(G.FileRepository),a=e.plugins.get("ImageUtils"),s=J(e.config.get("image.upload.types")),r=new me(e);e.commands.add("uploadImage",r),e.commands.add("imageUpload",r),i.for("upcast").attributeToAttribute({view:{name:"img",key:"uploadId"},model:"uploadId"}),this.listenTo(e.editing.view.document,"clipboardInput",((t,i)=>{if(n=i.dataTransfer,Array.from(n.types).includes("text/html")&&""!==n.getData("text/html"))return;var n;const o=Array.from(i.dataTransfer.files).filter((e=>!!e&&s.test(e.type)));o.length&&(t.stop(),e.model.change((t=>{i.targetRanges&&t.setSelection(i.targetRanges.map((t=>e.editing.mapper.toModelRange(t)))),e.model.enqueueChange((()=>{e.execute("uploadImage",{file:o})}))})))})),this.listenTo(e.plugins.get("ClipboardPipeline"),"inputTransformation",((t,i)=>{const s=Array.from(e.editing.view.createRangeIn(i.content)).filter((e=>function(e,t){return!(!e.isInlineImageView(t)||!t.getAttribute("src"))&&(t.getAttribute("src").match(/^data:image\/\w+;base64,/g)||t.getAttribute("src").match(/^blob:/g))}(a,e.item)&&!e.item.getAttribute("uploadProcessed"))).map((e=>({promise:Q(e.item),imageElement:e.item})));if(!s.length)return;const r=new o.UpcastWriter(e.editing.view.document);for(const e of s){r.setAttribute("uploadProcessed",!0,e.imageElement);const t=n.createLoader(e.promise);t&&(r.setAttribute("src","",e.imageElement),r.setAttribute("uploadId",t.id,e.imageElement))}})),e.editing.view.document.on("dragover",((e,t)=>{t.preventDefault()})),t.on("change",(()=>{const i=t.differ.getChanges({includeChangesInGraveyard:!0}).reverse(),o=new Set;for(const t of i)if("insert"==t.type&&"$text"!=t.name){const i=t.position.nodeAfter,a="$graveyard"==t.position.root.rootName;for(const t of pe(e,i)){const e=t.getAttribute("uploadId");if(!e)continue;const i=n.loaders.get(e);i&&(a?o.has(e)||i.abort():(o.add(e),this._uploadImageElements.set(e,t),"idle"==i.status&&this._readAndUpload(i)))}}})),this.on("uploadComplete",((e,{imageElement:t,data:i})=>{const n=i.urls?i.urls:i;this.editor.model.change((e=>{e.setAttribute("src",n.default,t),this._parseAndSetSrcsetAttributeOnImage(n,t,e)}))}),{priority:"low"})}afterInit(){const e=this.editor.model.schema;this.editor.plugins.has("ImageBlockEditing")&&e.extend("imageBlock",{allowAttributes:["uploadId","uploadStatus"]}),this.editor.plugins.has("ImageInlineEditing")&&e.extend("imageInline",{allowAttributes:["uploadId","uploadStatus"]})}_readAndUpload(e){const t=this.editor,i=t.model,n=t.locale.t,o=t.plugins.get(G.FileRepository),a=t.plugins.get(k.Notification),s=t.plugins.get("ImageUtils"),l=this._uploadImageElements;return i.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("uploadStatus","reading",l.get(e.id))})),e.read().then((()=>{const n=e.upload(),o=l.get(e.id);if(r.env.isSafari){const e=t.editing.mapper.toViewElement(o),i=s.findViewImgElement(e);t.editing.view.once("render",(()=>{if(!i.parent)return;const e=t.editing.view.domConverter.mapViewToDom(i.parent);if(!e)return;const n=e.style.display;e.style.display="none",e._ckHack=e.offsetHeight,e.style.display=n}))}return i.enqueueChange({isUndoable:!1},(e=>{e.setAttribute("uploadStatus","uploading",o)})),n})).then((t=>{i.enqueueChange({isUndoable:!1},(i=>{const n=l.get(e.id);i.setAttribute("uploadStatus","complete",n),this.fire("uploadComplete",{data:t,imageElement:n})})),c()})).catch((t=>{if("error"!==e.status&&"aborted"!==e.status)throw t;"error"==e.status&&t&&a.showWarning(t,{title:n("Upload failed"),namespace:"upload"}),i.enqueueChange({isUndoable:!1},(t=>{t.remove(l.get(e.id))})),c()}));function c(){i.enqueueChange({isUndoable:!1},(t=>{const i=l.get(e.id);t.removeAttribute("uploadId",i),t.removeAttribute("uploadStatus",i),l.delete(e.id)})),o.destroyLoader(e)}}_parseAndSetSrcsetAttributeOnImage(e,t,i){let n=0;const o=Object.keys(e).filter((e=>{const t=parseInt(e,10);if(!isNaN(t))return n=Math.max(n,t),!0})).map((t=>`${e[t]} ${t}w`)).join(", ");""!=o&&i.setAttribute("srcset",{data:o,width:n},t)}}function pe(e,t){const i=e.plugins.get("ImageUtils");return Array.from(e.model.createRangeOn(t)).filter((e=>i.isImage(e.item))).map((e=>e.item))}class he extends e.Plugin{static get pluginName(){return"ImageUpload"}static get requires(){return[ue,Y,se]}}var fe=i(439),be={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(fe.Z,be);fe.Z.locals;class ke extends k.View{constructor(e,t={}){super(e);const i=this.bindTemplate;this.set("class",t.class||null),this.children=this.createCollection(),t.children&&t.children.forEach((e=>this.children.add(e))),this.set("_role",null),this.set("_ariaLabelledBy",null),t.labelView&&this.set({_role:"group",_ariaLabelledBy:t.labelView.id}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__row",i.to("class")],role:i.to("_role"),"aria-labelledby":i.to("_ariaLabelledBy")},children:this.children})}}var we=i(91),Ie={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(we.Z,Ie);we.Z.locals;class ve extends k.View{constructor(e,t){super(e);const{insertButtonView:i,cancelButtonView:n}=this._createActionButtons(e);if(this.insertButtonView=i,this.cancelButtonView=n,this.set("imageURLInputValue",""),this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this._focusables=new k.ViewCollection,this._focusCycler=new k.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.set("_integrations",new r.Collection),t)for(const[e,i]of Object.entries(t))"insertImageViaUrl"===e&&(i.fieldView.bind("value").to(this,"imageURLInputValue",(e=>e||"")),i.fieldView.on("input",(()=>{this.imageURLInputValue=i.fieldView.element.value.trim()}))),i.name=e,this._integrations.add(i);this.setTemplate({tag:"form",attributes:{class:["ck","ck-image-insert-form"],tabindex:"-1"},children:[...this._integrations,new ke(e,{children:[this.insertButtonView,this.cancelButtonView],class:"ck-image-insert-form__action-row"})]})}render(){super.render(),(0,k.submitHandler)({view:this});const e=[...this._integrations,this.insertButtonView,this.cancelButtonView];e.forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element);const t=e=>e.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t),this.listenTo(e[0].element,"selectstart",((e,t)=>{t.stopPropagation()}),{priority:"high"})}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}getIntegration(e){return this._integrations.find((t=>t.name===e))}_createActionButtons(t){const i=t.t,n=new k.ButtonView(t),o=new k.ButtonView(t);return n.set({label:i("Insert"),icon:e.icons.check,class:"ck-button-save",type:"submit",withText:!0,isEnabled:this.imageURLInputValue}),o.set({label:i("Cancel"),icon:e.icons.cancel,class:"ck-button-cancel",withText:!0}),n.bind("isEnabled").to(this,"imageURLInputValue",(e=>!!e)),n.delegate("execute").to(this,"submit"),o.delegate("execute").to(this,"cancel"),{insertButtonView:n,cancelButtonView:o}}focus(){this._focusCycler.focusFirst()}}function ye(e){const t=e.t,i=new k.LabeledFieldView(e,k.createLabeledInputText);return i.set({label:t("Insert image via URL")}),i.fieldView.placeholder="https://example.com/image.png",i}class _e extends e.Plugin{static get pluginName(){return"ImageInsertUI"}init(){const e=this.editor,t=e=>this._createDropdownView(e);e.ui.componentFactory.add("insertImage",t),e.ui.componentFactory.add("imageInsert",t)}_createDropdownView(t){const i=this.editor,n=t.t,o=i.commands.get("uploadImage"),a=i.commands.get("insertImage");this.dropdownView=(0,k.createDropdown)(t,o?k.SplitButtonView:void 0);const s=this.dropdownView.buttonView,r=this.dropdownView.panelView;if(s.set({label:n("Insert image"),icon:e.icons.image,tooltip:!0}),r.extendTemplate({attributes:{class:"ck-image-insert__panel"}}),o){const e=this.dropdownView.buttonView;e.actionView=i.ui.componentFactory.create("uploadImage"),e.actionView.extendTemplate({attributes:{class:"ck ck-button ck-splitbutton__action"}})}return this._setUpDropdown(o||a)}_setUpDropdown(e){const t=this.editor,i=t.t,n=new ve(t.locale,function(e){const t=e.config.get("image.insert.integrations"),i=e.plugins.get("ImageInsertUI"),n={insertImageViaUrl:ye(e.locale)};if(!t)return n;if(t.find((e=>"openCKFinder"===e))&&e.ui.componentFactory.has("ckfinder")){const t=e.ui.componentFactory.create("ckfinder");t.set({withText:!0,class:"ck-image-insert__ck-finder-button"}),t.delegate("execute").to(i,"cancel"),n.openCKFinder=t}return t.reduce(((t,i)=>(n[i]?t[i]=n[i]:e.ui.componentFactory.has(i)&&(t[i]=e.ui.componentFactory.create(i)),t)),{})}(t)),o=n.insertButtonView,a=n.getIntegration("insertImageViaUrl"),s=this.dropdownView,r=s.panelView,l=this.editor.plugins.get("ImageUtils");function c(){t.editing.view.focus(),s.isOpen=!1}return s.bind("isEnabled").to(e),s.buttonView.once("open",(()=>{r.children.add(n)})),s.on("change:isOpen",(()=>{const e=t.model.document.selection.getSelectedElement();s.isOpen&&(l.isImage(e)?(n.imageURLInputValue=e.getAttribute("src"),o.label=i("Update"),a.label=i("Update image URL")):(n.imageURLInputValue="",o.label=i("Insert"),a.label=i("Insert image via URL")))}),{priority:"low"}),n.delegate("submit","cancel").to(s),this.delegate("cancel").to(s),s.on("submit",(()=>{c(),function(){const e=t.model.document.selection.getSelectedElement();l.isImage(e)?t.model.change((t=>{t.setAttribute("src",n.imageURLInputValue,e),t.removeAttribute("srcset",e),t.removeAttribute("sizes",e)})):t.execute("insertImage",{source:n.imageURLInputValue})}()})),s.on("cancel",(()=>{c()})),s}}class Ee extends e.Plugin{static get pluginName(){return"ImageInsertViaUrl"}static get requires(){return[_e]}}class xe extends e.Plugin{static get pluginName(){return"ImageInsert"}static get requires(){return[he,Ee,_e]}}class Ce extends e.Command{refresh(){const e=this.editor,t=e.plugins.get("ImageUtils").getClosestSelectedImageElement(e.model.document.selection);this.isEnabled=!!t,t&&t.hasAttribute("width")?this.value={width:t.getAttribute("width"),height:null}:this.value=null}execute(e){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils").getClosestSelectedImageElement(i.document.selection);this.value={width:e.width,height:null},n&&i.change((t=>{t.setAttribute("width",e.width,n)}))}}class Se extends e.Plugin{static get requires(){return[m]}static get pluginName(){return"ImageResizeEditing"}constructor(e){super(e),e.config.define("image",{resizeUnit:"%",resizeOptions:[{name:"resizeImage:original",value:null,icon:"original"},{name:"resizeImage:25",value:"25",icon:"small"},{name:"resizeImage:50",value:"50",icon:"medium"},{name:"resizeImage:75",value:"75",icon:"large"}]})}init(){const e=this.editor,t=new Ce(e);this._registerSchema(),this._registerConverters("imageBlock"),this._registerConverters("imageInline"),e.commands.add("resizeImage",t),e.commands.add("imageResize",t)}_registerSchema(){this.editor.plugins.has("ImageBlockEditing")&&this.editor.model.schema.extend("imageBlock",{allowAttributes:"width"}),this.editor.plugins.has("ImageInlineEditing")&&this.editor.model.schema.extend("imageInline",{allowAttributes:"width"})}_registerConverters(e){const t=this.editor;t.conversion.for("downcast").add((t=>t.on(`attribute:width:${e}`,((e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=i.writer,o=i.mapper.toViewElement(t.item);null!==t.attributeNewValue?(n.setStyle("width",t.attributeNewValue,o),n.addClass("image_resized",o)):(n.removeStyle("width",o),n.removeClass("image_resized",o))})))),t.conversion.for("upcast").attributeToAttribute({view:{name:"imageBlock"===e?"figure":"img",styles:{width:/.+/}},model:{key:"width",value:e=>e.getStyle("width")}})}}const Ae={small:e.icons.objectSizeSmall,medium:e.icons.objectSizeMedium,large:e.icons.objectSizeLarge,original:e.icons.objectSizeFull};class Te extends e.Plugin{static get requires(){return[Se]}static get pluginName(){return"ImageResizeButtons"}constructor(e){super(e),this._resizeUnit=e.config.get("image.resizeUnit")}init(){const e=this.editor,t=e.config.get("image.resizeOptions"),i=e.commands.get("resizeImage");this.bind("isEnabled").to(i);for(const e of t)this._registerImageResizeButton(e);this._registerImageResizeDropdown(t)}_registerImageResizeButton(e){const t=this.editor,{name:i,value:n,icon:o}=e,a=n?n+this._resizeUnit:null;t.ui.componentFactory.add(i,(i=>{const n=new k.ButtonView(i),s=t.commands.get("resizeImage"),l=this._getOptionLabelValue(e,!0);if(!Ae[o])throw new r.CKEditorError("imageresizebuttons-missing-icon",t,e);return n.set({label:l,icon:Ae[o],tooltip:l,isToggleable:!0}),n.bind("isEnabled").to(this),n.bind("isOn").to(s,"value",Be(a)),this.listenTo(n,"execute",(()=>{t.execute("resizeImage",{width:a})})),n}))}_registerImageResizeDropdown(e){const t=this.editor,i=t.t,n=e.find((e=>!e.value)),o=o=>{const a=t.commands.get("resizeImage"),s=(0,k.createDropdown)(o,k.DropdownButtonView),r=s.buttonView;return r.set({tooltip:i("Resize image"),commandValue:n.value,icon:Ae.medium,isToggleable:!0,label:this._getOptionLabelValue(n),withText:!0,class:"ck-resize-image-button"}),r.bind("label").to(a,"value",(e=>e&&e.width?e.width:this._getOptionLabelValue(n))),s.bind("isOn").to(a),s.bind("isEnabled").to(this),(0,k.addListToDropdown)(s,this._getResizeDropdownListItemDefinitions(e,a)),s.listView.ariaLabel=i("Image resize list"),this.listenTo(s,"execute",(e=>{t.execute(e.source.commandName,{width:e.source.commandValue}),t.editing.view.focus()})),s};t.ui.componentFactory.add("resizeImage",o),t.ui.componentFactory.add("imageResize",o)}_getOptionLabelValue(e,t){const i=this.editor.t;return e.label?e.label:t?e.value?i("Resize image to %0",e.value+this._resizeUnit):i("Resize image to the original size"):e.value?e.value+this._resizeUnit:i("Original")}_getResizeDropdownListItemDefinitions(e,t){const i=new r.Collection;return e.map((e=>{const n=e.value?e.value+this._resizeUnit:null,o={type:"button",model:new k.Model({commandName:"resizeImage",commandValue:n,label:this._getOptionLabelValue(e),withText:!0,icon:null})};o.model.bind("isOn").to(t,"value",Be(n)),i.add(o)})),i}}function Be(e){return t=>null===e&&t===e||t&&t.width===e}const Ve=/(image|image-inline)/,Ue="image_resized";class Re extends e.Plugin{static get requires(){return[l.WidgetResize]}static get pluginName(){return"ImageResizeHandles"}init(){const e=this.editor.commands.get("resizeImage");this.bind("isEnabled").to(e),this._setupResizerCreator()}_setupResizerCreator(){const e=this.editor,t=e.editing.view;t.addObserver(V),this.listenTo(t.document,"imageLoaded",((i,n)=>{if(!n.target.matches("figure.image.ck-widget > img,figure.image.ck-widget > picture > img,figure.image.ck-widget > a > img,figure.image.ck-widget > a > picture > img,span.image-inline.ck-widget > img,span.image-inline.ck-widget > picture > img"))return;const o=e.editing.view.domConverter,a=o.domToView(n.target).findAncestor({classes:Ve});let s=this.editor.plugins.get(l.WidgetResize).getResizerByViewElement(a);if(s)return void s.redraw();const r=e.editing.mapper,c=r.toModelElement(a);s=e.plugins.get(l.WidgetResize).attachTo({unit:e.config.get("image.resizeUnit"),modelElement:c,viewElement:a,editor:e,getHandleHost:e=>e.querySelector("img"),getResizeHost:()=>o.mapViewToDom(r.toViewElement(c.parent)),isCentered(){const e=c.getAttribute("imageStyle");return!e||"block"==e||"alignCenter"==e},onCommit(i){t.change((e=>{e.removeClass(Ue,a)})),e.execute("resizeImage",{width:i})}}),s.on("updateSize",(()=>{a.hasClass(Ue)||t.change((e=>{e.addClass(Ue,a)}))})),s.bind("isEnabled").to(this)}))}}var ze=i(601),Pe={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(ze.Z,Pe);ze.Z.locals;class Oe extends e.Plugin{static get requires(){return[Se,Re,Te]}static get pluginName(){return"ImageResize"}}class Ne extends e.Command{constructor(e,t){super(e),this._defaultStyles={imageBlock:!1,imageInline:!1},this._styles=new Map(t.map((e=>{if(e.isDefault)for(const t of e.modelElements)this._defaultStyles[t]=e.name;return[e.name,e]})))}refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled?e.hasAttribute("imageStyle")?this.value=e.getAttribute("imageStyle"):this.value=this._defaultStyles[e.name]:this.value=!1}execute(e={}){const t=this.editor,i=t.model,n=t.plugins.get("ImageUtils");i.change((t=>{const o=e.value;let a=n.getClosestSelectedImageElement(i.document.selection);o&&this.shouldConvertImageType(o,a)&&(this.editor.execute(n.isBlockImage(a)?"imageTypeInline":"imageTypeBlock"),a=n.getClosestSelectedImageElement(i.document.selection)),!o||this._styles.get(o).isDefault?t.removeAttribute("imageStyle",a):t.setAttribute("imageStyle",o,a)}))}shouldConvertImageType(e,t){return!this._styles.get(e).modelElements.includes(t.name)}}const{objectFullWidth:Fe,objectInline:Le,objectLeft:De,objectRight:je,objectCenter:Me,objectBlockLeft:We,objectBlockRight:qe}=e.icons,Ze={get inline(){return{name:"inline",title:"In line",icon:Le,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:De,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:We,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:Me,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:je,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:qe,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:Me,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:je,modelElements:["imageBlock"],className:"image-style-side"}}},$e={full:Fe,left:We,right:qe,center:Me,inlineLeft:De,inlineRight:je,inline:Le},He=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function Ke(e){(0,r.logWarning)("image-style-configuration-definition-invalid",e)}const Ge={normalizeStyles:function(e){return(e.configuredStyles.options||[]).map((e=>function(e){e="string"==typeof e?Ze[e]?{...Ze[e]}:{name:e}:function(e,t){const i={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(i[n]=e[n]);return i}(Ze[e.name],e);"string"==typeof e.icon&&(e.icon=$e[e.icon]||e.icon);return e}(e))).filter((t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:i}){const{modelElements:n,name:o}=e;if(!(n&&n.length&&o))return Ke({style:e}),!1;{const o=[t?"imageBlock":null,i?"imageInline":null];if(!n.some((e=>o.includes(e))))return(0,r.logWarning)("image-style-missing-dependency",{style:e,missingPlugins:n.map((e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(t,e)))},getDefaultStylesConfiguration:function(e,t){return e&&t?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:e?{options:["block","side"]}:t?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(e){return e.has("ImageBlockEditing")&&e.has("ImageInlineEditing")?[...He]:[]},warnInvalidStyle:Ke,DEFAULT_OPTIONS:Ze,DEFAULT_ICONS:$e,DEFAULT_DROPDOWN_DEFINITIONS:He};function Je(e,t){for(const i of t)if(i.name===e)return i}class Qe extends e.Plugin{static get pluginName(){return"ImageStyleEditing"}static get requires(){return[m]}init(){const{normalizeStyles:e,getDefaultStylesConfiguration:t}=Ge,i=this.editor,n=i.plugins.has("ImageBlockEditing"),o=i.plugins.has("ImageInlineEditing");i.config.define("image.styles",t(n,o)),this.normalizedStyles=e({configuredStyles:i.config.get("image.styles"),isBlockPluginLoaded:n,isInlinePluginLoaded:o}),this._setupConversion(n,o),this._setupPostFixer(),i.commands.add("imageStyle",new Ne(i,this.normalizedStyles))}_setupConversion(e,t){const i=this.editor,n=i.model.schema,o=(a=this.normalizedStyles,(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=Je(t.attributeNewValue,a),o=Je(t.attributeOldValue,a),s=i.mapper.toViewElement(t.item),r=i.writer;o&&r.removeClass(o.className,s),n&&r.addClass(n.className,s)});var a;const s=function(e){const t={imageInline:e.filter((e=>!e.isDefault&&e.modelElements.includes("imageInline"))),imageBlock:e.filter((e=>!e.isDefault&&e.modelElements.includes("imageBlock")))};return(e,i,n)=>{if(!i.modelRange)return;const o=i.viewItem,a=(0,r.first)(i.modelRange.getItems());if(a&&n.schema.checkAttribute(a,"imageStyle"))for(const e of t[a.name])n.consumable.consume(o,{classes:e.className})&&n.writer.setAttribute("imageStyle",e.name,a)}}(this.normalizedStyles);i.editing.downcastDispatcher.on("attribute:imageStyle",o),i.data.downcastDispatcher.on("attribute:imageStyle",o),e&&(n.extend("imageBlock",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:figure",s,{priority:"low"})),t&&(n.extend("imageInline",{allowAttributes:"imageStyle"}),i.data.upcastDispatcher.on("element:img",s,{priority:"low"}))}_setupPostFixer(){const e=this.editor,t=e.model.document,i=e.plugins.get(m),n=new Map(this.normalizedStyles.map((e=>[e.name,e])));t.registerPostFixer((e=>{let o=!1;for(const a of t.differ.getChanges())if("insert"==a.type||"attribute"==a.type&&"imageStyle"==a.attributeKey){let t="insert"==a.type?a.position.nodeAfter:a.range.start.nodeAfter;if(t&&t.is("element","paragraph")&&t.childCount>0&&(t=t.getChild(0)),!i.isImage(t))continue;const s=t.getAttribute("imageStyle");if(!s)continue;const r=n.get(s);r&&r.modelElements.includes(t.name)||(e.removeAttribute("imageStyle",t),o=!0)}return o}))}}const Xe=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)};const Ye=function(e){return e};var et=i(29),tt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};I()(et.Z,tt);et.Z.locals;class it extends e.Plugin{static get requires(){return[Qe]}static get pluginName(){return"ImageStyleUI"}get localizedDefaultStylesTitles(){const e=this.editor.t;return{"Wrap text":e("Wrap text"),"Break text":e("Break text"),"In line":e("In line"),"Full size image":e("Full size image"),"Side image":e("Side image"),"Left aligned image":e("Left aligned image"),"Centered image":e("Centered image"),"Right aligned image":e("Right aligned image")}}init(){const e=this.editor.plugins,t=this.editor.config.get("image.toolbar")||[],i=nt(e.get("ImageStyleEditing").normalizedStyles,this.localizedDefaultStylesTitles);for(const e of i)this._createButton(e);const n=nt([...t.filter(Xe),...Ge.getDefaultDropdownDefinitions(e)],this.localizedDefaultStylesTitles);for(const e of n)this._createDropdown(e,i)}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,(n=>{let o;const{defaultItem:a,items:s,title:r}=e,l=s.filter((e=>t.find((({name:t})=>ot(t)===e)))).map((e=>{const t=i.create(e);return e===a&&(o=t),t}));s.length!==l.length&&Ge.warnInvalidStyle({dropdown:e});const c=(0,k.createDropdown)(n,k.SplitButtonView),g=c.buttonView,d=g.arrowView;return(0,k.addToolbarToDropdown)(c,l,{enableActiveItemFocusOnDropdownOpen:!0}),g.set({label:at(r,o.label),class:null,tooltip:!0}),d.unbind("label"),d.set({label:r}),g.bind("icon").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Ye);return t<0?o.icon:l[t].icon})),g.bind("label").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Ye);return at(r,t<0?o.label:l[t].label)})),g.bind("isOn").toMany(l,"isOn",((...e)=>e.some(Ye))),g.bind("class").toMany(l,"isOn",((...e)=>e.some(Ye)?"ck-splitbutton_flatten":null)),g.on("execute",(()=>{l.some((({isOn:e})=>e))?c.isOpen=!c.isOpen:o.fire("execute")})),c.bind("isEnabled").toMany(l,"isEnabled",((...e)=>e.some(Ye))),this.listenTo(c,"execute",(()=>{this.editor.editing.view.focus()})),c}))}_createButton(e){const t=e.name;this.editor.ui.componentFactory.add(ot(t),(i=>{const n=this.editor.commands.get("imageStyle"),o=new k.ButtonView(i);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(n,"isEnabled"),o.bind("isOn").to(n,"value",(e=>e===t)),o.on("execute",this._executeCommand.bind(this,t)),o}))}_executeCommand(e){this.editor.execute("imageStyle",{value:e}),this.editor.editing.view.focus()}}function nt(e,t){for(const i of e)t[i.title]&&(i.title=t[i.title]);return e}function ot(e){return`imageStyle:${e}`}function at(e,t){return(e?e+": ":"")+t}class st extends e.Plugin{static get requires(){return[Qe,it]}static get pluginName(){return"ImageStyle"}}class rt extends e.Plugin{static get requires(){return[l.WidgetToolbarRepository,m]}static get pluginName(){return"ImageToolbar"}afterInit(){const e=this.editor,t=e.t,i=e.plugins.get(l.WidgetToolbarRepository),n=e.plugins.get("ImageUtils");var o;i.register("image",{ariaLabel:t("Image toolbar"),items:(o=e.config.get("image.toolbar")||[],o.map((e=>Xe(e)?e.name:e))),getRelatedElement:e=>n.getClosestSelectedImageWidget(e)})}}class lt extends e.Plugin{static get requires(){return[R,m]}static get pluginName(){return"PictureEditing"}afterInit(){const e=this.editor;e.plugins.has("ImageBlockEditing")&&e.model.schema.extend("imageBlock",{allowAttributes:["sources"]}),e.plugins.has("ImageInlineEditing")&&e.model.schema.extend("imageInline",{allowAttributes:["sources"]}),this._setupConversion(),this._setupImageUploadEditingIntegration()}_setupConversion(){const e=this.editor,t=e.conversion,i=e.plugins.get("ImageUtils");t.for("upcast").add(function(e){const t=["srcset","media","type","sizes"];return e=>{e.on("element:picture",i)};function i(i,n,o){const a=n.viewItem;if(!o.consumable.test(a,{name:!0}))return;const s=new Map;for(const e of a.getChildren())if(e.is("element","source")){const i={};for(const n of t)e.hasAttribute(n)&&o.consumable.test(e,{attributes:n})&&(i[n]=e.getAttribute(n));Object.keys(i).length&&s.set(e,i)}const l=e.findViewImgElement(a);if(!l)return;let c=n.modelCursor.parent;if(!c.is("element","imageBlock")){const e=o.convertItem(l,n.modelCursor);n.modelRange=e.modelRange,n.modelCursor=e.modelCursor,c=(0,r.first)(e.modelRange.getItems())}o.consumable.consume(a,{name:!0});for(const[e,t]of s)o.consumable.consume(e,{attributes:Object.keys(t)});s.size&&o.writer.setAttribute("sources",Array.from(s.values()),c),o.convertChildren(a,c)}}(i)),t.for("downcast").add(function(e){return e=>{e.on("attribute:sources:imageBlock",t),e.on("attribute:sources:imageInline",t)};function t(t,i,n){if(!n.consumable.consume(i.item,t.name))return;const o=n.writer,a=n.mapper.toViewElement(i.item),s=e.findViewImgElement(a);if(i.attributeNewValue&&i.attributeNewValue.length){const e=o.createContainerElement("picture",null,i.attributeNewValue.map((e=>o.createEmptyElement("source",e)))),t=[];let n=s.parent;for(;n&&n.is("attributeElement");){const e=n.parent;o.unwrap(o.createRangeOn(s),n),t.unshift(n),n=e}o.insert(o.createPositionBefore(s),e),o.move(o.createRangeOn(s),o.createPositionAt(e,"end"));for(const i of t)o.wrap(o.createRangeOn(e),i)}else if(s.parent.is("element","picture")){const e=s.parent;o.move(o.createRangeOn(s),o.createPositionBefore(e)),o.remove(e)}}}(i))}_setupImageUploadEditingIntegration(){const e=this.editor;e.plugins.has("ImageUploadEditing")&&this.listenTo(e.plugins.get("ImageUploadEditing"),"uploadComplete",((t,{imageElement:i,data:n})=>{const o=n.sources;o&&e.model.change((e=>{e.setAttributes({sources:o},i)}))}))}}})(),(window.CKEditor5=window.CKEditor5||{}).image=n})(); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/image/translations/gl.js b/web/core/assets/vendor/ckeditor5/image/translations/gl.js index a6d38ae2924bd8ab38e701f64db5504f105f4632..ee367fbf5ab0a2edd802148af27d1e89dd501e78 100644 --- a/web/core/assets/vendor/ckeditor5/image/translations/gl.js +++ b/web/core/assets/vendor/ckeditor5/image/translations/gl.js @@ -1 +1 @@ -!function(a){const e=a.gl=a.gl||{};e.dictionary=Object.assign(e.dictionary||{},{"Break text":"Romper o texto","Caption for image: %0":"","Caption for the image":"","Centered image":"Imaxe centrada horizontalmente","Change image text alternative":"Cambiar o texto alternativo da imaxe","Enter image caption":"Introduza o título da imaxe","Full size image":"Imaxe a tamaño completo","Image resize list":"Lista de tamaños de imaxe","Image toolbar":"Barra de ferramentas de imaxe","image widget":"Trebello de imaxe","In line":"En liña",Insert:"Inserir","Insert image":"Inserir imaxe","Insert image via URL":"Inserir imaxe a través de URL","Left aligned image":"Imaxe aliñada á esquerda",Original:"Orixinal","Resize image":"Redimensionar a imaxe","Resize image to %0":"Redimensionar a imaxe ao %0","Resize image to the original size":"Aplicar o tamaño orixinal da imaxe","Right aligned image":"Imaxe aliñada á dereita","Side image":"Lado da imaxe","Text alternative":"Texto alternativo",Update:"Actualizar","Update image URL":"Actualizar o URL da imaxe","Upload failed":"Fallou o envío","Wrap text":"Envolver o texto"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(a){const e=a.gl=a.gl||{};e.dictionary=Object.assign(e.dictionary||{},{"Break text":"Romper o texto","Caption for image: %0":"Lenda da imaxe: %0","Caption for the image":"Lenda da imaxe","Centered image":"Imaxe centrada horizontalmente","Change image text alternative":"Cambiar o texto alternativo da imaxe","Enter image caption":"Introduza o título da imaxe","Full size image":"Imaxe a tamaño completo","Image resize list":"Lista de tamaños de imaxe","Image toolbar":"Barra de ferramentas de imaxe","image widget":"Trebello de imaxe","In line":"En liña",Insert:"Inserir","Insert image":"Inserir imaxe","Insert image via URL":"Inserir imaxe a través de URL","Left aligned image":"Imaxe aliñada á esquerda",Original:"Orixinal","Resize image":"Redimensionar a imaxe","Resize image to %0":"Redimensionar a imaxe ao %0","Resize image to the original size":"Aplicar o tamaño orixinal da imaxe","Right aligned image":"Imaxe aliñada á dereita","Side image":"Lado da imaxe","Text alternative":"Texto alternativo",Update:"Actualizar","Update image URL":"Actualizar o URL da imaxe","Upload failed":"Fallou o envío","Wrap text":"Envolver o texto"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/image/translations/tt.js b/web/core/assets/vendor/ckeditor5/image/translations/tt.js new file mode 100644 index 0000000000000000000000000000000000000000..6df4d65c7a480f490e8f1393a23fc1b4c2b91728 --- /dev/null +++ b/web/core/assets/vendor/ckeditor5/image/translations/tt.js @@ -0,0 +1 @@ +!function(e){const i=e.tt=e.tt||{};i.dictionary=Object.assign(i.dictionary||{},{"Break text":"","Caption for image: %0":"","Caption for the image":"","Centered image":"","Change image text alternative":"","Enter image caption":"","Full size image":"","Image resize list":"","Image toolbar":"","image widget":"","In line":"",Insert:"","Insert image":"","Insert image via URL":"","Left aligned image":"",Original:"","Resize image":"","Resize image to %0":"","Resize image to the original size":"","Right aligned image":"","Side image":"","Text alternative":"",Update:"Яңарт","Update image URL":"","Upload failed":"","Wrap text":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/language/translations/tt.js b/web/core/assets/vendor/ckeditor5/language/translations/tt.js new file mode 100644 index 0000000000000000000000000000000000000000..c8431522a5f968adf8df1999e2955ba322513d45 --- /dev/null +++ b/web/core/assets/vendor/ckeditor5/language/translations/tt.js @@ -0,0 +1 @@ +!function(n){const a=n.tt=n.tt||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose language":"",Language:"Тел","Remove language":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/language/translations/ur.js b/web/core/assets/vendor/ckeditor5/language/translations/ur.js new file mode 100644 index 0000000000000000000000000000000000000000..4a39256a00774437e0a852aa223ef9378f672518 --- /dev/null +++ b/web/core/assets/vendor/ckeditor5/language/translations/ur.js @@ -0,0 +1 @@ +!function(n){const a=n.ur=n.ur||{};a.dictionary=Object.assign(a.dictionary||{},{"Choose language":"زبان کا انتخاب",Language:"زبان","Remove language":"زبان ہٹائیں"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/link/link.js b/web/core/assets/vendor/ckeditor5/link/link.js index f1c8cea794881b31d1a73da0b0c9b59d728aceff..fbb3acc819759757ef9f75fe07f57d139c33f1c5 100644 --- a/web/core/assets/vendor/ckeditor5/link/link.js +++ b/web/core/assets/vendor/ckeditor5/link/link.js @@ -2,4 +2,4 @@ /*! * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md. - */(()=>{var e={23:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck .ck-link_selected{background:var(--ck-color-link-selected-background)}.ck .ck-link_selected span.image-inline{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-link-selected-background)}.ck .ck-fake-link-selection{background:var(--ck-color-link-fake-selection)}.ck .ck-fake-link-selection_collapsed{border-right:1px solid var(--ck-color-base-text);height:100%;margin-right:-1px;outline:1px solid hsla(0,0%,100%,.5)}",""]);const s=o},952:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-link-actions{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-link-actions .ck-link-actions__preview{display:inline-block}.ck.ck-link-actions .ck-link-actions__preview .ck-button__label{overflow:hidden}@media screen and (max-width:600px){.ck.ck-link-actions{flex-wrap:wrap}.ck.ck-link-actions .ck-link-actions__preview{flex-basis:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){flex-basis:50%}}.ck.ck-link-actions .ck-button.ck-link-actions__preview{padding-left:0;padding-right:0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{color:var(--ck-color-link-default);cursor:pointer;max-width:var(--ck-input-width);min-width:3em;padding:0 var(--ck-spacing-medium);text-align:center;text-overflow:ellipsis}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label:hover{text-decoration:underline}.ck.ck-link-actions .ck-button.ck-link-actions__preview,.ck.ck-link-actions .ck-button.ck-link-actions__preview:active,.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus,.ck.ck-link-actions .ck-button.ck-link-actions__preview:hover{background:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:active{box-shadow:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus .ck-button__label{text-decoration:underline}[dir=ltr] .ck.ck-link-actions .ck-button:not(:first-child),[dir=rtl] .ck.ck-link-actions .ck-button:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-actions .ck-button.ck-link-actions__preview{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{max-width:100%;min-width:0}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview),[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}}",""]);const s=o},871:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-link-form{display:flex}.ck.ck-link-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-link-form{flex-wrap:wrap}.ck.ck-link-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-link-form .ck-button{flex-basis:50%}}.ck.ck-link-form_layout-vertical{display:block}.ck.ck-link-form_layout-vertical .ck-button.ck-button-cancel,.ck.ck-link-form_layout-vertical .ck-button.ck-button-save{margin-top:var(--ck-spacing-medium)}.ck.ck-link-form_layout-vertical{min-width:var(--ck-input-width);padding:0}.ck.ck-link-form_layout-vertical .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-link-form_layout-vertical .ck-button{border:0;border-radius:0;border-top:1px solid var(--ck-color-base-border);margin:0;padding:var(--ck-spacing-standard);width:50%}[dir=ltr] .ck.ck-link-form_layout-vertical .ck-button,[dir=rtl] .ck.ck-link-form_layout-vertical .ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form_layout-vertical .ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}.ck.ck-link-form_layout-vertical .ck.ck-list{margin:var(--ck-spacing-standard) var(--ck-spacing-large)}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton{border:0;padding:0;width:100%}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover{background:none}",""]);const s=o},269:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck.ck-editor__editable a span.image-inline:after,.ck.ck-editor__editable figure.image>a:after{display:block;position:absolute}:root{--ck-link-image-indicator-icon-size:20;--ck-link-image-indicator-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck.ck-editor__editable a span.image-inline:after,.ck.ck-editor__editable figure.image>a:after{background-color:rgba(0,0,0,.4);background-image:url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzQ4Ljc0OCAwIDAgMS0uMjE3LjIwNiA1LjI1MSA1LjI1MSAwIDAgMS04LjUwMy01Ljk1NS43NDEuNzQxIDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NGwuMDA2LjAwNHptNS40OTQtNS4zMzVhLjc0OC43NDggMCAwIDEtLjEyLjI3NGwtMS4xNDcgMS42MzlhLjc1Ljc1IDAgMSAxLTEuMjI4LS44NmwuODYtMS4yM2EzLjc1IDMuNzUgMCAwIDAtNi4xNDQtNC4zMDFsLS44NiAxLjIyOWEuNzUuNzUgMCAwIDEtMS4yMjktLjg2bDEuMTQ4LTEuNjRhLjc0OC43NDggMCAwIDEgLjIxNy0uMjA2IDUuMjUxIDUuMjUxIDAgMCAxIDguNTAzIDUuOTU1em0tNC41NjMtMi41MzJhLjc1Ljc1IDAgMCAxIC4xODQgMS4wNDVsLTMuMTU1IDQuNTA1YS43NS43NSAwIDEgMS0xLjIyOS0uODZsMy4xNTUtNC41MDZhLjc1Ljc1IDAgMCAxIDEuMDQ1LS4xODR6Ii8+PC9zdmc+");background-position:50%;background-repeat:no-repeat;background-size:14px;border-radius:100%;content:"";height:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size));overflow:hidden;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);width:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size))}',""]);const s=o},764:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck-vertical-form .ck-button:after{bottom:var(--ck-spacing-small);content:"";position:absolute;right:-1px;top:var(--ck-spacing-small);width:0;z-index:1}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{bottom:var(--ck-spacing-small);content:"";position:absolute;right:-1px;top:var(--ck-spacing-small);width:0;z-index:1}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-large)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-width)*.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){border:0;border-radius:0;border-top:1px solid var(--ck-color-base-border);margin-top:var(--ck-spacing-large);padding:var(--ck-spacing-standard)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after,[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}',""]);const s=o},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=e(t);return t[2]?"@media ".concat(t[2]," {").concat(i,"}"):i})).join("")},t.i=function(e,i,n){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(n)for(var s=0;s<this.length;s++){var r=this[s][0];null!=r&&(o[r]=!0)}for(var a=0;a<e.length;a++){var c=[].concat(e[a]);n&&o[c[0]]||(i&&(c[2]?c[2]="".concat(i," and ").concat(c[2]):c[2]=i),t.push(c))}},t}},62:(e,t,i)=>{"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},s=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),r=[];function a(e){for(var t=-1,i=0;i<r.length;i++)if(r[i].identifier===e){t=i;break}return t}function c(e,t){for(var i={},n=[],o=0;o<e.length;o++){var s=e[o],c=t.base?s[0]+t.base:s[0],l=i[c]||0,u="".concat(c," ").concat(l);i[c]=l+1;var d=a(u),k={css:s[1],media:s[2],sourceMap:s[3]};-1!==d?(r[d].references++,r[d].updater(k)):r.push({identifier:u,updater:g(k,t),references:1}),n.push(u)}return n}function l(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var o=i.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var r=s(e.insert||"head");if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(t)}return t}var u,d=(u=[],function(e,t){return u[e]=t,u.filter(Boolean).join("\n")});function k(e,t,i,n){var o=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=d(t,o);else{var s=document.createTextNode(o),r=e.childNodes;r[t]&&e.removeChild(r[t]),r.length?e.insertBefore(s,r[t]):e.appendChild(s)}}function h(e,t,i){var n=i.css,o=i.media,s=i.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),s&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(s))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var f=null,m=0;function g(e,t){var i,n,o;if(t.singleton){var s=m++;i=f||(f=l(t)),n=k.bind(null,i,s,!1),o=k.bind(null,i,s,!0)}else i=l(t),n=h.bind(null,i,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(i)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var i=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<i.length;n++){var o=a(i[n]);r[o].references--}for(var s=c(e,t),l=0;l<i.length;l++){var u=a(i[l]);0===r[u].references&&(r[u].updater(),r.splice(u,1))}i=s}}}},945:(e,t,i)=>{e.exports=i(79)("./src/clipboard.js")},704:(e,t,i)=>{e.exports=i(79)("./src/core.js")},492:(e,t,i)=>{e.exports=i(79)("./src/engine.js")},181:(e,t,i)=>{e.exports=i(79)("./src/typing.js")},273:(e,t,i)=>{e.exports=i(79)("./src/ui.js")},209:(e,t,i)=>{e.exports=i(79)("./src/utils.js")},995:(e,t,i)=>{e.exports=i(79)("./src/widget.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var o=t[n];if(void 0!==o)return o.exports;var s=t[n]={id:n,exports:{}};return e[n](s,s.exports,i),s.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{AutoLink:()=>Ce,Link:()=>Me,LinkEditing:()=>ke,LinkImage:()=>Pe,LinkImageEditing:()=>je,LinkImageUI:()=>He,LinkUI:()=>Ee});var e=i(704),t=i(492),o=i(181),s=i(945),r=i(209);class a{constructor(){this._definitions=new Set}get length(){return this._definitions.size}add(e){Array.isArray(e)?e.forEach((e=>this._definitions.add(e))):this._definitions.add(e)}getDispatcher(){return e=>{e.on("attribute:linkHref",((e,t,i)=>{if(!i.consumable.test(t.item,"attribute:linkHref"))return;if(!t.item.is("selection")&&!i.schema.isInline(t.item))return;const n=i.writer,o=n.document.selection;for(const e of this._definitions){const s=n.createAttributeElement("a",e.attributes,{priority:5});e.classes&&n.addClass(e.classes,s);for(const t in e.styles)n.setStyle(t,e.styles[t],s);n.setCustomProperty("link",!0,s),e.callback(t.attributeNewValue)?t.item.is("selection")?n.wrap(o.getFirstRange(),s):n.wrap(i.mapper.toViewRange(t.range),s):n.unwrap(i.mapper.toViewRange(t.range),s)}}),{priority:"high"})}}getDispatcherForLinkedImage(){return e=>{e.on("attribute:linkHref:imageBlock",((e,t,{writer:i,mapper:n})=>{const o=n.toViewElement(t.item),s=Array.from(o.getChildren()).find((e=>"a"===e.name));for(const e of this._definitions){const n=(0,r.toMap)(e.attributes);if(e.callback(t.attributeNewValue)){for(const[e,t]of n)"class"===e?i.addClass(t,s):i.setAttribute(e,t,s);e.classes&&i.addClass(e.classes,s);for(const t in e.styles)i.setStyle(t,e.styles[t],s)}else{for(const[e,t]of n)"class"===e?i.removeClass(t,s):i.removeAttribute(e,s);e.classes&&i.removeClass(e.classes,s);for(const t in e.styles)i.removeStyle(t,s)}}}))}}}const c=function(e,t,i){var n=-1,o=e.length;t<0&&(t=-t>o?0:o+t),(i=i>o?o:i)<0&&(i+=o),o=t>i?0:i-t>>>0,t>>>=0;for(var s=Array(o);++n<o;)s[n]=e[n+t];return s};const l=function(e,t,i){var n=e.length;return i=void 0===i?n:i,!t&&i>=n?e:c(e,t,i)};var u=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");const d=function(e){return u.test(e)};const k=function(e){return e.split("")};var h="[\\ud800-\\udfff]",f="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",m="\\ud83c[\\udffb-\\udfff]",g="[^\\ud800-\\udfff]",b="(?:\\ud83c[\\udde6-\\uddff]){2}",p="[\\ud800-\\udbff][\\udc00-\\udfff]",w="(?:"+f+"|"+m+")"+"?",v="[\\ufe0e\\ufe0f]?",_=v+w+("(?:\\u200d(?:"+[g,b,p].join("|")+")"+v+w+")*"),y="(?:"+[g+f+"?",f,b,p,h].join("|")+")",A=RegExp(m+"(?="+m+")|"+y+_,"g");const x=function(e){return e.match(A)||[]};const I=function(e){return d(e)?x(e):k(e)};const S="object"==typeof global&&global&&global.Object===Object&&global;var T="object"==typeof self&&self&&self.Object===Object&&self;const E=(S||T||Function("return this")()).Symbol;const V=function(e,t){for(var i=-1,n=null==e?0:e.length,o=Array(n);++i<n;)o[i]=t(e[i],i,e);return o};const L=Array.isArray;var C=Object.prototype,D=C.hasOwnProperty,M=C.toString,j=E?E.toStringTag:void 0;const B=function(e){var t=D.call(e,j),i=e[j];try{e[j]=void 0;var n=!0}catch(e){}var o=M.call(e);return n&&(t?e[j]=i:delete e[j]),o};var N=Object.prototype.toString;const H=function(e){return N.call(e)};var O=E?E.toStringTag:void 0;const U=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":O&&O in Object(e)?B(e):H(e)};const P=function(e){return null!=e&&"object"==typeof e};const F=function(e){return"symbol"==typeof e||P(e)&&"[object Symbol]"==U(e)};var R=E?E.prototype:void 0,z=R?R.toString:void 0;const Z=function e(t){if("string"==typeof t)return t;if(L(t))return V(t,e)+"";if(F(t))return z?z.call(t):"";var i=t+"";return"0"==i&&1/t==-Infinity?"-0":i};const q=function(e){return null==e?"":Z(e)};const K=function(e){return function(t){t=q(t);var i=d(t)?I(t):void 0,n=i?i[0]:t.charAt(0),o=i?l(i,1).join(""):t.slice(1);return n[e]()+o}}("toUpperCase"),Q=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,$=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i,W=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,Y=/^((\w+:(\/{2,})?)|(\W))/i,G="Ctrl+K";function J(e,{writer:t}){const i=t.createAttributeElement("a",{href:e},{priority:5});return t.setCustomProperty("link",!0,i),i}function X(e){return function(e){return e.replace(Q,"").match($)}(e=String(e))?e:"#"}function ee(e,t){return!!e&&t.checkAttribute(e.name,"linkHref")}function te(e,t){const i=(n=e,W.test(n)?"mailto:":t);var n;const o=!!i&&!Y.test(e);return e&&o?i+e:e}function ie(e){window.open(e,"_blank","noopener")}class ne extends e.Command{constructor(e){super(e),this.manualDecorators=new r.Collection,this.automaticDecorators=new a}restoreManualDecoratorStates(){for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement()||(0,r.first)(t.getSelectedBlocks());ee(i,e.schema)?(this.value=i.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(i,"linkHref")):(this.value=t.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref"));for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}execute(e,t={}){const i=this.editor.model,n=i.document.selection,s=[],a=[];for(const e in t)t[e]?s.push(e):a.push(e);i.change((t=>{if(n.isCollapsed){const c=n.getFirstPosition();if(n.hasAttribute("linkHref")){const r=(0,o.findAttributeRange)(c,"linkHref",n.getAttribute("linkHref"),i);t.setAttribute("linkHref",e,r),s.forEach((e=>{t.setAttribute(e,!0,r)})),a.forEach((e=>{t.removeAttribute(e,r)})),t.setSelection(t.createPositionAfter(r.end.nodeBefore))}else if(""!==e){const o=(0,r.toMap)(n.getAttributes());o.set("linkHref",e),s.forEach((e=>{o.set(e,!0)}));const{end:a}=i.insertContent(t.createText(e,o),c);t.setSelection(a)}["linkHref",...s,...a].forEach((e=>{t.removeSelectionAttribute(e)}))}else{const o=i.schema.getValidRanges(n.getRanges(),"linkHref"),r=[];for(const e of n.getSelectedBlocks())i.schema.checkAttribute(e,"linkHref")&&r.push(t.createRangeOn(e));const c=r.slice();for(const e of o)this._isRangeToUpdate(e,r)&&c.push(e);for(const i of c)t.setAttribute("linkHref",e,i),s.forEach((e=>{t.setAttribute(e,!0,i)})),a.forEach((e=>{t.removeAttribute(e,i)}))}}))}_getDecoratorStateFromModel(e){const t=this.editor.model,i=t.document.selection,n=i.getSelectedElement();return ee(n,t.schema)?n.getAttribute(e):i.getAttribute(e)}_isRangeToUpdate(e,t){for(const i of t)if(i.containsRange(e))return!1;return!0}}class oe extends e.Command{refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement();ee(i,e.schema)?this.isEnabled=e.schema.checkAttribute(i,"linkHref"):this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref")}execute(){const e=this.editor,t=this.editor.model,i=t.document.selection,n=e.commands.get("link");t.change((e=>{const s=i.isCollapsed?[(0,o.findAttributeRange)(i.getFirstPosition(),"linkHref",i.getAttribute("linkHref"),t)]:t.schema.getValidRanges(i.getRanges(),"linkHref");for(const t of s)if(e.removeAttribute("linkHref",t),n)for(const i of n.manualDecorators)e.removeAttribute(i.id,t)}))}}class se{constructor({id:e,label:t,attributes:i,classes:n,styles:o,defaultValue:s}){this.id=e,this.set("value"),this.defaultValue=s,this.label=t,this.attributes=i,this.classes=n,this.styles=o}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}(0,r.mix)(se,r.ObservableMixin);var re=i(62),ae=i.n(re),ce=i(23),le={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ae()(ce.Z,le);ce.Z.locals;const ue="automatic",de=/^(https?:)?\/\//;class ke extends e.Plugin{static get pluginName(){return"LinkEditing"}static get requires(){return[o.TwoStepCaretMovement,o.Input,s.ClipboardPipeline]}constructor(e){super(e),e.config.define("link",{addTargetToExternalLinks:!1})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"linkHref"}),e.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:J}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(e,t)=>J(X(e),t)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:e=>e.getAttribute("href")}}),e.commands.add("link",new ne(e)),e.commands.add("unlink",new oe(e));const t=function(e,t){const i={"Open in a new tab":e("Open in a new tab"),Downloadable:e("Downloadable")};return t.forEach((e=>(e.label&&i[e.label]&&(e.label=i[e.label]),e))),t}(e.t,function(e){const t=[];if(e)for(const[i,n]of Object.entries(e)){const e=Object.assign({},n,{id:`link${K(i)}`});t.push(e)}return t}(e.config.get("link.decorators")));this._enableAutomaticDecorators(t.filter((e=>e.mode===ue))),this._enableManualDecorators(t.filter((e=>"manual"===e.mode)));e.plugins.get(o.TwoStepCaretMovement).registerAttribute("linkHref"),(0,o.inlineHighlight)(e,"linkHref","a","ck-link_selected"),this._enableLinkOpen(),this._enableInsertContentSelectionAttributesFixer(),this._enableClickingAfterLink(),this._enableTypingOverLink(),this._handleDeleteContentAfterLink()}_enableAutomaticDecorators(e){const t=this.editor,i=t.commands.get("link").automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&i.add({id:"linkIsExternal",mode:ue,callback:e=>de.test(e),attributes:{target:"_blank",rel:"noopener noreferrer"}}),i.add(e),i.length&&t.conversion.for("downcast").add(i.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,i=t.commands.get("link").manualDecorators;e.forEach((e=>{t.model.schema.extend("$text",{allowAttributes:e.id}),e=new se(e),i.add(e),t.conversion.for("downcast").attributeToElement({model:e.id,view:(t,{writer:i,schema:n},{item:o})=>{if((o.is("selection")||n.isInline(o))&&t){const t=i.createAttributeElement("a",e.attributes,{priority:5});e.classes&&i.addClass(e.classes,t);for(const n in e.styles)i.setStyle(n,e.styles[n],t);return i.setCustomProperty("link",!0,t),t}}}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",...e._createPattern()},model:{key:e.id}})}))}_enableLinkOpen(){const e=this.editor,t=e.editing.view.document,i=e.model.document;this.listenTo(t,"click",((e,t)=>{if(!(r.env.isMac?t.domEvent.metaKey:t.domEvent.ctrlKey))return;let i=t.domTarget;if("a"!=i.tagName.toLowerCase()&&(i=i.closest("a")),!i)return;const n=i.getAttribute("href");n&&(e.stop(),t.preventDefault(),ie(n))}),{context:"$capture"}),this.listenTo(t,"enter",((e,t)=>{const n=i.selection,o=n.getSelectedElement(),s=o?o.getAttribute("linkHref"):n.getAttribute("linkHref");s&&t.domEvent.altKey&&(e.stop(),ie(s))}),{context:"a"})}_enableInsertContentSelectionAttributesFixer(){const e=this.editor.model,t=e.document.selection;this.listenTo(e,"insertContent",(()=>{const i=t.anchor.nodeBefore,n=t.anchor.nodeAfter;t.hasAttribute("linkHref")&&i&&i.hasAttribute("linkHref")&&(n&&n.hasAttribute("linkHref")||e.change((t=>{he(t,me(e.schema))})))}),{priority:"low"})}_enableClickingAfterLink(){const e=this.editor,i=e.model;e.editing.view.addObserver(t.MouseObserver);let n=!1;this.listenTo(e.editing.view.document,"mousedown",(()=>{n=!0})),this.listenTo(e.editing.view.document,"selectionChange",(()=>{if(!n)return;n=!1;const e=i.document.selection;if(!e.isCollapsed)return;if(!e.hasAttribute("linkHref"))return;const t=e.getFirstPosition(),s=(0,o.findAttributeRange)(t,"linkHref",e.getAttribute("linkHref"),i);(t.isTouching(s.start)||t.isTouching(s.end))&&i.change((e=>{he(e,me(i.schema))}))}))}_enableTypingOverLink(){const e=this.editor,t=e.editing.view;let i,n;this.listenTo(t.document,"delete",(()=>{n=!0}),{priority:"high"}),this.listenTo(e.model,"deleteContent",(()=>{const t=e.model.document.selection;t.isCollapsed||(n?n=!1:fe(e)&&function(e){const t=e.document.selection,i=t.getFirstPosition(),n=t.getLastPosition(),s=i.nodeAfter;if(!s)return!1;if(!s.is("$text"))return!1;if(!s.hasAttribute("linkHref"))return!1;const r=n.textNode||n.nodeBefore;if(s===r)return!0;return(0,o.findAttributeRange)(i,"linkHref",s.getAttribute("linkHref"),e).containsRange(e.createRange(i,n),!0)}(e.model)&&(i=t.getAttributes()))}),{priority:"high"}),this.listenTo(e.model,"insertContent",((t,[o])=>{n=!1,fe(e)&&i&&(e.model.change((e=>{for(const[t,n]of i)e.setAttribute(t,n,o)})),i=null)}),{priority:"high"})}_handleDeleteContentAfterLink(){const e=this.editor,t=e.model,i=t.document.selection,n=e.editing.view;let s=!1,a=!1;this.listenTo(n.document,"delete",((e,t)=>{a=t.domEvent.keyCode===r.keyCodes.backspace}),{priority:"high"}),this.listenTo(t,"deleteContent",(()=>{s=!1;const e=i.getFirstPosition(),n=i.getAttribute("linkHref");if(!n)return;const r=(0,o.findAttributeRange)(e,"linkHref",n,t);s=r.containsPosition(e)||r.end.isEqual(e)}),{priority:"high"}),this.listenTo(t,"deleteContent",(()=>{a&&(a=!1,s||e.model.enqueueChange((e=>{he(e,me(t.schema))})))}),{priority:"low"})}}function he(e,t){e.removeSelectionAttribute("linkHref");for(const i of t)e.removeSelectionAttribute(i)}function fe(e){return e.model.change((e=>e.batch)).isTyping}function me(e){return e.getDefinition("$text").allowAttributes.filter((e=>e.startsWith("link")))}var ge=i(273),be=i(995),pe=i(764),we={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ae()(pe.Z,we);pe.Z.locals;var ve=i(871),_e={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ae()(ve.Z,_e);ve.Z.locals;class ye extends ge.View{constructor(t,i){super(t);const n=t.t;this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(n("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(i),this.children=this._createFormChildren(i.manualDecorators),this._focusables=new ge.ViewCollection,this._focusCycler=new ge.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const o=["ck","ck-link-form","ck-responsive-form"];i.manualDecorators.length&&o.push("ck-link-form_layout-vertical","ck-vertical-form"),this.setTemplate({tag:"form",attributes:{class:o,tabindex:"-1"},children:this.children}),(0,ge.injectCssTransitionDisabler)(this)}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce(((e,t)=>(e[t.name]=t.isOn,e)),{})}render(){super.render(),(0,ge.submitHandler)({view:this});[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const e=this.locale.t,t=new ge.LabeledFieldView(this.locale,ge.createLabeledInputText);return t.label=e("Link URL"),t}_createButton(e,t,i,n){const o=new ge.ButtonView(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createManualDecoratorSwitches(e){const t=this.createCollection();for(const i of e.manualDecorators){const n=new ge.SwitchButtonView(this.locale);n.set({name:i.id,label:i.label,withText:!0}),n.bind("isOn").toMany([i,e],"value",((e,t)=>void 0===t&&void 0===e?i.defaultValue:e)),n.on("execute",(()=>{i.set("value",!n.isOn)})),t.add(n)}return t}_createFormChildren(e){const t=this.createCollection();if(t.add(this.urlInputView),e.length){const e=new ge.View;e.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map((e=>({tag:"li",children:[e],attributes:{class:["ck","ck-list__item"]}}))),attributes:{class:["ck","ck-reset","ck-list"]}}),t.add(e)}return t.add(this.saveButtonView),t.add(this.cancelButtonView),t}}var Ae=i(952),xe={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ae()(Ae.Z,xe);Ae.Z.locals;class Ie extends ge.View{constructor(t){super(t);const i=t.t;this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(i("Unlink"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184zm4.919 10.562-1.414 1.414a.75.75 0 1 1-1.06-1.06l1.414-1.415-1.415-1.414a.75.75 0 0 1 1.061-1.06l1.414 1.414 1.414-1.415a.75.75 0 0 1 1.061 1.061l-1.414 1.414 1.414 1.415a.75.75 0 0 1-1.06 1.06l-1.415-1.414z"/></svg>',"unlink"),this.editButtonView=this._createButton(i("Edit link"),e.icons.pencil,"edit"),this.set("href"),this._focusables=new ge.ViewCollection,this._focusCycler=new ge.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-actions","ck-responsive-form"],tabindex:"-1"},children:[this.previewButtonView,this.editButtonView,this.unlinkButtonView]})}render(){super.render();[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createButton(e,t,i){const n=new ge.ButtonView(this.locale);return n.set({label:e,icon:t,tooltip:!0}),n.delegate("execute").to(this,i),n}_createPreviewButton(){const e=new ge.ButtonView(this.locale),t=this.bindTemplate,i=this.t;return e.set({withText:!0,tooltip:i("Open link in new tab")}),e.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:t.to("href",(e=>e&&X(e))),target:"_blank",rel:"noopener noreferrer"}}),e.bind("label").to(this,"href",(e=>e||i("This link has no URL"))),e.bind("isEnabled").to(this,"href",(e=>!!e)),e.template.tag="a",e.template.eventListeners={},e}}const Se='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184z"/></svg>',Te="link-ui";class Ee extends e.Plugin{static get requires(){return[ge.ContextualBalloon]}static get pluginName(){return"LinkUI"}init(){const e=this.editor;e.editing.view.addObserver(t.ClickObserver),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=e.plugins.get(ge.ContextualBalloon),this._createToolbarLinkButton(),this._enableUserBalloonInteractions(),e.conversion.for("editingDowncast").markerToHighlight({model:Te,view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:Te,view:{name:"span",classes:["ck-fake-link-selection","ck-fake-link-selection_collapsed"]}})}destroy(){super.destroy(),this.formView.destroy()}_createActionsView(){const e=this.editor,t=new Ie(e.locale),i=e.commands.get("link"),n=e.commands.get("unlink");return t.bind("href").to(i,"value"),t.editButtonView.bind("isEnabled").to(i),t.unlinkButtonView.bind("isEnabled").to(n),this.listenTo(t,"edit",(()=>{this._addFormView()})),this.listenTo(t,"unlink",(()=>{e.execute("unlink"),this._hideUI()})),t.keystrokes.set("Esc",((e,t)=>{this._hideUI(),t()})),t.keystrokes.set(G,((e,t)=>{this._addFormView(),t()})),t}_createFormView(){const e=this.editor,t=e.commands.get("link"),i=e.config.get("link.defaultProtocol"),n=new ye(e.locale,t);return n.urlInputView.fieldView.bind("value").to(t,"value"),n.urlInputView.bind("isReadOnly").to(t,"isEnabled",(e=>!e)),n.saveButtonView.bind("isEnabled").to(t),this.listenTo(n,"submit",(()=>{const{value:t}=n.urlInputView.fieldView.element,o=te(t,i);e.execute("link",o,n.getDecoratorSwitchesState()),this._closeFormView()})),this.listenTo(n,"cancel",(()=>{this._closeFormView()})),n.keystrokes.set("Esc",((e,t)=>{this._closeFormView(),t()})),n}_createToolbarLinkButton(){const e=this.editor,t=e.commands.get("link"),i=e.t;e.keystrokes.set(G,((e,i)=>{i(),t.isEnabled&&this._showUI(!0)})),e.ui.componentFactory.add("link",(e=>{const n=new ge.ButtonView(e);return n.isEnabled=!0,n.label=i("Link"),n.icon=Se,n.keystroke=G,n.tooltip=!0,n.isToggleable=!0,n.bind("isEnabled").to(t,"isEnabled"),n.bind("isOn").to(t,"value",(e=>!!e)),this.listenTo(n,"execute",(()=>this._showUI(!0))),n}))}_enableUserBalloonInteractions(){const e=this.editor.editing.view.document;this.listenTo(e,"click",(()=>{this._getSelectedLinkElement()&&this._showUI()})),this.editor.keystrokes.set("Tab",((e,t)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),t())}),{priority:"high"}),this.editor.keystrokes.set("Esc",((e,t)=>{this._isUIVisible&&(this._hideUI(),t())})),(0,ge.clickOutsideHandler)({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this._isFormInPanel)return;const e=this.editor.commands.get("link");this.formView.disableCssTransitions(),this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions(),this.formView.urlInputView.fieldView.element.value=e.value||""}_closeFormView(){const e=this.editor.commands.get("link");e.restoreManualDecoratorStates(),void 0!==e.value?this._removeFormView():this._hideUI()}_removeFormView(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(e=!1){this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),e&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),e&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const e=this.editor;this.stopListening(e.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),e.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}_startUpdatingUI(){const e=this.editor,t=e.editing.view.document;let i=this._getSelectedLinkElement(),n=s();const o=()=>{const e=this._getSelectedLinkElement(),t=s();i&&!e||!i&&t!==n?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),i=e,n=t};function s(){return t.selection.focus.getAncestors().reverse().find((e=>e.is("element")))}this.listenTo(e.ui,"update",o),this.listenTo(this._balloon,"change:visibleView",o)}get _isFormInPanel(){return this._balloon.hasView(this.formView)}get _areActionsInPanel(){return this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){return this._balloon.visibleView==this.formView||this._areActionsVisible}_getBalloonPositionData(){const e=this.editor.editing.view,t=this.editor.model,i=e.document;let n=null;if(t.markers.has(Te)){const t=Array.from(this.editor.editing.mapper.markerNameToElements(Te)),i=e.createRange(e.createPositionBefore(t[0]),e.createPositionAfter(t[t.length-1]));n=e.domConverter.viewRangeToDom(i)}else n=()=>{const t=this._getSelectedLinkElement();return t?e.domConverter.mapViewToDom(t):e.domConverter.viewRangeToDom(i.selection.getFirstRange())};return{target:n}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,i=t.getSelectedElement();if(t.isCollapsed||i&&(0,be.isWidget)(i))return Ve(t.getFirstPosition());{const i=t.getFirstRange().getTrimmed(),n=Ve(i.start),o=Ve(i.end);return n&&n==o&&e.createRangeIn(n).getTrimmed().isEqual(i)?n:null}}_showFakeVisualSelection(){const e=this.editor.model;e.change((t=>{const i=e.document.selection.getFirstRange();if(e.markers.has(Te))t.updateMarker(Te,{range:i});else if(i.start.isAtEnd){const n=i.start.getLastMatchingPosition((({item:t})=>!e.schema.isContent(t)),{boundaries:i});t.addMarker(Te,{usingOperation:!1,affectsData:!1,range:t.createRange(n,i.end)})}else t.addMarker(Te,{usingOperation:!1,affectsData:!1,range:i})}))}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has(Te)&&e.change((e=>{e.removeMarker(Te)}))}}function Ve(e){return e.getAncestors().find((e=>{return(t=e).is("attributeElement")&&!!t.getCustomProperty("link");var t}))}const Le=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i");class Ce extends e.Plugin{static get requires(){return[o.Delete]}static get pluginName(){return"AutoLink"}init(){const e=this.editor.model.document.selection;e.on("change:range",(()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")})),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling()}_enableTypingHandling(){const e=this.editor,t=new o.TextWatcher(e.model,(e=>{if(!function(e){return e.length>4&&" "===e[e.length-1]&&" "!==e[e.length-2]}(e))return;const t=De(e.substr(0,e.length-1));return t?{url:t}:void 0}));t.on("matched:data",((t,i)=>{const{batch:n,range:o,url:s}=i;if(!n.isTyping)return;const r=o.end.getShiftedBy(-1),a=r.getShiftedBy(-s.length),c=e.model.createRange(a,r);this._applyAutoLink(s,c)})),t.bind("isEnabled").to(this)}_enableEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("enter");i&&i.on("execute",(()=>{const e=t.document.selection.getFirstPosition();if(!e.parent.previousSibling)return;const i=t.createRangeIn(e.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(i)}))}_enableShiftEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("shiftEnter");i&&i.on("execute",(()=>{const e=t.document.selection.getFirstPosition(),i=t.createRange(t.createPositionAt(e.parent,0),e.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(i)}))}_checkAndApplyAutoLinkOnRange(e){const t=this.editor.model,{text:i,range:n}=(0,o.getLastTextLine)(e,t),s=De(i);if(s){const e=t.createRange(n.end.getShiftedBy(-s.length),n.end);this._applyAutoLink(s,e)}}_applyAutoLink(e,t){const i=this.editor.model,n=this.editor.plugins.get("Delete");this.isEnabled&&function(e,t){return t.schema.checkAttributeInSelection(t.createSelection(e),"linkHref")}(t,i)&&i.enqueueChange((o=>{const s=this.editor.config.get("link.defaultProtocol"),r=te(e,s);o.setAttribute("linkHref",r,t),i.enqueueChange((()=>{n.requestUndoOnBackspace()}))}))}}function De(e){const t=Le.exec(e);return t?t[2]:null}class Me extends e.Plugin{static get requires(){return[ke,Ee,Ce]}static get pluginName(){return"Link"}}class je extends e.Plugin{static get requires(){return["ImageEditing","ImageUtils",ke]}static get pluginName(){return"LinkImageEditing"}init(){const e=this.editor,t=e.model.schema;e.plugins.has("ImageBlockEditing")&&t.extend("imageBlock",{allowAttributes:["linkHref"]}),e.conversion.for("upcast").add(function(e){const t=e.plugins.has("ImageInlineEditing"),i=e.plugins.get("ImageUtils");return e=>{e.on("element:a",((e,n,o)=>{const s=n.viewItem,r=i.findViewImgElement(s);if(!r)return;const a=r.findAncestor((e=>i.isBlockImageView(e)));if(t&&!a)return;const c={attributes:["href"]};if(!o.consumable.consume(s,c))return;const l=s.getAttribute("href");if(!l)return;let u=n.modelCursor.parent;if(!u.is("element","imageBlock")){const e=o.convertItem(r,n.modelCursor);n.modelRange=e.modelRange,n.modelCursor=e.modelCursor,u=n.modelCursor.nodeBefore}u&&u.is("element","imageBlock")&&o.writer.setAttribute("linkHref",l,u)}),{priority:"high"})}}(e)),e.conversion.for("downcast").add(function(e){const t=e.plugins.get("ImageUtils");return e=>{e.on("attribute:linkHref:imageBlock",((e,i,n)=>{if(!n.consumable.consume(i.item,e.name))return;const o=n.mapper.toViewElement(i.item),s=n.writer,r=Array.from(o.getChildren()).find((e=>"a"===e.name)),a=t.findViewImgElement(o),c=a.parent.is("element","picture")?a.parent:a;if(r)i.attributeNewValue?s.setAttribute("href",i.attributeNewValue,r):(s.move(s.createRangeOn(c),s.createPositionAt(o,0)),s.remove(r));else{const e=s.createContainerElement("a",{href:i.attributeNewValue});s.insert(s.createPositionAt(o,0),e),s.move(s.createRangeOn(c),s.createPositionAt(e,0))}}),{priority:"high"})}}(e)),this._enableAutomaticDecorators(),this._enableManualDecorators()}_enableAutomaticDecorators(){const e=this.editor,t=e.commands.get("link").automaticDecorators;t.length&&e.conversion.for("downcast").add(t.getDispatcherForLinkedImage())}_enableManualDecorators(){const e=this.editor,t=e.commands.get("link");for(const i of t.manualDecorators)e.plugins.has("ImageBlockEditing")&&e.model.schema.extend("imageBlock",{allowAttributes:i.id}),e.plugins.has("ImageInlineEditing")&&e.model.schema.extend("imageInline",{allowAttributes:i.id}),e.conversion.for("downcast").add(Be(i)),e.conversion.for("upcast").add(Ne(e,i))}}function Be(e){return t=>{t.on(`attribute:${e.id}:imageBlock`,((t,i,n)=>{const o=n.mapper.toViewElement(i.item),s=Array.from(o.getChildren()).find((e=>"a"===e.name));if(s){for(const[t,i]of(0,r.toMap)(e.attributes))n.writer.setAttribute(t,i,s);e.classes&&n.writer.addClass(e.classes,s);for(const t in e.styles)n.writer.setStyle(t,e.styles[t],s)}}))}}function Ne(e,i){const n=e.plugins.has("ImageInlineEditing"),o=e.plugins.get("ImageUtils");return e=>{e.on("element:a",((e,s,r)=>{const a=s.viewItem,c=o.findViewImgElement(a);if(!c)return;const l=c.findAncestor((e=>o.isBlockImageView(e)));if(n&&!l)return;const u=new t.Matcher(i._createPattern()).match(a);if(!u)return;if(!r.consumable.consume(a,u.match))return;const d=s.modelCursor.nodeBefore||s.modelCursor.parent;r.writer.setAttribute(i.id,!0,d)}),{priority:"high"})}}class He extends e.Plugin{static get requires(){return[ke,Ee,"ImageBlockEditing"]}static get pluginName(){return"LinkImageUI"}init(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"click",((t,i)=>{this._isSelectedLinkedImage(e.model.document.selection)&&(i.preventDefault(),t.stop())}),{priority:"high"}),this._createToolbarLinkImageButton()}_createToolbarLinkImageButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("linkImage",(i=>{const n=new ge.ButtonView(i),o=e.plugins.get("LinkUI"),s=e.commands.get("link");return n.set({isEnabled:!0,label:t("Link image"),icon:Se,keystroke:G,tooltip:!0,isToggleable:!0}),n.bind("isEnabled").to(s,"isEnabled"),n.bind("isOn").to(s,"value",(e=>!!e)),this.listenTo(n,"execute",(()=>{this._isSelectedLinkedImage(e.model.document.selection)?o._addActionsView():o._showUI(!0)})),n}))}_isSelectedLinkedImage(e){const t=e.getSelectedElement();return this.editor.plugins.get("ImageUtils").isImage(t)&&t.hasAttribute("linkHref")}}var Oe=i(269),Ue={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ae()(Oe.Z,Ue);Oe.Z.locals;class Pe extends e.Plugin{static get requires(){return[je,He]}static get pluginName(){return"LinkImage"}}})(),(window.CKEditor5=window.CKEditor5||{}).link=n})(); \ No newline at end of file + */(()=>{var e={23:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck .ck-link_selected{background:var(--ck-color-link-selected-background)}.ck .ck-link_selected span.image-inline{outline:var(--ck-widget-outline-thickness) solid var(--ck-color-link-selected-background)}.ck .ck-fake-link-selection{background:var(--ck-color-link-fake-selection)}.ck .ck-fake-link-selection_collapsed{border-right:1px solid var(--ck-color-base-text);height:100%;margin-right:-1px;outline:1px solid hsla(0,0%,100%,.5)}",""]);const s=o},952:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-link-actions{display:flex;flex-direction:row;flex-wrap:nowrap}.ck.ck-link-actions .ck-link-actions__preview{display:inline-block}.ck.ck-link-actions .ck-link-actions__preview .ck-button__label{overflow:hidden}@media screen and (max-width:600px){.ck.ck-link-actions{flex-wrap:wrap}.ck.ck-link-actions .ck-link-actions__preview{flex-basis:100%}.ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){flex-basis:50%}}.ck.ck-link-actions .ck-button.ck-link-actions__preview{padding-left:0;padding-right:0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{color:var(--ck-color-link-default);cursor:pointer;max-width:var(--ck-input-width);min-width:3em;padding:0 var(--ck-spacing-medium);text-align:center;text-overflow:ellipsis}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label:hover{text-decoration:underline}.ck.ck-link-actions .ck-button.ck-link-actions__preview,.ck.ck-link-actions .ck-button.ck-link-actions__preview:active,.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus,.ck.ck-link-actions .ck-button.ck-link-actions__preview:hover{background:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:active{box-shadow:none}.ck.ck-link-actions .ck-button.ck-link-actions__preview:focus .ck-button__label{text-decoration:underline}[dir=ltr] .ck.ck-link-actions .ck-button:not(:first-child),[dir=rtl] .ck.ck-link-actions .ck-button:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-link-actions .ck-button.ck-link-actions__preview{margin:var(--ck-spacing-standard) var(--ck-spacing-standard) 0}.ck.ck-link-actions .ck-button.ck-link-actions__preview .ck-button__label{max-width:100%;min-width:0}[dir=ltr] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview),[dir=rtl] .ck.ck-link-actions .ck-button:not(.ck-link-actions__preview){margin-left:0}}",""]);const s=o},871:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,".ck.ck-link-form{display:flex}.ck.ck-link-form .ck-label{display:none}@media screen and (max-width:600px){.ck.ck-link-form{flex-wrap:wrap}.ck.ck-link-form .ck-labeled-field-view{flex-basis:100%}.ck.ck-link-form .ck-button{flex-basis:50%}}.ck.ck-link-form_layout-vertical{display:block}.ck.ck-link-form_layout-vertical .ck-button.ck-button-cancel,.ck.ck-link-form_layout-vertical .ck-button.ck-button-save{margin-top:var(--ck-spacing-medium)}.ck.ck-link-form_layout-vertical{min-width:var(--ck-input-width);padding:0}.ck.ck-link-form_layout-vertical .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) var(--ck-spacing-small)}.ck.ck-link-form_layout-vertical .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-link-form_layout-vertical>.ck-button{border-radius:0;margin:0;padding:var(--ck-spacing-standard);width:50%}.ck.ck-link-form_layout-vertical>.ck-button:not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-link-form_layout-vertical>.ck-button,[dir=rtl] .ck.ck-link-form_layout-vertical>.ck-button{margin-left:0}[dir=rtl] .ck.ck-link-form_layout-vertical>.ck-button:last-of-type{border-right:1px solid var(--ck-color-base-border)}.ck.ck-link-form_layout-vertical .ck.ck-list{margin:var(--ck-spacing-standard) var(--ck-spacing-large)}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton{padding:0;width:100%}.ck.ck-link-form_layout-vertical .ck.ck-list .ck-button.ck-switchbutton:hover{background:none}",""]);const s=o},269:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck.ck-editor__editable a span.image-inline:after,.ck.ck-editor__editable figure.image>a:after{display:block;position:absolute}:root{--ck-link-image-indicator-icon-size:20;--ck-link-image-indicator-icon-is-visible:clamp(0px,100% - 50px,1px)}.ck.ck-editor__editable a span.image-inline:after,.ck.ck-editor__editable figure.image>a:after{background-color:rgba(0,0,0,.4);background-image:url("data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjAgMjAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PHBhdGggZmlsbD0iI2ZmZiIgZD0ibTExLjA3NyAxNSAuOTkxLTEuNDE2YS43NS43NSAwIDEgMSAxLjIyOS44NmwtMS4xNDggMS42NGEuNzQ4Ljc0OCAwIDAgMS0uMjE3LjIwNiA1LjI1MSA1LjI1MSAwIDAgMS04LjUwMy01Ljk1NS43NDEuNzQxIDAgMCAxIC4xMi0uMjc0bDEuMTQ3LTEuNjM5YS43NS43NSAwIDEgMSAxLjIyOC44Nkw0LjkzMyAxMC43bC4wMDYuMDAzYTMuNzUgMy43NSAwIDAgMCA2LjEzMiA0LjI5NGwuMDA2LjAwNHptNS40OTQtNS4zMzVhLjc0OC43NDggMCAwIDEtLjEyLjI3NGwtMS4xNDcgMS42MzlhLjc1Ljc1IDAgMSAxLTEuMjI4LS44NmwuODYtMS4yM2EzLjc1IDMuNzUgMCAwIDAtNi4xNDQtNC4zMDFsLS44NiAxLjIyOWEuNzUuNzUgMCAwIDEtMS4yMjktLjg2bDEuMTQ4LTEuNjRhLjc0OC43NDggMCAwIDEgLjIxNy0uMjA2IDUuMjUxIDUuMjUxIDAgMCAxIDguNTAzIDUuOTU1em0tNC41NjMtMi41MzJhLjc1Ljc1IDAgMCAxIC4xODQgMS4wNDVsLTMuMTU1IDQuNTA1YS43NS43NSAwIDEgMS0xLjIyOS0uODZsMy4xNTUtNC41MDZhLjc1Ljc1IDAgMCAxIDEuMDQ1LS4xODR6Ii8+PC9zdmc+");background-position:50%;background-repeat:no-repeat;background-size:14px;border-radius:100%;content:"";height:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size));overflow:hidden;right:min(var(--ck-spacing-medium),6%);top:min(var(--ck-spacing-medium),6%);width:calc(var(--ck-link-image-indicator-icon-is-visible)*var(--ck-link-image-indicator-icon-size))}',""]);const s=o},764:(e,t,i)=>{"use strict";i.d(t,{Z:()=>s});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck-vertical-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck-vertical-form .ck-button:focus:after{display:none}@media screen and (max-width:600px){.ck.ck-responsive-form .ck-button:after{bottom:-1px;content:"";position:absolute;right:-1px;top:-1px;width:0;z-index:1}.ck.ck-responsive-form .ck-button:focus:after{display:none}}.ck-vertical-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form{padding:var(--ck-spacing-large)}.ck.ck-responsive-form:focus{outline:none}[dir=ltr] .ck.ck-responsive-form>:not(:first-child),[dir=rtl] .ck.ck-responsive-form>:not(:last-child){margin-left:var(--ck-spacing-standard)}@media screen and (max-width:600px){.ck.ck-responsive-form{padding:0;width:calc(var(--ck-input-width)*.8)}.ck.ck-responsive-form .ck-labeled-field-view{margin:var(--ck-spacing-large) var(--ck-spacing-large) 0}.ck.ck-responsive-form .ck-labeled-field-view .ck-input-text{min-width:0;width:100%}.ck.ck-responsive-form .ck-labeled-field-view .ck-labeled-field-view__error{white-space:normal}.ck.ck-responsive-form>.ck-button:nth-last-child(2):after{border-right:1px solid var(--ck-color-base-border)}.ck.ck-responsive-form>.ck-button:last-child,.ck.ck-responsive-form>.ck-button:nth-last-child(2){border-radius:0;margin-top:var(--ck-spacing-large);padding:var(--ck-spacing-standard)}.ck.ck-responsive-form>.ck-button:last-child:not(:focus),.ck.ck-responsive-form>.ck-button:nth-last-child(2):not(:focus){border-top:1px solid var(--ck-color-base-border)}[dir=ltr] .ck.ck-responsive-form>.ck-button:last-child,[dir=ltr] .ck.ck-responsive-form>.ck-button:nth-last-child(2),[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2){margin-left:0}[dir=rtl] .ck.ck-responsive-form>.ck-button:last-child:last-of-type,[dir=rtl] .ck.ck-responsive-form>.ck-button:nth-last-child(2):last-of-type{border-right:1px solid var(--ck-color-base-border)}}',""]);const s=o},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=e(t);return t[2]?"@media ".concat(t[2]," {").concat(i,"}"):i})).join("")},t.i=function(e,i,n){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(n)for(var s=0;s<this.length;s++){var r=this[s][0];null!=r&&(o[r]=!0)}for(var a=0;a<e.length;a++){var c=[].concat(e[a]);n&&o[c[0]]||(i&&(c[2]?c[2]="".concat(i," and ").concat(c[2]):c[2]=i),t.push(c))}},t}},62:(e,t,i)=>{"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},s=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),r=[];function a(e){for(var t=-1,i=0;i<r.length;i++)if(r[i].identifier===e){t=i;break}return t}function c(e,t){for(var i={},n=[],o=0;o<e.length;o++){var s=e[o],c=t.base?s[0]+t.base:s[0],l=i[c]||0,u="".concat(c," ").concat(l);i[c]=l+1;var d=a(u),k={css:s[1],media:s[2],sourceMap:s[3]};-1!==d?(r[d].references++,r[d].updater(k)):r.push({identifier:u,updater:g(k,t),references:1}),n.push(u)}return n}function l(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var o=i.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var r=s(e.insert||"head");if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(t)}return t}var u,d=(u=[],function(e,t){return u[e]=t,u.filter(Boolean).join("\n")});function k(e,t,i,n){var o=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=d(t,o);else{var s=document.createTextNode(o),r=e.childNodes;r[t]&&e.removeChild(r[t]),r.length?e.insertBefore(s,r[t]):e.appendChild(s)}}function h(e,t,i){var n=i.css,o=i.media,s=i.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),s&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(s))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var f=null,m=0;function g(e,t){var i,n,o;if(t.singleton){var s=m++;i=f||(f=l(t)),n=k.bind(null,i,s,!1),o=k.bind(null,i,s,!0)}else i=l(t),n=h.bind(null,i,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(i)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var i=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<i.length;n++){var o=a(i[n]);r[o].references--}for(var s=c(e,t),l=0;l<i.length;l++){var u=a(i[l]);0===r[u].references&&(r[u].updater(),r.splice(u,1))}i=s}}}},945:(e,t,i)=>{e.exports=i(79)("./src/clipboard.js")},704:(e,t,i)=>{e.exports=i(79)("./src/core.js")},492:(e,t,i)=>{e.exports=i(79)("./src/engine.js")},181:(e,t,i)=>{e.exports=i(79)("./src/typing.js")},273:(e,t,i)=>{e.exports=i(79)("./src/ui.js")},209:(e,t,i)=>{e.exports=i(79)("./src/utils.js")},995:(e,t,i)=>{e.exports=i(79)("./src/widget.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var o=t[n];if(void 0!==o)return o.exports;var s=t[n]={id:n,exports:{}};return e[n](s,s.exports,i),s.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{AutoLink:()=>Ce,Link:()=>Me,LinkEditing:()=>ke,LinkImage:()=>Pe,LinkImageEditing:()=>je,LinkImageUI:()=>He,LinkUI:()=>Ee});var e=i(704),t=i(492),o=i(181),s=i(945),r=i(209);class a{constructor(){this._definitions=new Set}get length(){return this._definitions.size}add(e){Array.isArray(e)?e.forEach((e=>this._definitions.add(e))):this._definitions.add(e)}getDispatcher(){return e=>{e.on("attribute:linkHref",((e,t,i)=>{if(!i.consumable.test(t.item,"attribute:linkHref"))return;if(!t.item.is("selection")&&!i.schema.isInline(t.item))return;const n=i.writer,o=n.document.selection;for(const e of this._definitions){const s=n.createAttributeElement("a",e.attributes,{priority:5});e.classes&&n.addClass(e.classes,s);for(const t in e.styles)n.setStyle(t,e.styles[t],s);n.setCustomProperty("link",!0,s),e.callback(t.attributeNewValue)?t.item.is("selection")?n.wrap(o.getFirstRange(),s):n.wrap(i.mapper.toViewRange(t.range),s):n.unwrap(i.mapper.toViewRange(t.range),s)}}),{priority:"high"})}}getDispatcherForLinkedImage(){return e=>{e.on("attribute:linkHref:imageBlock",((e,t,{writer:i,mapper:n})=>{const o=n.toViewElement(t.item),s=Array.from(o.getChildren()).find((e=>"a"===e.name));for(const e of this._definitions){const n=(0,r.toMap)(e.attributes);if(e.callback(t.attributeNewValue)){for(const[e,t]of n)"class"===e?i.addClass(t,s):i.setAttribute(e,t,s);e.classes&&i.addClass(e.classes,s);for(const t in e.styles)i.setStyle(t,e.styles[t],s)}else{for(const[e,t]of n)"class"===e?i.removeClass(t,s):i.removeAttribute(e,s);e.classes&&i.removeClass(e.classes,s);for(const t in e.styles)i.removeStyle(t,s)}}}))}}}const c=function(e,t,i){var n=-1,o=e.length;t<0&&(t=-t>o?0:o+t),(i=i>o?o:i)<0&&(i+=o),o=t>i?0:i-t>>>0,t>>>=0;for(var s=Array(o);++n<o;)s[n]=e[n+t];return s};const l=function(e,t,i){var n=e.length;return i=void 0===i?n:i,!t&&i>=n?e:c(e,t,i)};var u=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff\\ufe0e\\ufe0f]");const d=function(e){return u.test(e)};const k=function(e){return e.split("")};var h="[\\ud800-\\udfff]",f="[\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff]",m="\\ud83c[\\udffb-\\udfff]",g="[^\\ud800-\\udfff]",b="(?:\\ud83c[\\udde6-\\uddff]){2}",p="[\\ud800-\\udbff][\\udc00-\\udfff]",w="(?:"+f+"|"+m+")"+"?",v="[\\ufe0e\\ufe0f]?",_=v+w+("(?:\\u200d(?:"+[g,b,p].join("|")+")"+v+w+")*"),y="(?:"+[g+f+"?",f,b,p,h].join("|")+")",A=RegExp(m+"(?="+m+")|"+y+_,"g");const x=function(e){return e.match(A)||[]};const I=function(e){return d(e)?x(e):k(e)};const S="object"==typeof global&&global&&global.Object===Object&&global;var T="object"==typeof self&&self&&self.Object===Object&&self;const E=(S||T||Function("return this")()).Symbol;const V=function(e,t){for(var i=-1,n=null==e?0:e.length,o=Array(n);++i<n;)o[i]=t(e[i],i,e);return o};const L=Array.isArray;var C=Object.prototype,D=C.hasOwnProperty,M=C.toString,j=E?E.toStringTag:void 0;const B=function(e){var t=D.call(e,j),i=e[j];try{e[j]=void 0;var n=!0}catch(e){}var o=M.call(e);return n&&(t?e[j]=i:delete e[j]),o};var N=Object.prototype.toString;const H=function(e){return N.call(e)};var O=E?E.toStringTag:void 0;const U=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":O&&O in Object(e)?B(e):H(e)};const P=function(e){return null!=e&&"object"==typeof e};const F=function(e){return"symbol"==typeof e||P(e)&&"[object Symbol]"==U(e)};var R=E?E.prototype:void 0,z=R?R.toString:void 0;const Z=function e(t){if("string"==typeof t)return t;if(L(t))return V(t,e)+"";if(F(t))return z?z.call(t):"";var i=t+"";return"0"==i&&1/t==-Infinity?"-0":i};const q=function(e){return null==e?"":Z(e)};const K=function(e){return function(t){t=q(t);var i=d(t)?I(t):void 0,n=i?i[0]:t.charAt(0),o=i?l(i,1).join(""):t.slice(1);return n[e]()+o}}("toUpperCase"),Q=/[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g,$=/^(?:(?:https?|ftps?|mailto):|[^a-z]|[a-z+.-]+(?:[^a-z+.:-]|$))/i,W=/^[\S]+@((?![-_])(?:[-\w\u00a1-\uffff]{0,63}[^-_]\.))+(?:[a-z\u00a1-\uffff]{2,})$/i,Y=/^((\w+:(\/{2,})?)|(\W))/i,G="Ctrl+K";function J(e,{writer:t}){const i=t.createAttributeElement("a",{href:e},{priority:5});return t.setCustomProperty("link",!0,i),i}function X(e){return function(e){return e.replace(Q,"").match($)}(e=String(e))?e:"#"}function ee(e,t){return!!e&&t.checkAttribute(e.name,"linkHref")}function te(e,t){const i=(n=e,W.test(n)?"mailto:":t);var n;const o=!!i&&!Y.test(e);return e&&o?i+e:e}function ie(e){window.open(e,"_blank","noopener")}class ne extends e.Command{constructor(e){super(e),this.manualDecorators=new r.Collection,this.automaticDecorators=new a}restoreManualDecoratorStates(){for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement()||(0,r.first)(t.getSelectedBlocks());ee(i,e.schema)?(this.value=i.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttribute(i,"linkHref")):(this.value=t.getAttribute("linkHref"),this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref"));for(const e of this.manualDecorators)e.value=this._getDecoratorStateFromModel(e.id)}execute(e,t={}){const i=this.editor.model,n=i.document.selection,s=[],a=[];for(const e in t)t[e]?s.push(e):a.push(e);i.change((t=>{if(n.isCollapsed){const c=n.getFirstPosition();if(n.hasAttribute("linkHref")){const r=(0,o.findAttributeRange)(c,"linkHref",n.getAttribute("linkHref"),i);t.setAttribute("linkHref",e,r),s.forEach((e=>{t.setAttribute(e,!0,r)})),a.forEach((e=>{t.removeAttribute(e,r)})),t.setSelection(t.createPositionAfter(r.end.nodeBefore))}else if(""!==e){const o=(0,r.toMap)(n.getAttributes());o.set("linkHref",e),s.forEach((e=>{o.set(e,!0)}));const{end:a}=i.insertContent(t.createText(e,o),c);t.setSelection(a)}["linkHref",...s,...a].forEach((e=>{t.removeSelectionAttribute(e)}))}else{const o=i.schema.getValidRanges(n.getRanges(),"linkHref"),r=[];for(const e of n.getSelectedBlocks())i.schema.checkAttribute(e,"linkHref")&&r.push(t.createRangeOn(e));const c=r.slice();for(const e of o)this._isRangeToUpdate(e,r)&&c.push(e);for(const i of c)t.setAttribute("linkHref",e,i),s.forEach((e=>{t.setAttribute(e,!0,i)})),a.forEach((e=>{t.removeAttribute(e,i)}))}}))}_getDecoratorStateFromModel(e){const t=this.editor.model,i=t.document.selection,n=i.getSelectedElement();return ee(n,t.schema)?n.getAttribute(e):i.getAttribute(e)}_isRangeToUpdate(e,t){for(const i of t)if(i.containsRange(e))return!1;return!0}}class oe extends e.Command{refresh(){const e=this.editor.model,t=e.document.selection,i=t.getSelectedElement();ee(i,e.schema)?this.isEnabled=e.schema.checkAttribute(i,"linkHref"):this.isEnabled=e.schema.checkAttributeInSelection(t,"linkHref")}execute(){const e=this.editor,t=this.editor.model,i=t.document.selection,n=e.commands.get("link");t.change((e=>{const s=i.isCollapsed?[(0,o.findAttributeRange)(i.getFirstPosition(),"linkHref",i.getAttribute("linkHref"),t)]:t.schema.getValidRanges(i.getRanges(),"linkHref");for(const t of s)if(e.removeAttribute("linkHref",t),n)for(const i of n.manualDecorators)e.removeAttribute(i.id,t)}))}}class se{constructor({id:e,label:t,attributes:i,classes:n,styles:o,defaultValue:s}){this.id=e,this.set("value"),this.defaultValue=s,this.label=t,this.attributes=i,this.classes=n,this.styles=o}_createPattern(){return{attributes:this.attributes,classes:this.classes,styles:this.styles}}}(0,r.mix)(se,r.ObservableMixin);var re=i(62),ae=i.n(re),ce=i(23),le={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ae()(ce.Z,le);ce.Z.locals;const ue="automatic",de=/^(https?:)?\/\//;class ke extends e.Plugin{static get pluginName(){return"LinkEditing"}static get requires(){return[o.TwoStepCaretMovement,o.Input,s.ClipboardPipeline]}constructor(e){super(e),e.config.define("link",{addTargetToExternalLinks:!1})}init(){const e=this.editor;e.model.schema.extend("$text",{allowAttributes:"linkHref"}),e.conversion.for("dataDowncast").attributeToElement({model:"linkHref",view:J}),e.conversion.for("editingDowncast").attributeToElement({model:"linkHref",view:(e,t)=>J(X(e),t)}),e.conversion.for("upcast").elementToAttribute({view:{name:"a",attributes:{href:!0}},model:{key:"linkHref",value:e=>e.getAttribute("href")}}),e.commands.add("link",new ne(e)),e.commands.add("unlink",new oe(e));const t=function(e,t){const i={"Open in a new tab":e("Open in a new tab"),Downloadable:e("Downloadable")};return t.forEach((e=>(e.label&&i[e.label]&&(e.label=i[e.label]),e))),t}(e.t,function(e){const t=[];if(e)for(const[i,n]of Object.entries(e)){const e=Object.assign({},n,{id:`link${K(i)}`});t.push(e)}return t}(e.config.get("link.decorators")));this._enableAutomaticDecorators(t.filter((e=>e.mode===ue))),this._enableManualDecorators(t.filter((e=>"manual"===e.mode)));e.plugins.get(o.TwoStepCaretMovement).registerAttribute("linkHref"),(0,o.inlineHighlight)(e,"linkHref","a","ck-link_selected"),this._enableLinkOpen(),this._enableInsertContentSelectionAttributesFixer(),this._enableClickingAfterLink(),this._enableTypingOverLink(),this._handleDeleteContentAfterLink()}_enableAutomaticDecorators(e){const t=this.editor,i=t.commands.get("link").automaticDecorators;t.config.get("link.addTargetToExternalLinks")&&i.add({id:"linkIsExternal",mode:ue,callback:e=>de.test(e),attributes:{target:"_blank",rel:"noopener noreferrer"}}),i.add(e),i.length&&t.conversion.for("downcast").add(i.getDispatcher())}_enableManualDecorators(e){if(!e.length)return;const t=this.editor,i=t.commands.get("link").manualDecorators;e.forEach((e=>{t.model.schema.extend("$text",{allowAttributes:e.id}),e=new se(e),i.add(e),t.conversion.for("downcast").attributeToElement({model:e.id,view:(t,{writer:i,schema:n},{item:o})=>{if((o.is("selection")||n.isInline(o))&&t){const t=i.createAttributeElement("a",e.attributes,{priority:5});e.classes&&i.addClass(e.classes,t);for(const n in e.styles)i.setStyle(n,e.styles[n],t);return i.setCustomProperty("link",!0,t),t}}}),t.conversion.for("upcast").elementToAttribute({view:{name:"a",...e._createPattern()},model:{key:e.id}})}))}_enableLinkOpen(){const e=this.editor,t=e.editing.view.document,i=e.model.document;this.listenTo(t,"click",((e,t)=>{if(!(r.env.isMac?t.domEvent.metaKey:t.domEvent.ctrlKey))return;let i=t.domTarget;if("a"!=i.tagName.toLowerCase()&&(i=i.closest("a")),!i)return;const n=i.getAttribute("href");n&&(e.stop(),t.preventDefault(),ie(n))}),{context:"$capture"}),this.listenTo(t,"enter",((e,t)=>{const n=i.selection,o=n.getSelectedElement(),s=o?o.getAttribute("linkHref"):n.getAttribute("linkHref");s&&t.domEvent.altKey&&(e.stop(),ie(s))}),{context:"a"})}_enableInsertContentSelectionAttributesFixer(){const e=this.editor.model,t=e.document.selection;this.listenTo(e,"insertContent",(()=>{const i=t.anchor.nodeBefore,n=t.anchor.nodeAfter;t.hasAttribute("linkHref")&&i&&i.hasAttribute("linkHref")&&(n&&n.hasAttribute("linkHref")||e.change((t=>{he(t,me(e.schema))})))}),{priority:"low"})}_enableClickingAfterLink(){const e=this.editor,i=e.model;e.editing.view.addObserver(t.MouseObserver);let n=!1;this.listenTo(e.editing.view.document,"mousedown",(()=>{n=!0})),this.listenTo(e.editing.view.document,"selectionChange",(()=>{if(!n)return;n=!1;const e=i.document.selection;if(!e.isCollapsed)return;if(!e.hasAttribute("linkHref"))return;const t=e.getFirstPosition(),s=(0,o.findAttributeRange)(t,"linkHref",e.getAttribute("linkHref"),i);(t.isTouching(s.start)||t.isTouching(s.end))&&i.change((e=>{he(e,me(i.schema))}))}))}_enableTypingOverLink(){const e=this.editor,t=e.editing.view;let i,n;this.listenTo(t.document,"delete",(()=>{n=!0}),{priority:"high"}),this.listenTo(e.model,"deleteContent",(()=>{const t=e.model.document.selection;t.isCollapsed||(n?n=!1:fe(e)&&function(e){const t=e.document.selection,i=t.getFirstPosition(),n=t.getLastPosition(),s=i.nodeAfter;if(!s)return!1;if(!s.is("$text"))return!1;if(!s.hasAttribute("linkHref"))return!1;const r=n.textNode||n.nodeBefore;if(s===r)return!0;return(0,o.findAttributeRange)(i,"linkHref",s.getAttribute("linkHref"),e).containsRange(e.createRange(i,n),!0)}(e.model)&&(i=t.getAttributes()))}),{priority:"high"}),this.listenTo(e.model,"insertContent",((t,[o])=>{n=!1,fe(e)&&i&&(e.model.change((e=>{for(const[t,n]of i)e.setAttribute(t,n,o)})),i=null)}),{priority:"high"})}_handleDeleteContentAfterLink(){const e=this.editor,t=e.model,i=t.document.selection,n=e.editing.view;let s=!1,a=!1;this.listenTo(n.document,"delete",((e,t)=>{a=t.domEvent.keyCode===r.keyCodes.backspace}),{priority:"high"}),this.listenTo(t,"deleteContent",(()=>{s=!1;const e=i.getFirstPosition(),n=i.getAttribute("linkHref");if(!n)return;const r=(0,o.findAttributeRange)(e,"linkHref",n,t);s=r.containsPosition(e)||r.end.isEqual(e)}),{priority:"high"}),this.listenTo(t,"deleteContent",(()=>{a&&(a=!1,s||e.model.enqueueChange((e=>{he(e,me(t.schema))})))}),{priority:"low"})}}function he(e,t){e.removeSelectionAttribute("linkHref");for(const i of t)e.removeSelectionAttribute(i)}function fe(e){return e.model.change((e=>e.batch)).isTyping}function me(e){return e.getDefinition("$text").allowAttributes.filter((e=>e.startsWith("link")))}var ge=i(273),be=i(995),pe=i(764),we={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ae()(pe.Z,we);pe.Z.locals;var ve=i(871),_e={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ae()(ve.Z,_e);ve.Z.locals;class ye extends ge.View{constructor(t,i){super(t);const n=t.t;this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this.urlInputView=this._createUrlInput(),this.saveButtonView=this._createButton(n("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(n("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._manualDecoratorSwitches=this._createManualDecoratorSwitches(i),this.children=this._createFormChildren(i.manualDecorators),this._focusables=new ge.ViewCollection,this._focusCycler=new ge.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}});const o=["ck","ck-link-form","ck-responsive-form"];i.manualDecorators.length&&o.push("ck-link-form_layout-vertical","ck-vertical-form"),this.setTemplate({tag:"form",attributes:{class:o,tabindex:"-1"},children:this.children}),(0,ge.injectCssTransitionDisabler)(this)}getDecoratorSwitchesState(){return Array.from(this._manualDecoratorSwitches).reduce(((e,t)=>(e[t.name]=t.isOn,e)),{})}render(){super.render(),(0,ge.submitHandler)({view:this});[this.urlInputView,...this._manualDecoratorSwitches,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createUrlInput(){const e=this.locale.t,t=new ge.LabeledFieldView(this.locale,ge.createLabeledInputText);return t.label=e("Link URL"),t}_createButton(e,t,i,n){const o=new ge.ButtonView(this.locale);return o.set({label:e,icon:t,tooltip:!0}),o.extendTemplate({attributes:{class:i}}),n&&o.delegate("execute").to(this,n),o}_createManualDecoratorSwitches(e){const t=this.createCollection();for(const i of e.manualDecorators){const n=new ge.SwitchButtonView(this.locale);n.set({name:i.id,label:i.label,withText:!0}),n.bind("isOn").toMany([i,e],"value",((e,t)=>void 0===t&&void 0===e?i.defaultValue:e)),n.on("execute",(()=>{i.set("value",!n.isOn)})),t.add(n)}return t}_createFormChildren(e){const t=this.createCollection();if(t.add(this.urlInputView),e.length){const e=new ge.View;e.setTemplate({tag:"ul",children:this._manualDecoratorSwitches.map((e=>({tag:"li",children:[e],attributes:{class:["ck","ck-list__item"]}}))),attributes:{class:["ck","ck-reset","ck-list"]}}),t.add(e)}return t.add(this.saveButtonView),t.add(this.cancelButtonView),t}}var Ae=i(952),xe={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ae()(Ae.Z,xe);Ae.Z.locals;class Ie extends ge.View{constructor(t){super(t);const i=t.t;this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this.previewButtonView=this._createPreviewButton(),this.unlinkButtonView=this._createButton(i("Unlink"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184zm4.919 10.562-1.414 1.414a.75.75 0 1 1-1.06-1.06l1.414-1.415-1.415-1.414a.75.75 0 0 1 1.061-1.06l1.414 1.414 1.414-1.415a.75.75 0 0 1 1.061 1.061l-1.414 1.414 1.414 1.415a.75.75 0 0 1-1.06 1.06l-1.415-1.414z"/></svg>',"unlink"),this.editButtonView=this._createButton(i("Edit link"),e.icons.pencil,"edit"),this.set("href"),this._focusables=new ge.ViewCollection,this._focusCycler=new ge.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-link-actions","ck-responsive-form"],tabindex:"-1"},children:[this.previewButtonView,this.editButtonView,this.unlinkButtonView]})}render(){super.render();[this.previewButtonView,this.editButtonView,this.unlinkButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createButton(e,t,i){const n=new ge.ButtonView(this.locale);return n.set({label:e,icon:t,tooltip:!0}),n.delegate("execute").to(this,i),n}_createPreviewButton(){const e=new ge.ButtonView(this.locale),t=this.bindTemplate,i=this.t;return e.set({withText:!0,tooltip:i("Open link in new tab")}),e.extendTemplate({attributes:{class:["ck","ck-link-actions__preview"],href:t.to("href",(e=>e&&X(e))),target:"_blank",rel:"noopener noreferrer"}}),e.bind("label").to(this,"href",(e=>e||i("This link has no URL"))),e.bind("isEnabled").to(this,"href",(e=>!!e)),e.template.tag="a",e.template.eventListeners={},e}}const Se='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184z"/></svg>',Te="link-ui";class Ee extends e.Plugin{static get requires(){return[ge.ContextualBalloon]}static get pluginName(){return"LinkUI"}init(){const e=this.editor;e.editing.view.addObserver(t.ClickObserver),this.actionsView=this._createActionsView(),this.formView=this._createFormView(),this._balloon=e.plugins.get(ge.ContextualBalloon),this._createToolbarLinkButton(),this._enableUserBalloonInteractions(),e.conversion.for("editingDowncast").markerToHighlight({model:Te,view:{classes:["ck-fake-link-selection"]}}),e.conversion.for("editingDowncast").markerToElement({model:Te,view:{name:"span",classes:["ck-fake-link-selection","ck-fake-link-selection_collapsed"]}})}destroy(){super.destroy(),this.formView.destroy()}_createActionsView(){const e=this.editor,t=new Ie(e.locale),i=e.commands.get("link"),n=e.commands.get("unlink");return t.bind("href").to(i,"value"),t.editButtonView.bind("isEnabled").to(i),t.unlinkButtonView.bind("isEnabled").to(n),this.listenTo(t,"edit",(()=>{this._addFormView()})),this.listenTo(t,"unlink",(()=>{e.execute("unlink"),this._hideUI()})),t.keystrokes.set("Esc",((e,t)=>{this._hideUI(),t()})),t.keystrokes.set(G,((e,t)=>{this._addFormView(),t()})),t}_createFormView(){const e=this.editor,t=e.commands.get("link"),i=e.config.get("link.defaultProtocol"),n=new ye(e.locale,t);return n.urlInputView.fieldView.bind("value").to(t,"value"),n.urlInputView.bind("isReadOnly").to(t,"isEnabled",(e=>!e)),n.saveButtonView.bind("isEnabled").to(t),this.listenTo(n,"submit",(()=>{const{value:t}=n.urlInputView.fieldView.element,o=te(t,i);e.execute("link",o,n.getDecoratorSwitchesState()),this._closeFormView()})),this.listenTo(n,"cancel",(()=>{this._closeFormView()})),n.keystrokes.set("Esc",((e,t)=>{this._closeFormView(),t()})),n}_createToolbarLinkButton(){const e=this.editor,t=e.commands.get("link"),i=e.t;e.keystrokes.set(G,((e,i)=>{i(),t.isEnabled&&this._showUI(!0)})),e.ui.componentFactory.add("link",(e=>{const n=new ge.ButtonView(e);return n.isEnabled=!0,n.label=i("Link"),n.icon=Se,n.keystroke=G,n.tooltip=!0,n.isToggleable=!0,n.bind("isEnabled").to(t,"isEnabled"),n.bind("isOn").to(t,"value",(e=>!!e)),this.listenTo(n,"execute",(()=>this._showUI(!0))),n}))}_enableUserBalloonInteractions(){const e=this.editor.editing.view.document;this.listenTo(e,"click",(()=>{this._getSelectedLinkElement()&&this._showUI()})),this.editor.keystrokes.set("Tab",((e,t)=>{this._areActionsVisible&&!this.actionsView.focusTracker.isFocused&&(this.actionsView.focus(),t())}),{priority:"high"}),this.editor.keystrokes.set("Esc",((e,t)=>{this._isUIVisible&&(this._hideUI(),t())})),(0,ge.clickOutsideHandler)({emitter:this.formView,activator:()=>this._isUIInPanel,contextElements:[this._balloon.view.element],callback:()=>this._hideUI()})}_addActionsView(){this._areActionsInPanel||this._balloon.add({view:this.actionsView,position:this._getBalloonPositionData()})}_addFormView(){if(this._isFormInPanel)return;const e=this.editor.commands.get("link");this.formView.disableCssTransitions(),this._balloon.add({view:this.formView,position:this._getBalloonPositionData()}),this._balloon.visibleView===this.formView&&this.formView.urlInputView.fieldView.select(),this.formView.enableCssTransitions(),this.formView.urlInputView.fieldView.element.value=e.value||""}_closeFormView(){const e=this.editor.commands.get("link");e.restoreManualDecoratorStates(),void 0!==e.value?this._removeFormView():this._hideUI()}_removeFormView(){this._isFormInPanel&&(this.formView.saveButtonView.focus(),this._balloon.remove(this.formView),this.editor.editing.view.focus(),this._hideFakeVisualSelection())}_showUI(e=!1){this._getSelectedLinkElement()?(this._areActionsVisible?this._addFormView():this._addActionsView(),e&&this._balloon.showStack("main")):(this._showFakeVisualSelection(),this._addActionsView(),e&&this._balloon.showStack("main"),this._addFormView()),this._startUpdatingUI()}_hideUI(){if(!this._isUIInPanel)return;const e=this.editor;this.stopListening(e.ui,"update"),this.stopListening(this._balloon,"change:visibleView"),e.editing.view.focus(),this._removeFormView(),this._balloon.remove(this.actionsView),this._hideFakeVisualSelection()}_startUpdatingUI(){const e=this.editor,t=e.editing.view.document;let i=this._getSelectedLinkElement(),n=s();const o=()=>{const e=this._getSelectedLinkElement(),t=s();i&&!e||!i&&t!==n?this._hideUI():this._isUIVisible&&this._balloon.updatePosition(this._getBalloonPositionData()),i=e,n=t};function s(){return t.selection.focus.getAncestors().reverse().find((e=>e.is("element")))}this.listenTo(e.ui,"update",o),this.listenTo(this._balloon,"change:visibleView",o)}get _isFormInPanel(){return this._balloon.hasView(this.formView)}get _areActionsInPanel(){return this._balloon.hasView(this.actionsView)}get _areActionsVisible(){return this._balloon.visibleView===this.actionsView}get _isUIInPanel(){return this._isFormInPanel||this._areActionsInPanel}get _isUIVisible(){return this._balloon.visibleView==this.formView||this._areActionsVisible}_getBalloonPositionData(){const e=this.editor.editing.view,t=this.editor.model,i=e.document;let n=null;if(t.markers.has(Te)){const t=Array.from(this.editor.editing.mapper.markerNameToElements(Te)),i=e.createRange(e.createPositionBefore(t[0]),e.createPositionAfter(t[t.length-1]));n=e.domConverter.viewRangeToDom(i)}else n=()=>{const t=this._getSelectedLinkElement();return t?e.domConverter.mapViewToDom(t):e.domConverter.viewRangeToDom(i.selection.getFirstRange())};return{target:n}}_getSelectedLinkElement(){const e=this.editor.editing.view,t=e.document.selection,i=t.getSelectedElement();if(t.isCollapsed||i&&(0,be.isWidget)(i))return Ve(t.getFirstPosition());{const i=t.getFirstRange().getTrimmed(),n=Ve(i.start),o=Ve(i.end);return n&&n==o&&e.createRangeIn(n).getTrimmed().isEqual(i)?n:null}}_showFakeVisualSelection(){const e=this.editor.model;e.change((t=>{const i=e.document.selection.getFirstRange();if(e.markers.has(Te))t.updateMarker(Te,{range:i});else if(i.start.isAtEnd){const n=i.start.getLastMatchingPosition((({item:t})=>!e.schema.isContent(t)),{boundaries:i});t.addMarker(Te,{usingOperation:!1,affectsData:!1,range:t.createRange(n,i.end)})}else t.addMarker(Te,{usingOperation:!1,affectsData:!1,range:i})}))}_hideFakeVisualSelection(){const e=this.editor.model;e.markers.has(Te)&&e.change((e=>{e.removeMarker(Te)}))}}function Ve(e){return e.getAncestors().find((e=>{return(t=e).is("attributeElement")&&!!t.getCustomProperty("link");var t}))}const Le=new RegExp("(^|\\s)(((?:(?:(?:https?|ftp):)?\\/\\/)(?:\\S+(?::\\S*)?@)?(?:(?:[1-9]\\d?|1\\d\\d|2[01]\\d|22[0-3])(?:\\.(?:1?\\d{1,2}|2[0-4]\\d|25[0-5])){2}(?:\\.(?:[1-9]\\d?|1\\d\\d|2[0-4]\\d|25[0-4]))|(((?!www\\.)|(www\\.))(?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.)+(?:[a-z\\u00a1-\\uffff]{2,63})))(?::\\d{2,5})?(?:[/?#]\\S*)?)|((www.|(\\S+@))((?![-_])(?:[-_a-z0-9\\u00a1-\\uffff]{1,63}\\.))+(?:[a-z\\u00a1-\\uffff]{2,63})))$","i");class Ce extends e.Plugin{static get requires(){return[o.Delete]}static get pluginName(){return"AutoLink"}init(){const e=this.editor.model.document.selection;e.on("change:range",(()=>{this.isEnabled=!e.anchor.parent.is("element","codeBlock")})),this._enableTypingHandling()}afterInit(){this._enableEnterHandling(),this._enableShiftEnterHandling()}_enableTypingHandling(){const e=this.editor,t=new o.TextWatcher(e.model,(e=>{if(!function(e){return e.length>4&&" "===e[e.length-1]&&" "!==e[e.length-2]}(e))return;const t=De(e.substr(0,e.length-1));return t?{url:t}:void 0}));t.on("matched:data",((t,i)=>{const{batch:n,range:o,url:s}=i;if(!n.isTyping)return;const r=o.end.getShiftedBy(-1),a=r.getShiftedBy(-s.length),c=e.model.createRange(a,r);this._applyAutoLink(s,c)})),t.bind("isEnabled").to(this)}_enableEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("enter");i&&i.on("execute",(()=>{const e=t.document.selection.getFirstPosition();if(!e.parent.previousSibling)return;const i=t.createRangeIn(e.parent.previousSibling);this._checkAndApplyAutoLinkOnRange(i)}))}_enableShiftEnterHandling(){const e=this.editor,t=e.model,i=e.commands.get("shiftEnter");i&&i.on("execute",(()=>{const e=t.document.selection.getFirstPosition(),i=t.createRange(t.createPositionAt(e.parent,0),e.getShiftedBy(-1));this._checkAndApplyAutoLinkOnRange(i)}))}_checkAndApplyAutoLinkOnRange(e){const t=this.editor.model,{text:i,range:n}=(0,o.getLastTextLine)(e,t),s=De(i);if(s){const e=t.createRange(n.end.getShiftedBy(-s.length),n.end);this._applyAutoLink(s,e)}}_applyAutoLink(e,t){const i=this.editor.model,n=this.editor.plugins.get("Delete");this.isEnabled&&function(e,t){return t.schema.checkAttributeInSelection(t.createSelection(e),"linkHref")}(t,i)&&i.enqueueChange((o=>{const s=this.editor.config.get("link.defaultProtocol"),r=te(e,s);o.setAttribute("linkHref",r,t),i.enqueueChange((()=>{n.requestUndoOnBackspace()}))}))}}function De(e){const t=Le.exec(e);return t?t[2]:null}class Me extends e.Plugin{static get requires(){return[ke,Ee,Ce]}static get pluginName(){return"Link"}}class je extends e.Plugin{static get requires(){return["ImageEditing","ImageUtils",ke]}static get pluginName(){return"LinkImageEditing"}init(){const e=this.editor,t=e.model.schema;e.plugins.has("ImageBlockEditing")&&t.extend("imageBlock",{allowAttributes:["linkHref"]}),e.conversion.for("upcast").add(function(e){const t=e.plugins.has("ImageInlineEditing"),i=e.plugins.get("ImageUtils");return e=>{e.on("element:a",((e,n,o)=>{const s=n.viewItem,r=i.findViewImgElement(s);if(!r)return;const a=r.findAncestor((e=>i.isBlockImageView(e)));if(t&&!a)return;const c={attributes:["href"]};if(!o.consumable.consume(s,c))return;const l=s.getAttribute("href");if(!l)return;let u=n.modelCursor.parent;if(!u.is("element","imageBlock")){const e=o.convertItem(r,n.modelCursor);n.modelRange=e.modelRange,n.modelCursor=e.modelCursor,u=n.modelCursor.nodeBefore}u&&u.is("element","imageBlock")&&o.writer.setAttribute("linkHref",l,u)}),{priority:"high"})}}(e)),e.conversion.for("downcast").add(function(e){const t=e.plugins.get("ImageUtils");return e=>{e.on("attribute:linkHref:imageBlock",((e,i,n)=>{if(!n.consumable.consume(i.item,e.name))return;const o=n.mapper.toViewElement(i.item),s=n.writer,r=Array.from(o.getChildren()).find((e=>"a"===e.name)),a=t.findViewImgElement(o),c=a.parent.is("element","picture")?a.parent:a;if(r)i.attributeNewValue?s.setAttribute("href",i.attributeNewValue,r):(s.move(s.createRangeOn(c),s.createPositionAt(o,0)),s.remove(r));else{const e=s.createContainerElement("a",{href:i.attributeNewValue});s.insert(s.createPositionAt(o,0),e),s.move(s.createRangeOn(c),s.createPositionAt(e,0))}}),{priority:"high"})}}(e)),this._enableAutomaticDecorators(),this._enableManualDecorators()}_enableAutomaticDecorators(){const e=this.editor,t=e.commands.get("link").automaticDecorators;t.length&&e.conversion.for("downcast").add(t.getDispatcherForLinkedImage())}_enableManualDecorators(){const e=this.editor,t=e.commands.get("link");for(const i of t.manualDecorators)e.plugins.has("ImageBlockEditing")&&e.model.schema.extend("imageBlock",{allowAttributes:i.id}),e.plugins.has("ImageInlineEditing")&&e.model.schema.extend("imageInline",{allowAttributes:i.id}),e.conversion.for("downcast").add(Be(i)),e.conversion.for("upcast").add(Ne(e,i))}}function Be(e){return t=>{t.on(`attribute:${e.id}:imageBlock`,((t,i,n)=>{const o=n.mapper.toViewElement(i.item),s=Array.from(o.getChildren()).find((e=>"a"===e.name));if(s){for(const[t,i]of(0,r.toMap)(e.attributes))n.writer.setAttribute(t,i,s);e.classes&&n.writer.addClass(e.classes,s);for(const t in e.styles)n.writer.setStyle(t,e.styles[t],s)}}))}}function Ne(e,i){const n=e.plugins.has("ImageInlineEditing"),o=e.plugins.get("ImageUtils");return e=>{e.on("element:a",((e,s,r)=>{const a=s.viewItem,c=o.findViewImgElement(a);if(!c)return;const l=c.findAncestor((e=>o.isBlockImageView(e)));if(n&&!l)return;const u=new t.Matcher(i._createPattern()).match(a);if(!u)return;if(!r.consumable.consume(a,u.match))return;const d=s.modelCursor.nodeBefore||s.modelCursor.parent;r.writer.setAttribute(i.id,!0,d)}),{priority:"high"})}}class He extends e.Plugin{static get requires(){return[ke,Ee,"ImageBlockEditing"]}static get pluginName(){return"LinkImageUI"}init(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"click",((t,i)=>{this._isSelectedLinkedImage(e.model.document.selection)&&(i.preventDefault(),t.stop())}),{priority:"high"}),this._createToolbarLinkImageButton()}_createToolbarLinkImageButton(){const e=this.editor,t=e.t;e.ui.componentFactory.add("linkImage",(i=>{const n=new ge.ButtonView(i),o=e.plugins.get("LinkUI"),s=e.commands.get("link");return n.set({isEnabled:!0,label:t("Link image"),icon:Se,keystroke:G,tooltip:!0,isToggleable:!0}),n.bind("isEnabled").to(s,"isEnabled"),n.bind("isOn").to(s,"value",(e=>!!e)),this.listenTo(n,"execute",(()=>{this._isSelectedLinkedImage(e.model.document.selection)?o._addActionsView():o._showUI(!0)})),n}))}_isSelectedLinkedImage(e){const t=e.getSelectedElement();return this.editor.plugins.get("ImageUtils").isImage(t)&&t.hasAttribute("linkHref")}}var Oe=i(269),Ue={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};ae()(Oe.Z,Ue);Oe.Z.locals;class Pe extends e.Plugin{static get requires(){return[je,He]}static get pluginName(){return"LinkImage"}}})(),(window.CKEditor5=window.CKEditor5||{}).link=n})(); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/link/translations/tt.js b/web/core/assets/vendor/ckeditor5/link/translations/tt.js new file mode 100644 index 0000000000000000000000000000000000000000..34c0f1cf703d9bda85d77159ec26d1eff6afe239 --- /dev/null +++ b/web/core/assets/vendor/ckeditor5/link/translations/tt.js @@ -0,0 +1 @@ +!function(n){const i=n.tt=n.tt||{};i.dictionary=Object.assign(i.dictionary||{},{Downloadable:"","Edit link":"",Link:"Сылтама","Link image":"","Link URL":"","Open in a new tab":"","Open link in new tab":"","This link has no URL":"",Unlink:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/list/list.js b/web/core/assets/vendor/ckeditor5/list/list.js index 30efa3b160de27881b1d48cdd7fe699021e2bcd3..35d300a4e0f07a21e11195370b72a62256daca21 100644 --- a/web/core/assets/vendor/ckeditor5/list/list.js +++ b/web/core/assets/vendor/ckeditor5/list/list.js @@ -2,4 +2,4 @@ /*! * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md. - */(()=>{var t={389:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var n=i(609),s=i.n(n)()((function(t){return t[1]}));s.push([t.id,".ck.ck-collapsible.ck-collapsible_collapsed>.ck-collapsible__children{display:none}:root{--ck-collapsible-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-collapsible>.ck.ck-button{border-radius:0;font-weight:700;padding:var(--ck-spacing-medium) var(--ck-spacing-large);width:100%}.ck.ck-collapsible>.ck.ck-button:focus{background:transparent}.ck.ck-collapsible>.ck.ck-button:active,.ck.ck-collapsible>.ck.ck-button:hover:not(:focus),.ck.ck-collapsible>.ck.ck-button:not(:focus){background:transparent;border-color:transparent;box-shadow:none}.ck.ck-collapsible>.ck.ck-button>.ck-icon{margin-right:var(--ck-spacing-medium);width:var(--ck-collapsible-arrow-size)}.ck.ck-collapsible>.ck-collapsible__children{padding:0 var(--ck-spacing-large) var(--ck-spacing-large)}.ck.ck-collapsible.ck-collapsible_collapsed>.ck.ck-button .ck-icon{transform:rotate(-90deg)}",""]);const r=s},78:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var n=i(609),s=i.n(n)()((function(t){return t[1]}));s.push([t.id,".ck-editor__editable .ck-list-bogus-paragraph{display:block}",""]);const r=s},543:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var n=i(609),s=i.n(n)()((function(t){return t[1]}));s.push([t.id,".ck.ck-list-properties.ck-list-properties_without-styles{padding:var(--ck-spacing-large)}.ck.ck-list-properties.ck-list-properties_without-styles>*{min-width:14em}.ck.ck-list-properties.ck-list-properties_without-styles>*+*{margin-top:var(--ck-spacing-standard)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-list-styles-list{grid-template-columns:repeat(4,auto)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible{border-top:1px solid var(--ck-color-base-border)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible>.ck-collapsible__children>*{width:100%}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible>.ck-collapsible__children>*+*{margin-top:var(--ck-spacing-standard)}.ck.ck-list-properties .ck.ck-numbered-list-properties__start-index .ck-input{min-width:auto;width:100%}.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order{background:transparent;margin-bottom:calc(var(--ck-spacing-tiny)*-1);padding-left:0;padding-right:0}.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:active,.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:hover{background:none;border-color:transparent;box-shadow:none}",""]);const r=s},657:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var n=i(609),s=i.n(n)()((function(t){return t[1]}));s.push([t.id,".ck.ck-list-styles-list{display:grid}:root{--ck-list-style-button-size:44px}.ck.ck-list-styles-list{column-gap:var(--ck-spacing-medium);grid-template-columns:repeat(3,auto);padding:var(--ck-spacing-large);row-gap:var(--ck-spacing-medium)}.ck.ck-list-styles-list .ck-button{box-sizing:content-box;margin:0;padding:0}.ck.ck-list-styles-list .ck-button,.ck.ck-list-styles-list .ck-button .ck-icon{height:var(--ck-list-style-button-size);width:var(--ck-list-style-button-size)}",""]);const r=s},250:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var n=i(609),s=i.n(n)()((function(t){return t[1]}));s.push([t.id,':root{--ck-todo-list-checkmark-size:16px}.ck-content .todo-list{list-style:none}.ck-content .todo-list li{margin-bottom:5px}.ck-content .todo-list li .todo-list{margin-top:5px}.ck-content .todo-list .todo-list__label>input{-webkit-appearance:none;border:0;display:inline-block;height:var(--ck-todo-list-checkmark-size);left:-25px;margin-left:0;margin-right:-15px;position:relative;right:0;vertical-align:middle;width:var(--ck-todo-list-checkmark-size)}.ck-content .todo-list .todo-list__label>input:before{border:1px solid #333;border-radius:2px;box-sizing:border-box;content:"";display:block;height:100%;position:absolute;transition:box-shadow .25s ease-in-out,background .25s ease-in-out,border .25s ease-in-out;width:100%}.ck-content .todo-list .todo-list__label>input:after{border-color:transparent;border-style:solid;border-width:0 calc(var(--ck-todo-list-checkmark-size)/8) calc(var(--ck-todo-list-checkmark-size)/8) 0;box-sizing:content-box;content:"";display:block;height:calc(var(--ck-todo-list-checkmark-size)/2.6);left:calc(var(--ck-todo-list-checkmark-size)/3);pointer-events:none;position:absolute;top:calc(var(--ck-todo-list-checkmark-size)/5.3);transform:rotate(45deg);width:calc(var(--ck-todo-list-checkmark-size)/5.3)}.ck-content .todo-list .todo-list__label>input[checked]:before{background:#26ab33;border-color:#26ab33}.ck-content .todo-list .todo-list__label>input[checked]:after{border-color:#fff}.ck-content .todo-list .todo-list__label .todo-list__label__description{vertical-align:middle}[dir=rtl] .todo-list .todo-list__label>input{left:0;margin-left:-15px;margin-right:0;right:-25px}.ck-editor__editable .todo-list .todo-list__label>input{cursor:pointer}.ck-editor__editable .todo-list .todo-list__label>input:hover:before{box-shadow:0 0 0 5px rgba(0,0,0,.1)}',""]);const r=s},609:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=t(e);return e[2]?"@media ".concat(e[2]," {").concat(i,"}"):i})).join("")},e.i=function(t,i,n){"string"==typeof t&&(t=[[null,t,""]]);var s={};if(n)for(var r=0;r<this.length;r++){var o=this[r][0];null!=o&&(s[o]=!0)}for(var l=0;l<t.length;l++){var a=[].concat(t[l]);n&&s[a[0]]||(i&&(a[2]?a[2]="".concat(i," and ").concat(a[2]):a[2]=i),e.push(a))}},e}},62:(t,e,i)=>{"use strict";var n,s=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var t={};return function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(t){i=null}t[e]=i}return t[e]}}(),o=[];function l(t){for(var e=-1,i=0;i<o.length;i++)if(o[i].identifier===t){e=i;break}return e}function a(t,e){for(var i={},n=[],s=0;s<t.length;s++){var r=t[s],a=e.base?r[0]+e.base:r[0],c=i[a]||0,d="".concat(a," ").concat(c);i[a]=c+1;var u=l(d),m={css:r[1],media:r[2],sourceMap:r[3]};-1!==u?(o[u].references++,o[u].updater(m)):o.push({identifier:d,updater:b(m,e),references:1}),n.push(d)}return n}function c(t){var e=document.createElement("style"),n=t.attributes||{};if(void 0===n.nonce){var s=i.nc;s&&(n.nonce=s)}if(Object.keys(n).forEach((function(t){e.setAttribute(t,n[t])})),"function"==typeof t.insert)t.insert(e);else{var o=r(t.insert||"head");if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(e)}return e}var d,u=(d=[],function(t,e){return d[t]=e,d.filter(Boolean).join("\n")});function m(t,e,i,n){var s=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(t.styleSheet)t.styleSheet.cssText=u(e,s);else{var r=document.createTextNode(s),o=t.childNodes;o[e]&&t.removeChild(o[e]),o.length?t.insertBefore(r,o[e]):t.appendChild(r)}}function p(t,e,i){var n=i.css,s=i.media,r=i.sourceMap;if(s?t.setAttribute("media",s):t.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),t.styleSheet)t.styleSheet.cssText=n;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(n))}}var h=null,f=0;function b(t,e){var i,n,s;if(e.singleton){var r=f++;i=h||(h=c(e)),n=m.bind(null,i,r,!1),s=m.bind(null,i,r,!0)}else i=c(e),n=p.bind(null,i,e),s=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(i)};return n(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;n(t=e)}else s()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=s());var i=a(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var n=0;n<i.length;n++){var s=l(i[n]);o[s].references--}for(var r=a(t,e),c=0;c<i.length;c++){var d=l(i[c]);0===o[d].references&&(o[d].updater(),o.splice(d,1))}i=r}}}},704:(t,e,i)=>{t.exports=i(79)("./src/core.js")},492:(t,e,i)=>{t.exports=i(79)("./src/engine.js")},331:(t,e,i)=>{t.exports=i(79)("./src/enter.js")},181:(t,e,i)=>{t.exports=i(79)("./src/typing.js")},273:(t,e,i)=>{t.exports=i(79)("./src/ui.js")},209:(t,e,i)=>{t.exports=i(79)("./src/utils.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function i(n){var s=e[n];if(void 0!==s)return s.exports;var r=e[n]={id:n,exports:{}};return t[n](r,r.exports,i),r.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{DocumentList:()=>pt,DocumentListEditing:()=>G,DocumentListProperties:()=>Mt,DocumentListPropertiesEditing:()=>Tt,List:()=>ie,ListEditing:()=>te,ListProperties:()=>pe,ListPropertiesEditing:()=>le,ListPropertiesUI:()=>Bt,ListUI:()=>mt,TodoList:()=>Te,TodoListEditing:()=>Ae,TodoListUI:()=>Ie});var t=i(704),e=i(331),s=i(181),r=i(209);class o{constructor(t,e){this._startElement=t,this._referenceIndent=t.getAttribute("listIndent"),this._isForward="forward"==e.direction,this._includeSelf=!!e.includeSelf,this._sameAttributes=(0,r.toArray)(e.sameAttributes||[]),this._sameIndent=!!e.sameIndent,this._lowerIndent=!!e.lowerIndent,this._higherIndent=!!e.higherIndent}static first(t,e){const i=new this(t,e)[Symbol.iterator]();return(0,r.first)(i)}*[Symbol.iterator](){const t=[];for(const{node:e}of l(this._getStartNode(),this._isForward?"forward":"backward")){const i=e.getAttribute("listIndent");if(i<this._referenceIndent){if(!this._lowerIndent)break;this._referenceIndent=i}else if(i>this._referenceIndent){if(!this._higherIndent)continue;if(!this._isForward){t.push(e);continue}}else{if(!this._sameIndent){if(this._higherIndent){t.length&&(yield*t,t.length=0);break}continue}if(this._sameAttributes.some((t=>e.getAttribute(t)!==this._startElement.getAttribute(t))))break}t.length&&(yield*t,t.length=0),yield e}}_getStartNode(){return this._includeSelf?this._startElement:this._isForward?this._startElement.nextSibling:this._startElement.previousSibling}}function*l(t,e="forward"){const i="forward"==e;let n=null;for(;d(t);)yield{node:t,previous:n},n=t,t=i?t.nextSibling:t.previousSibling}class a{constructor(t){this._listHead=t}[Symbol.iterator](){return l(this._listHead,"forward")}}class c{static next(){return(0,r.uid)()}}function d(t){return!!t&&t.is("element")&&t.hasAttribute("listItemId")}function u(t,e={}){return[...m(t,{...e,direction:"backward"}),...m(t,{...e,direction:"forward"})]}function m(t,e={}){const i="forward"==e.direction,n=Array.from(new o(t,{...e,includeSelf:i,sameIndent:!0,sameAttributes:"listItemId"}));return i?n:n.reverse()}function p(t){const e=new o(t,{sameIndent:!0,sameAttributes:"listType"}),i=new o(t,{sameIndent:!0,sameAttributes:"listType",includeSelf:!0,direction:"forward"});return[...Array.from(e).reverse(),...i]}function h(t){return!o.first(t,{sameIndent:!0,sameAttributes:"listItemId"})}function f(t){return!o.first(t,{direction:"forward",sameIndent:!0,sameAttributes:"listItemId"})}function b(t,e={}){t=(0,r.toArray)(t);const i=!1!==e.withNested,n=new Set;for(const e of t)for(const t of u(e,{higherIndent:i}))n.add(t);return k(n)}function g(t){t=(0,r.toArray)(t);const e=new Set;for(const i of t)for(const t of p(i))e.add(t);return k(e)}function v(t,e){const i=m(t,{direction:"forward"}),n=c.next();for(const t of i)e.setAttribute("listItemId",n,t);return i}function w(t,e,i){const n={};for(const[t,i]of e.getAttributes())t.startsWith("list")&&(n[t]=i);const s=m(t,{direction:"forward"});for(const t of s)i.setAttributes(n,t);return s}function y(t,e,{expand:i,indentBy:n=1}={}){t=(0,r.toArray)(t);const s=i?b(t):t;for(const t of s){const i=t.getAttribute("listIndent")+n;i<0?A(t,e):e.setAttribute("listIndent",i,t)}return s}function A(t,e){t=(0,r.toArray)(t);for(const i of t)for(const t of i.getAttributeKeys())t.startsWith("list")&&e.removeAttribute(t,i);return t}function I(t){if(!t.length)return!1;const e=t[0].getAttribute("listItemId");return!!e&&!t.some((t=>t.getAttribute("listItemId")!=e))}function k(t){return Array.from(t).filter((t=>"$graveyard"!==t.root.rootName)).sort(((t,e)=>t.index-e.index))}function x(t){const e=t.document.selection.getSelectedElement();return e&&t.schema.isObject(e)&&t.schema.isBlock(e)?e:null}function T(t,e,i){return m(e,{direction:"forward"}).pop().index>t.index?w(t,e,i):[]}class S extends t.Command{constructor(t,e){super(t),this._direction=e}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=_(t.document.selection);t.change((t=>{const i=[];I(e)&&!h(e[0])?("forward"==this._direction&&i.push(...y(e,t)),i.push(...v(e[0],t))):"forward"==this._direction?i.push(...y(e,t,{expand:!0})):i.push(...function(t,e){const i=b(t=(0,r.toArray)(t)),n=new Set,s=Math.min(...i.map((t=>t.getAttribute("listIndent")))),l=new Map;for(const t of i)l.set(t,o.first(t,{lowerIndent:!0}));for(const t of i){if(n.has(t))continue;n.add(t);const i=t.getAttribute("listIndent")-1;if(i<0)A(t,e);else{if(t.getAttribute("listIndent")==s){const i=T(t,l.get(t),e);for(const t of i)n.add(t);if(i.length)continue}e.setAttribute("listIndent",i,t)}}return k(n)}(e,t));for(const e of i){if(!e.hasAttribute("listType"))continue;const i=o.first(e,{sameIndent:!0});i&&t.setAttribute("listType",i.getAttribute("listType"),e)}this._fireAfterExecute(i)}))}_fireAfterExecute(t){this.fire("afterExecute",k(new Set(t)))}_checkEnabled(){let t=_(this.editor.model.document.selection),e=t[0];if(!e)return!1;if("backward"==this._direction)return!0;if(I(t)&&!h(t[0]))return!0;t=b(t),e=t[0];const i=o.first(e,{sameIndent:!0});return!!i&&i.getAttribute("listType")==e.getAttribute("listType")}}function _(t){const e=Array.from(t.getSelectedBlocks()),i=e.findIndex((t=>!d(t)));return-1!=i&&(e.length=i),e}class C extends t.Command{constructor(t,e){super(t),this.type=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,i=e.document,n=x(e),s=Array.from(i.selection.getSelectedBlocks()).filter((t=>e.schema.checkAttribute(t,"listType"))),r=void 0!==t.forceValue?!t.forceValue:this.value;e.change((t=>{if(r){const e=s[s.length-1],i=m(e,{direction:"forward"}),n=[];i.length>1&&n.push(...v(i[1],t)),n.push(...A(s,t)),n.push(...function(t,e){const i=[];let n=Number.POSITIVE_INFINITY;for(const{node:s}of l(t.nextSibling,"forward")){const t=s.getAttribute("listIndent");if(0==t)break;t<n&&(n=t);const r=t-n;e.setAttribute("listIndent",r,s),i.push(s)}return i}(e,t)),this._fireAfterExecute(n)}else if((n||i.selection.isCollapsed)&&d(s[0])){const e=p(n||s[0]);for(const i of e)t.setAttribute("listType",this.type,i);this._fireAfterExecute(e)}else{const e=[];for(const i of s)if(i.hasAttribute("listType"))for(const n of b(i,{withNested:!1}))n.getAttribute("listType")!=this.type&&(t.setAttribute("listType",this.type,n),e.push(n));else t.setAttributes({listIndent:0,listItemId:c.next(),listType:this.type},i),e.push(i);this._fireAfterExecute(e)}}))}_fireAfterExecute(t){this.fire("afterExecute",k(new Set(t)))}_getValue(){const t=this.editor.model.document.selection,e=Array.from(t.getSelectedBlocks());if(!e.length)return!1;for(const t of e)if(t.getAttribute("listType")!=this.type)return!1;return!0}_checkEnabled(){const t=this.editor.model.document.selection,e=this.editor.model.schema,i=Array.from(t.getSelectedBlocks());if(!i.length)return!1;if(this.value)return!0;for(const t of i)if(e.checkAttribute(t,"listType"))return!0;return!1}}class L extends t.Command{constructor(t,e){super(t),this._direction=e}refresh(){this.isEnabled=this._checkEnabled()}execute({shouldMergeOnBlocksContentLevel:t=!1}={}){const e=this.editor.model,i=e.document.selection,n=[];e.change((s=>{const{firstElement:r,lastElement:l}=this._getMergeSubjectElements(i,t),a=r.getAttribute("listIndent")||0,c=l.getAttribute("listIndent"),d=l.getAttribute("listItemId");if(a!=c){const t=(u=l,Array.from(new o(u,{direction:"forward",higherIndent:!0})));n.push(...y([l,...t],s,{indentBy:a-c,expand:a<c}))}var u;if(t){let t=i;i.isCollapsed&&(t=s.createSelection(s.createRange(s.createPositionAt(r,"end"),s.createPositionAt(l,0)))),e.deleteContent(t,{doNotResetEntireContent:i.isCollapsed});const o=t.getLastPosition().parent,a=o.nextSibling;n.push(o),a&&a!==l&&a.getAttribute("listItemId")==d&&n.push(...w(a,o,s))}else n.push(...w(l,r,s));this._fireAfterExecute(n)}))}_fireAfterExecute(t){this.fire("afterExecute",k(new Set(t)))}_checkEnabled(){const t=this.editor.model,e=t.document.selection,i=x(t);if(e.isCollapsed||i){const t=i||e.getFirstPosition().parent;if(!d(t))return!1;const n="backward"==this._direction?t.previousSibling:t.nextSibling;if(!n)return!1;if(I([t,n]))return!1}else{const t=e.getLastPosition(),i=e.getFirstPosition();if(t.parent===i.parent)return!1;if(!d(t.parent))return!1}return!0}_getMergeSubjectElements(t,e){const i=x(this.editor.model);let n,s;if(t.isCollapsed||i){const r=i||t.getFirstPosition().parent,l=h(r);"backward"==this._direction?(s=r,n=l&&!e?o.first(r,{sameIndent:!0,lowerIndent:!0}):r.previousSibling):(n=r,s=r.nextSibling)}else n=t.getFirstPosition().parent,s=t.getLastPosition().parent;return{firstElement:n,lastElement:s}}}class V extends t.Command{constructor(t,e){super(t),this._direction=e}refresh(){this.isEnabled=this._checkEnabled()}execute(){this.editor.model.change((t=>{const e=v(this._getStartBlock(),t);this._fireAfterExecute(e)}))}_fireAfterExecute(t){this.fire("afterExecute",k(new Set(t)))}_checkEnabled(){const t=this.editor.model.document.selection,e=this._getStartBlock();return t.isCollapsed&&d(e)&&!h(e)}_getStartBlock(){const t=this.editor.model.document.selection.getFirstPosition().parent;return"before"==this._direction?t:t.nextSibling}}function E(t){return t.is("element","ol")||t.is("element","ul")}function P(t){return t.is("element","li")}function z(t){let e=0,i=t.parent;for(;i;){if(P(i))e++;else{const t=i.previousSibling;t&&P(t)&&e++}i=i.parent}return e}function B(t,e,i,n=R(i,e)){return t.createAttributeElement(M(i),null,{priority:2*e/100-100,id:n})}function N(t,e,i){return t.createAttributeElement("li",null,{priority:(2*e+1)/100-100,id:i})}function M(t){return"numbered"==t?"ol":"ul"}function R(t,e){return`list-${t}-${e}`}function O(t,e){const i=t.nodeBefore;if(d(i)){let t=i;for({node:t}of l(t,"backward"))if(e.has(t))return;e.set(i,t)}else{const i=t.nodeAfter;d(i)&&e.set(i,i)}}var D=i(492);function H(){return(t,e,i)=>{if(!i.consumable.test(e.viewItem,{name:!0}))return;const n=new D.UpcastWriter(e.viewItem.document);for(const t of Array.from(e.viewItem.getChildren()))P(t)||E(t)||n.remove(t)}}function F(t,e,i){const n=function(t){return(e,i)=>{const n=[];for(const i of t)e.hasAttribute(i)&&n.push(`attribute:${i}`);return!!n.every((t=>!1!==i.test(e,t)))&&(n.forEach((t=>i.consume(e,t))),!0)}}(t);return(s,r,l)=>{const{writer:a,mapper:c,consumable:d}=l,u=r.item;if(!t.includes(r.attributeKey))return;if(!n(u,d))return;const m=function(t,e,i){const n=i.createRangeOn(t);return e.toViewRange(n).getTrimmed().getContainedElement()}(u,c,i);!function(t,e){let i=t.parent;for(;i.is("attributeElement")&&["ul","ol","li"].includes(i.name);){const n=i.parent;e.unwrap(e.createRangeOn(t),i),i=n}}(m,a),function(t,e,i,n){if(!t.hasAttribute("listIndent"))return;const s=t.getAttribute("listIndent");let r=t;for(let t=s;t>=0;t--){const s=N(n,t,r.getAttribute("listItemId")),l=B(n,t,r.getAttribute("listType"));for(const t of i)r.hasAttribute(t.attributeName)&&t.setAttributeOnDowncast(n,r.getAttribute(t.attributeName),"list"==t.scope?l:s);if(e=n.wrap(e,s),e=n.wrap(e,l),0==t)break;if(r=o.first(r,{lowerIndent:!0}),!r)break}}(u,a.createRangeOn(m),e,a)}}function j(t,{dataPipeline:e}={}){return(i,{writer:n})=>{if(!U(i,t))return;const s=n.createContainerElement("span",{class:"ck-list-bogus-paragraph"});return e&&n.setCustomProperty("dataPipeline:transparentRendering",!0,s),s}}function U(t,e,i=u(t)){if(!d(t))return!1;for(const i of t.getAttributeKeys())if(!i.startsWith("selection:")&&!e.includes(i))return!1;return i.length<2}var q=i(62),K=i.n(q),Z=i(78),$={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(Z.Z,$);Z.Z.locals;const W=["listType","listIndent","listItemId"];class G extends t.Plugin{static get pluginName(){return"DocumentListEditing"}static get requires(){return[e.Enter,s.Delete]}constructor(t){super(t),this._downcastStrategies=[]}init(){const t=this.editor,e=t.model;if(t.plugins.has("ListEditing"))throw new r.CKEditorError("document-list-feature-conflict",this,{conflictPlugin:"ListEditing"});e.schema.extend("$container",{allowAttributes:W}),e.schema.extend("$block",{allowAttributes:W}),e.schema.extend("$blockObject",{allowAttributes:W});for(const t of W)e.schema.setAttributeProperties(t,{copyOnReplace:!0});t.commands.add("numberedList",new C(t,"numbered")),t.commands.add("bulletedList",new C(t,"bulleted")),t.commands.add("indentList",new S(t,"forward")),t.commands.add("outdentList",new S(t,"backward")),t.commands.add("mergeListItemBackward",new L(t,"backward")),t.commands.add("mergeListItemForward",new L(t,"forward")),t.commands.add("splitListItemBefore",new V(t,"before")),t.commands.add("splitListItemAfter",new V(t,"after")),this._setupDeleteIntegration(),this._setupEnterIntegration(),this._setupTabIntegration(),this._setupClipboardIntegration()}afterInit(){const t=this.editor.commands,e=t.get("indent"),i=t.get("outdent");e&&e.registerChildCommand(t.get("indentList"),{priority:"high"}),i&&i.registerChildCommand(t.get("outdentList"),{priority:"lowest"}),this._setupModelPostFixing(),this._setupConversion()}registerDowncastStrategy(t){this._downcastStrategies.push(t)}_getListAttributeNames(){return[...W,...this._downcastStrategies.map((t=>t.attributeName))]}_setupDeleteIntegration(){const t=this.editor,e=t.commands.get("mergeListItemBackward"),i=t.commands.get("mergeListItemForward");this.listenTo(t.editing.view.document,"delete",((n,s)=>{const r=t.model.document.selection;x(t.model)||t.model.change((()=>{const l=r.getFirstPosition();if(r.isCollapsed&&"backward"==s.direction){if(!l.isAtStart)return;const i=l.parent;if(!d(i))return;if(o.first(i,{sameAttributes:"listType",sameIndent:!0})||0!==i.getAttribute("listIndent")){if(!e.isEnabled)return;e.execute({shouldMergeOnBlocksContentLevel:Y(t.model,"backward")})}else f(i)||t.execute("splitListItemAfter"),t.execute("outdentList");s.preventDefault(),n.stop()}else{if(r.isCollapsed&&!r.getLastPosition().isAtEnd)return;if(!i.isEnabled)return;i.execute({shouldMergeOnBlocksContentLevel:Y(t.model,"forward")}),s.preventDefault(),n.stop()}}))}),{context:"li"})}_setupEnterIntegration(){const t=this.editor,e=t.model,i=t.commands,n=i.get("enter");this.listenTo(t.editing.view.document,"enter",((i,n)=>{const s=e.document,r=s.selection.getFirstPosition().parent;if(s.selection.isCollapsed&&d(r)&&r.isEmpty&&!n.isSoft){const e=h(r),s=f(r);e&&s?(t.execute("outdentList"),n.preventDefault(),i.stop()):e&&!s?(t.execute("splitListItemAfter"),n.preventDefault(),i.stop()):s&&(t.execute("splitListItemBefore"),n.preventDefault(),i.stop())}}),{context:"li"}),this.listenTo(n,"afterExecute",(()=>{const e=i.get("splitListItemBefore");if(e.refresh(),!e.isEnabled)return;2===u(t.model.document.selection.getLastPosition().parent).length&&e.execute()}))}_setupTabIntegration(){const t=this.editor;this.listenTo(t.editing.view.document,"tab",((e,i)=>{const n=i.shiftKey?"outdentList":"indentList";this.editor.commands.get(n).isEnabled&&(t.execute(n),i.stopPropagation(),i.preventDefault(),e.stop())}),{context:"li"})}_setupConversion(){const t=this.editor,e=t.model,i=this._getListAttributeNames();t.conversion.for("upcast").elementToElement({view:"li",model:"paragraph"}).add((t=>{t.on("element:li",((t,e,i)=>{const{writer:n,schema:s}=i;if(!e.modelRange)return;const r=Array.from(e.modelRange.getItems({shallow:!0})).filter((t=>s.checkAttribute(t,"listItemId")));if(!r.length)return;const o={listItemId:c.next(),listIndent:z(e.viewItem),listType:e.viewItem.parent&&"ol"==e.viewItem.parent.name?"numbered":"bulleted"};for(const t of r)d(t)||n.setAttributes(o,t);r.length>1&&r[1].getAttribute("listItemId")!=o.listItemId&&i.keepEmptyElement(r[0])})),t.on("element:ul",H(),{priority:"high"}),t.on("element:ol",H(),{priority:"high"})})),t.conversion.for("editingDowncast").elementToElement({model:"paragraph",view:j(i),converterPriority:"high"}),t.conversion.for("dataDowncast").elementToElement({model:"paragraph",view:j(i,{dataPipeline:!0}),converterPriority:"high"}),t.conversion.for("downcast").add((t=>{t.on("attribute",F(i,this._downcastStrategies,e))})),this.listenTo(e.document,"change:data",function(t,e,i,n){return()=>{const n=t.document.differ.getChanges(),o=[],l=new Map,a=new Set;for(const t of n)if("insert"==t.type&&"$text"!=t.name)O(t.position,l),t.attributes.has("listItemId")?a.add(t.position.nodeAfter):O(t.position.getShiftedBy(t.length),l);else if("remove"==t.type&&t.attributes.has("listItemId"))O(t.position,l);else if("attribute"==t.type){const e=t.range.start.nodeAfter;i.includes(t.attributeKey)?(O(t.range.start,l),null===t.attributeNewValue?(O(t.range.start.getShiftedBy(1),l),r(e)&&o.push(e)):a.add(e)):d(e)&&r(e)&&o.push(e)}for(const t of l.values())o.push(...s(t,a));for(const t of new Set(o))e.reconvertItem(t)};function s(t,e){const n=[],s=new Set,a=[];for(const{node:c,previous:d}of l(t,"forward")){if(s.has(c))continue;const t=c.getAttribute("listIndent");d&&t<d.getAttribute("listIndent")&&(a.length=t+1),a[t]=Object.fromEntries(Array.from(c.getAttributes()).filter((([t])=>i.includes(t))));const l=m(c,{direction:"forward"});for(const t of l)s.add(t),(r(t,l)||o(t,a,e))&&n.push(t)}return n}function r(t,n){if(!t.is("element","paragraph"))return!1;const s=e.mapper.toViewElement(t);if(!s)return!1;const r=U(t,i,n);return!(!r||!s.is("element","p"))||!(r||!s.is("element","span"))}function o(t,i,s){if(s.has(t))return!1;const r=e.mapper.toViewElement(t);let o=i.length-1;for(let t=r.parent;!t.is("editableElement");t=t.parent){const e=P(t),s=E(t);if(!s&&!e)continue;const r="checkAttributes:"+(e?"item":"list");if(n.fire(r,{viewElement:t,modelAttributes:i[o]}))break;if(s&&(o--,o<0))return!1}return!0}}(e,t.editing,i,this)),this.on("checkAttributes:item",((t,{viewElement:e,modelAttributes:i})=>{e.id!=i.listItemId&&(t.return=!0,t.stop())})),this.on("checkAttributes:list",((t,{viewElement:e,modelAttributes:i})=>{e.name==M(i.listType)&&e.id==R(i.listType,i.listIndent)||(t.return=!0,t.stop())}))}_setupModelPostFixing(){const t=this.editor.model,e=this._getListAttributeNames();t.document.registerPostFixer((i=>function(t,e,i,n){const s=t.document.differ.getChanges(),r=new Map;let o=!1;for(const n of s)if("insert"==n.type&&"$text"!=n.name){const s=n.position.nodeAfter;if(!t.schema.checkAttribute(s,"listItemId"))for(const t of Array.from(s.getAttributeKeys()))i.includes(t)&&(e.removeAttribute(t,s),o=!0);O(n.position,r),n.attributes.has("listItemId")||O(n.position.getShiftedBy(n.length),r);for(const{item:e,previousPosition:i}of t.createRangeIn(s))d(e)&&O(i,r)}else"remove"==n.type?O(n.position,r):"attribute"==n.type&&i.includes(n.attributeKey)&&(O(n.range.start,r),null===n.attributeNewValue&&O(n.range.start.getShiftedBy(1),r));const l=new Set;for(const t of r.values())o=n.fire("postFixer",{listNodes:new a(t),listHead:t,writer:e,seenIds:l})||o;return o}(t,i,e,this))),this.on("postFixer",((t,{listNodes:e,writer:i})=>{t.return=function(t,e){let i=0,n=-1,s=null,r=!1;for(const{node:o}of t){const t=o.getAttribute("listIndent");if(t>i){let l;null===s?(s=t-i,l=i):(s>t&&(s=t),l=t-s),l>n+1&&(l=n+1),e.setAttribute("listIndent",l,o),r=!0,n=l}else s=null,i=t+1,n=t}return r}(e,i)||t.return}),{priority:"high"}),this.on("postFixer",((t,{listNodes:e,writer:i,seenIds:n})=>{t.return=function(t,e,i){const n=new Set;let s=!1;for(const{node:r}of t){if(n.has(r))continue;let t=r.getAttribute("listType"),o=r.getAttribute("listItemId");e.has(o)&&(o=c.next()),e.add(o);for(const e of m(r,{direction:"forward"}))n.add(e),e.getAttribute("listType")!=t&&(o=c.next(),t=e.getAttribute("listType")),e.getAttribute("listItemId")!=o&&(i.setAttribute("listItemId",o,e),s=!0)}return s}(e,n,i)||t.return}),{priority:"high"})}_setupClipboardIntegration(){const t=this.editor.model;this.listenTo(t,"insertContent",function(t){return(e,[i,n])=>{const s=i.is("documentFragment")?i.getChild(0):i;if(!d(s))return;let r;r=n?t.createSelection(n):t.document.selection;const o=r.getFirstPosition();let a=null;if(d(o.parent)?a=o.parent:d(o.nodeBefore)&&(a=o.nodeBefore),!a)return;const c=a.getAttribute("listIndent")-s.getAttribute("listIndent");c<=0||t.change((t=>{for(const{node:e}of l(s,"forward"))t.setAttribute("listIndent",e.getAttribute("listIndent")+c,e)}))}}(t),{priority:"high"}),this.listenTo(t,"getSelectedContent",((e,[i])=>{I(Array.from(i.getSelectedBlocks()))&&t.change((t=>A(Array.from(e.return.getChildren()),t)))}))}}function Y(t,e){const i=t.document.selection;if(!i.isCollapsed)return!x(t);if("forward"===e)return!0;const n=i.getFirstPosition().parent,s=n.previousSibling;return!t.schema.isObject(s)&&(!!s.isEmpty||I([n,s]))}var J=i(273);function Q(t,e){const i=e.mapper,n=e.writer,s="numbered"==t.getAttribute("listType")?"ol":"ul",r=function(t){const e=t.createContainerElement("li");return e.getFillerOffset=ct,e}(n),o=n.createContainerElement(s,null);return n.insert(n.createPositionAt(o,0),r),i.bindElements(t,r),r}function X(t,e,i,n){const s=e.parent,r=i.mapper,o=i.writer;let l=r.toViewPosition(n.createPositionBefore(t));const a=it(t.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:t.getAttribute("listIndent")}),c=t.previousSibling;if(a&&a.getAttribute("listIndent")==t.getAttribute("listIndent")){const t=r.toViewElement(a);l=o.breakContainer(o.createPositionAfter(t))}else if(c&&"listItem"==c.name){l=r.toViewPosition(n.createPositionAt(c,"end"));const t=r.findMappedViewAncestor(l),e=st(t);l=e?o.createPositionBefore(e):o.createPositionAt(t,"end")}else l=r.toViewPosition(n.createPositionBefore(t));if(l=et(l),o.insert(l,s),c&&"listItem"==c.name){const t=r.toViewElement(c),i=o.createRange(o.createPositionAt(t,0),l).getWalker({ignoreElementEnd:!0});for(const t of i)if(t.item.is("element","li")){const n=o.breakContainer(o.createPositionBefore(t.item)),s=t.item.parent,r=o.createPositionAt(e,"end");tt(o,r.nodeBefore,r.nodeAfter),o.move(o.createRangeOn(s),r),i.position=n}}else{const i=s.nextSibling;if(i&&(i.is("element","ul")||i.is("element","ol"))){let n=null;for(const e of i.getChildren()){const i=r.toModelElement(e);if(!(i&&i.getAttribute("listIndent")>t.getAttribute("listIndent")))break;n=e}n&&(o.breakContainer(o.createPositionAfter(n)),o.move(o.createRangeOn(n.parent),o.createPositionAt(e,"end")))}}tt(o,s,s.nextSibling),tt(o,s.previousSibling,s)}function tt(t,e,i){return!e||!i||"ul"!=e.name&&"ol"!=e.name||e.name!=i.name||e.getAttribute("class")!==i.getAttribute("class")?null:t.mergeContainers(t.createPositionAfter(e))}function et(t){return t.getLastMatchingPosition((t=>t.item.is("uiElement")))}function it(t,e){const i=!!e.sameIndent,n=!!e.smallerIndent,s=e.listIndent;let r=t;for(;r&&"listItem"==r.name;){const t=r.getAttribute("listIndent");if(i&&s==t||n&&s>t)return r;r="forward"===e.direction?r.nextSibling:r.previousSibling}return null}function nt(t,e,i,n){t.ui.componentFactory.add(e,(s=>{const r=t.commands.get(e),o=new J.ButtonView(s);return o.set({label:i,icon:n,tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(r,"value","isEnabled"),o.on("execute",(()=>{t.execute(e),t.editing.view.focus()})),o}))}function st(t){for(const e of t.getChildren())if("ul"==e.name||"ol"==e.name)return e;return null}function rt(t,e){const i=[],n=t.parent,s={ignoreElementEnd:!0,startPosition:t,shallow:!0,direction:e},r=n.getAttribute("listIndent"),o=[...new D.TreeWalker(s)].filter((t=>t.item.is("element"))).map((t=>t.item));for(const t of o){if(!t.is("element","listItem"))break;if(t.getAttribute("listIndent")<r)break;if(!(t.getAttribute("listIndent")>r)){if(t.getAttribute("listType")!==n.getAttribute("listType"))break;if(t.getAttribute("listStyle")!==n.getAttribute("listStyle"))break;if(t.getAttribute("listReversed")!==n.getAttribute("listReversed"))break;if(t.getAttribute("listStart")!==n.getAttribute("listStart"))break;"backward"===e?i.unshift(t):i.push(t)}}return i}function ot(t){let e=[...t.document.selection.getSelectedBlocks()].filter((t=>t.is("element","listItem"))).map((e=>{const i=t.change((t=>t.createPositionAt(e,0)));return[...rt(i,"backward"),...rt(i,"forward")]})).flat();return e=[...new Set(e)],e}const lt=["disc","circle","square"],at=["decimal","decimal-leading-zero","lower-roman","upper-roman","lower-latin","upper-latin"];function ct(){const t=!this.isEmpty&&("ul"==this.getChild(0).name||"ol"==this.getChild(0).name);return this.isEmpty||t?0:D.getFillerOffset.call(this)}const dt='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM3.5 3v5H2V3.7H1v-1h2.5V3zM.343 17.857l2.59-3.257H2.92a.6.6 0 1 0-1.04 0H.302a2 2 0 1 1 3.995 0h-.001c-.048.405-.16.734-.333.988-.175.254-.59.692-1.244 1.312H4.3v1h-4l.043-.043zM7 14.75a.75.75 0 0 1 .75-.75h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75z"/></svg>',ut='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0C1 4.784 1.777 4 2.75 4c.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75C1.784 7.5 1 6.723 1 5.75zm6 9c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0c0-.966.777-1.75 1.75-1.75.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75-.966 0-1.75-.777-1.75-1.75z"/></svg>';class mt extends t.Plugin{static get pluginName(){return"ListUI"}init(){const t=this.editor.t;nt(this.editor,"numberedList",t("Numbered List"),dt),nt(this.editor,"bulletedList",t("Bulleted List"),ut)}}class pt extends t.Plugin{static get requires(){return[G,mt]}static get pluginName(){return"DocumentList"}}class ht extends t.Command{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,i=e.document;let n=Array.from(i.selection.getSelectedBlocks()).filter((t=>d(t)&&"numbered"==t.getAttribute("listType")));n=g(n),e.change((e=>{for(const i of n)e.setAttribute("listStart",t.startIndex||1,i)}))}_getValue(){const t=this.editor.model.document,e=(0,r.first)(t.selection.getSelectedBlocks());return e&&d(e)&&"numbered"==e.getAttribute("listType")?e.getAttribute("listStart"):null}}const ft={},bt={},gt={},vt=[{listStyle:"disc",typeAttribute:"disc",listType:"bulleted"},{listStyle:"circle",typeAttribute:"circle",listType:"bulleted"},{listStyle:"square",typeAttribute:"square",listType:"bulleted"},{listStyle:"decimal",typeAttribute:"1",listType:"numbered"},{listStyle:"decimal-leading-zero",typeAttribute:null,listType:"numbered"},{listStyle:"lower-roman",typeAttribute:"i",listType:"numbered"},{listStyle:"upper-roman",typeAttribute:"I",listType:"numbered"},{listStyle:"lower-alpha",typeAttribute:"a",listType:"numbered"},{listStyle:"upper-alpha",typeAttribute:"A",listType:"numbered"},{listStyle:"lower-latin",typeAttribute:"a",listType:"numbered"},{listStyle:"upper-latin",typeAttribute:"A",listType:"numbered"}];for(const{listStyle:t,typeAttribute:e,listType:i}of vt)ft[t]=i,bt[t]=e,e&&(gt[e]=t);function wt(t){return ft[t]||null}function yt(t){return bt[t]||null}class At extends t.Command{constructor(t,e,i){super(t),this._defaultType=e,this._supportedTypes=i}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,i=e.document;e.change((e=>{this._tryToConvertItemsToList(t);let n=Array.from(i.selection.getSelectedBlocks()).filter((t=>t.hasAttribute("listType")));if(n.length){n=g(n);for(const i of n)e.setAttribute("listStyle",t.type||this._defaultType,i)}}))}isStyleTypeSupported(t){return!this._supportedTypes||this._supportedTypes.includes(t)}_getValue(){const t=(0,r.first)(this.editor.model.document.selection.getSelectedBlocks());return d(t)?t.getAttribute("listStyle"):null}_checkEnabled(){const t=this.editor,e=t.commands.get("numberedList"),i=t.commands.get("bulletedList");return e.isEnabled||i.isEnabled}_tryToConvertItemsToList(t){if(!t.type)return;const e=wt(t.type);if(!e)return;const i=this.editor,n=e+"List";i.commands.get(n).value||i.execute(n)}}class It extends t.Command{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,i=e.document;let n=Array.from(i.selection.getSelectedBlocks()).filter((t=>d(t)&&"numbered"==t.getAttribute("listType")));n=g(n),e.change((e=>{for(const i of n)e.setAttribute("listReversed",!!t.reversed,i)}))}_getValue(){const t=this.editor.model.document,e=(0,r.first)(t.selection.getSelectedBlocks());return d(e)&&"numbered"==e.getAttribute("listType")?e.getAttribute("listReversed"):null}}function kt(t){return(e,i,n)=>{const{writer:s,schema:r,consumable:o}=n;if(!1===o.test(i.viewItem,t.viewConsumables))return;i.modelRange||Object.assign(i,n.convertChildren(i.viewItem,i.modelCursor));let l=!1;for(const e of i.modelRange.getItems({shallow:!0}))r.checkAttribute(e,t.attributeName)&&t.appliesToListItem(e)&&(e.hasAttribute(t.attributeName)||(s.setAttribute(t.attributeName,t.getAttributeOnUpcast(i.viewItem),e),l=!0));l&&o.consume(i.viewItem,t.viewConsumables)}}const xt="default";class Tt extends t.Plugin{static get requires(){return[G]}static get pluginName(){return"DocumentListPropertiesEditing"}constructor(t){super(t),t.config.define("list",{properties:{styles:!0,startIndex:!1,reversed:!1}})}init(){const t=this.editor,e=t.model,i=t.plugins.get(G),n=function(t){const e=[];if(t.styles){const i="object"==typeof t.styles&&t.styles.useAttribute;e.push({attributeName:"listStyle",defaultValue:xt,viewConsumables:{styles:"list-style-type"},addCommand(t){let e=vt.map((t=>t.listStyle));i&&(e=e.filter((t=>!!yt(t)))),t.commands.add("listStyle",new At(t,xt,e))},appliesToListItem:()=>!0,hasValidAttribute(t){if(!t.hasAttribute("listStyle"))return!1;const e=t.getAttribute("listStyle");return e==xt||wt(e)==t.getAttribute("listType")},setAttributeOnDowncast(t,e,n){if(e&&e!==xt){if(!i)return void t.setStyle("list-style-type",e,n);{const i=yt(e);if(i)return void t.setAttribute("type",i,n)}}t.removeStyle("list-style-type",n),t.removeAttribute("type",n)},getAttributeOnUpcast(t){const e=t.getStyle("list-style-type");if(e)return e;const i=t.getAttribute("type");return i?gt[i]||null:xt}})}t.reversed&&e.push({attributeName:"listReversed",defaultValue:!1,viewConsumables:{attributes:"reversed"},addCommand(t){t.commands.add("listReversed",new It(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listReversed")},setAttributeOnDowncast(t,e,i){e?t.setAttribute("reversed","reversed",i):t.removeAttribute("reversed",i)},getAttributeOnUpcast:t=>t.hasAttribute("reversed")});t.startIndex&&e.push({attributeName:"listStart",defaultValue:1,viewConsumables:{attributes:"start"},addCommand(t){t.commands.add("listStart",new ht(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listStart")},setAttributeOnDowncast(t,e,i){e&&e>1?t.setAttribute("start",e,i):t.removeAttribute("start",i)},getAttributeOnUpcast:t=>t.getAttribute("start")||1});return e}(t.config.get("list.properties"));for(const s of n)s.addCommand(t),e.schema.extend("$container",{allowAttributes:s.attributeName}),e.schema.extend("$block",{allowAttributes:s.attributeName}),e.schema.extend("$blockObject",{allowAttributes:s.attributeName}),i.registerDowncastStrategy({scope:"list",attributeName:s.attributeName,setAttributeOnDowncast(t,e,i){s.setAttributeOnDowncast(t,e,i)}});t.conversion.for("upcast").add((t=>{for(const e of n)t.on("element:ol",kt(e)),t.on("element:ul",kt(e))})),i.on("checkAttributes:list",((t,{viewElement:e,modelAttributes:i})=>{for(const s of n)s.getAttributeOnUpcast(e)!=i[s.attributeName]&&(t.return=!0,t.stop())})),this.listenTo(t.commands.get("indentList"),"afterExecute",((t,i)=>{e.change((t=>{for(const e of i)for(const i of n)i.appliesToListItem(e)&&t.setAttribute(i.attributeName,i.defaultValue,e)}))})),i.on("postFixer",((t,{listNodes:e,writer:i})=>{for(const{node:s}of e)for(const e of n)e.hasValidAttribute(s)||(e.appliesToListItem(s)?i.setAttribute(e.attributeName,e.defaultValue,s):i.removeAttribute(e.attributeName,s),t.return=!0)})),i.on("postFixer",((t,{listNodes:e,writer:i})=>{const s=[];for(const{node:r,previous:o}of e){if(!o)continue;const e=r.getAttribute("listIndent"),l=o.getAttribute("listIndent");let a=null;if(e>l?s[l]=o:e<l?(a=s[e],s.length=e):a=o,a&&a.getAttribute("listType")==r.getAttribute("listType"))for(const e of n){const{attributeName:n}=e;if(!e.appliesToListItem(r))continue;const s=a.getAttribute(n);r.getAttribute(n)!=s&&(i.setAttribute(n,s,r),t.return=!0)}}}))}}var St=i(389),_t={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(St.Z,_t);St.Z.locals;class Ct extends J.View{constructor(t,e){super(t);const i=this.bindTemplate;this.set("isCollapsed",!1),this.set("label",""),this.buttonView=this._createButtonView(),this.children=this.createCollection(),this.set("_collapsibleAriaLabelUid"),e&&this.children.addMany(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-collapsible",i.if("isCollapsed","ck-collapsible_collapsed")]},children:[this.buttonView,{tag:"div",attributes:{class:["ck","ck-collapsible__children"],role:"region",hidden:i.if("isCollapsed","hidden"),"aria-labelledby":i.to("_collapsibleAriaLabelUid")},children:this.children}]})}render(){super.render(),this._collapsibleAriaLabelUid=this.buttonView.labelView.element.id}_createButtonView(){const t=new J.ButtonView(this.locale),e=t.bindTemplate;return t.set({withText:!0,icon:'<svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg"><path d="M.941 4.523a.75.75 0 1 1 1.06-1.06l3.006 3.005 3.005-3.005a.75.75 0 1 1 1.06 1.06l-3.549 3.55a.75.75 0 0 1-1.168-.136L.941 4.523z"/></svg>'}),t.extendTemplate({attributes:{"aria-expanded":e.to("isOn",(t=>String(t)))}}),t.bind("label").to(this),t.bind("isOn").to(this,"isCollapsed",(t=>!t)),t.on("execute",(()=>{this.isCollapsed=!this.isCollapsed})),t}}var Lt=i(543),Vt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(Lt.Z,Vt);Lt.Z.locals;class Et extends J.View{constructor(t,{enabledProperties:e,styleButtonViews:i,styleGridAriaLabel:n}){super(t);const s=["ck","ck-list-properties"];this.children=this.createCollection(),this.stylesView=null,this.additionalPropertiesCollapsibleView=null,this.startIndexFieldView=null,this.reversedSwitchButtonView=null,this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this.focusables=new J.ViewCollection,this.focusCycler=new J.FocusCycler({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),e.styles?(this.stylesView=this._createStylesView(i,n),this.children.add(this.stylesView)):s.push("ck-list-properties_without-styles"),(e.startIndex||e.reversed)&&(this._addNumberedListPropertyViews(e,i),s.push("ck-list-properties_with-numbered-properties")),this.setTemplate({tag:"div",attributes:{class:s},children:this.children})}render(){if(super.render(),this.stylesView){for(const t of this.stylesView.children)this.focusables.add(t),this.focusTracker.add(t.element);(this.startIndexFieldView||this.reversedSwitchButtonView)&&(this.focusables.add(this.children.last.buttonView),this.focusTracker.add(this.children.last.buttonView.element))}if(this.startIndexFieldView){this.focusables.add(this.startIndexFieldView),this.focusTracker.add(this.startIndexFieldView.element),this.listenTo(this.startIndexFieldView.element,"selectstart",((t,e)=>{e.stopPropagation()}),{priority:"high"});const t=t=>t.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t)}this.reversedSwitchButtonView&&(this.focusables.add(this.reversedSwitchButtonView),this.focusTracker.add(this.reversedSwitchButtonView.element)),this.keystrokes.listenTo(this.element)}focus(){this.focusCycler.focusFirst()}focusLast(){this.focusCycler.focusLast()}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createStylesView(t,e){const i=new J.View(this.locale);return i.children=i.createCollection(this.locale),i.children.addMany(t),i.setTemplate({tag:"div",attributes:{"aria-label":e,class:["ck","ck-list-styles-list"]},children:i.children}),i.children.delegate("execute").to(this),i}_addNumberedListPropertyViews(t){const e=this.locale.t,i=[];t.startIndex&&(this.startIndexFieldView=this._createStartIndexField(),i.push(this.startIndexFieldView)),t.reversed&&(this.reversedSwitchButtonView=this._createReversedSwitchButton(),i.push(this.reversedSwitchButtonView)),t.styles?(this.additionalPropertiesCollapsibleView=new Ct(this.locale,i),this.additionalPropertiesCollapsibleView.set({label:e("List properties"),isCollapsed:!0}),this.additionalPropertiesCollapsibleView.buttonView.bind("isEnabled").toMany(i,"isEnabled",((...t)=>t.some((t=>t)))),this.additionalPropertiesCollapsibleView.buttonView.on("change:isEnabled",((t,e,i)=>{i||(this.additionalPropertiesCollapsibleView.isCollapsed=!0)})),this.children.add(this.additionalPropertiesCollapsibleView)):this.children.addMany(i)}_createStartIndexField(){const t=this.locale.t,e=new J.LabeledFieldView(this.locale,J.createLabeledInputNumber);return e.set({label:t("Start at"),class:"ck-numbered-list-properties__start-index"}),e.fieldView.set({min:1,step:1,value:1,inputMode:"numeric"}),e.fieldView.on("input",(()=>{const i=e.fieldView.element,n=i.valueAsNumber;Number.isNaN(n)||(i.checkValidity()?this.fire("listStart",{startIndex:n}):e.errorText=t("Start index must be greater than 0."))})),e}_createReversedSwitchButton(){const t=this.locale.t,e=new J.SwitchButtonView(this.locale);return e.set({withText:!0,label:t("Reversed order"),class:"ck-numbered-list-properties__reversed-order"}),e.delegate("execute").to(this,"listReversed"),e}}var Pt=i(657),zt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(Pt.Z,zt);Pt.Z.locals;class Bt extends t.Plugin{static get pluginName(){return"ListPropertiesUI"}init(){const t=this.editor,e=t.locale.t,i=t.config.get("list.properties");i.styles&&t.ui.componentFactory.add("bulletedList",Nt({editor:t,parentCommandName:"bulletedList",buttonLabel:e("Bulleted List"),buttonIcon:ut,styleGridAriaLabel:e("Bulleted list styles toolbar"),styleDefinitions:[{label:e("Toggle the disc list style"),tooltip:e("Disc"),type:"disc",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11 27a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0-9a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0-9a3 3 0 1 1 0 6 3 3 0 0 1 0-6z"/></svg>'},{label:e("Toggle the circle list style"),tooltip:e("Circle"),type:"circle",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11 27a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm0-10a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm0-10a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4z"/></svg>'},{label:e("Toggle the square list style"),tooltip:e("Square"),type:"square",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M14 27v6H8v-6h6zm0-9v6H8v-6h6zm0-9v6H8V9h6z"/></svg>'}]})),(i.styles||i.startIndex||i.reversed)&&t.ui.componentFactory.add("numberedList",Nt({editor:t,parentCommandName:"numberedList",buttonLabel:e("Numbered List"),buttonIcon:dt,styleGridAriaLabel:e("Numbered list styles toolbar"),styleDefinitions:[{label:e("Toggle the decimal list style"),tooltip:e("Decimal"),type:"decimal",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M10.29 15V8.531H9.286c-.14.393-.4.736-.778 1.03-.378.295-.728.495-1.05.6v1.121a4.257 4.257 0 0 0 1.595-.936V15h1.235zm3.343 0v-1.235h-1.235V15h1.235zM11.3 24v-1.147H8.848c.064-.111.148-.226.252-.343.104-.117.351-.354.74-.712.39-.357.66-.631.81-.821.225-.288.39-.562.494-.824.104-.263.156-.539.156-.829 0-.51-.182-.936-.545-1.279-.363-.342-.863-.514-1.499-.514-.58 0-1.063.148-1.45.444-.387.296-.617.784-.69 1.463l1.23.124c.024-.36.112-.619.264-.774.153-.155.358-.233.616-.233.26 0 .465.074.613.222.148.148.222.36.222.635 0 .25-.085.501-.255.756-.126.185-.468.536-1.024 1.055-.692.641-1.155 1.156-1.389 1.544-.234.389-.375.8-.422 1.233H11.3zm2.333 0v-1.235h-1.235V24h1.235zM9.204 34.11c.615 0 1.129-.2 1.542-.598.413-.398.62-.88.62-1.446 0-.39-.11-.722-.332-.997a1.5 1.5 0 0 0-.886-.532c.619-.337.928-.788.928-1.353 0-.399-.151-.756-.453-1.073-.366-.386-.852-.58-1.459-.58a2.25 2.25 0 0 0-.96.2 1.617 1.617 0 0 0-.668.55c-.16.232-.28.544-.358.933l1.138.194c.032-.282.123-.495.272-.642.15-.146.33-.22.54-.22.215 0 .386.065.515.194s.193.302.193.518c0 .255-.087.46-.263.613-.176.154-.43.227-.765.218l-.136 1.006c.22-.061.409-.092.567-.092.24 0 .444.09.61.272.168.182.251.428.251.739 0 .328-.087.589-.261.782a.833.833 0 0 1-.644.29.841.841 0 0 1-.607-.242c-.167-.16-.27-.394-.307-.698l-1.196.145c.062.542.285.98.668 1.316.384.335.868.503 1.45.503zm4.43-.11v-1.235h-1.236V34h1.235z"/></svg>'},{label:e("Toggle the decimal with leading zero list style"),tooltip:e("Decimal with leading zero"),type:"decimal-leading-zero",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M5.714 15.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm6.078.914V8.531H10.79c-.14.393-.4.736-.778 1.03-.378.295-.728.495-1.05.6v1.121a4.257 4.257 0 0 0 1.595-.936V15h1.235zm3.344 0v-1.235h-1.235V15h1.235zm-9.422 9.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm7.088.914v-1.147H10.35c.065-.111.149-.226.253-.343.104-.117.35-.354.74-.712.39-.357.66-.631.81-.821.225-.288.39-.562.493-.824.104-.263.156-.539.156-.829 0-.51-.181-.936-.544-1.279-.364-.342-.863-.514-1.499-.514-.58 0-1.063.148-1.45.444-.387.296-.617.784-.69 1.463l1.23.124c.024-.36.112-.619.264-.774.152-.155.357-.233.615-.233.261 0 .465.074.613.222.148.148.222.36.222.635 0 .25-.085.501-.255.756-.126.185-.467.536-1.024 1.055-.691.641-1.154 1.156-1.388 1.544-.235.389-.375.8-.422 1.233h4.328zm2.334 0v-1.235h-1.235V24h1.235zM5.714 34.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm4.992 1.024c.616 0 1.13-.2 1.543-.598.413-.398.62-.88.62-1.446 0-.39-.111-.722-.332-.997a1.5 1.5 0 0 0-.886-.532c.618-.337.927-.788.927-1.353 0-.399-.15-.756-.452-1.073-.366-.386-.853-.58-1.46-.58a2.25 2.25 0 0 0-.96.2 1.617 1.617 0 0 0-.667.55c-.16.232-.28.544-.359.933l1.139.194c.032-.282.123-.495.272-.642.15-.146.33-.22.54-.22.214 0 .386.065.515.194s.193.302.193.518c0 .255-.088.46-.264.613-.175.154-.43.227-.764.218l-.136 1.006c.22-.061.408-.092.566-.092.24 0 .444.09.611.272.167.182.25.428.25.739 0 .328-.086.589-.26.782a.833.833 0 0 1-.644.29.841.841 0 0 1-.607-.242c-.167-.16-.27-.394-.308-.698l-1.195.145c.062.542.284.98.668 1.316.384.335.867.503 1.45.503zm4.43-.11v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the lower–roman list style"),tooltip:e("Lower–roman"),type:"lower-roman",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11.88 8.7V7.558h-1.234V8.7h1.234zm0 5.3V9.333h-1.234V14h1.234zm2.5 0v-1.235h-1.234V14h1.235zm-4.75 4.7v-1.142H8.395V18.7H9.63zm0 5.3v-4.667H8.395V24H9.63zm2.5-5.3v-1.142h-1.234V18.7h1.235zm0 5.3v-4.667h-1.234V24h1.235zm2.501 0v-1.235h-1.235V24h1.235zM7.38 28.7v-1.142H6.145V28.7H7.38zm0 5.3v-4.667H6.145V34H7.38zm2.5-5.3v-1.142H8.646V28.7H9.88zm0 5.3v-4.667H8.646V34H9.88zm2.5-5.3v-1.142h-1.234V28.7h1.235zm0 5.3v-4.667h-1.234V34h1.235zm2.501 0v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the upper–roman list style"),tooltip:e("Upper-roman"),type:"upper-roman",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11.916 15V8.558h-1.301V15h1.3zm2.465 0v-1.235h-1.235V15h1.235zM9.665 25v-6.442h-1.3V25h1.3zm2.5 0v-6.442h-1.3V25h1.3zm2.466 0v-1.235h-1.235V25h1.235zm-7.216 9v-6.442h-1.3V34h1.3zm2.5 0v-6.442h-1.3V34h1.3zm2.501 0v-6.442h-1.3V34h1.3zm2.465 0v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the lower–latin list style"),tooltip:e("Lower-latin"),type:"lower-latin",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M9.62 14.105c.272 0 .528-.05.768-.153s.466-.257.677-.462c.009.024.023.072.044.145.047.161.086.283.119.365h1.221a2.649 2.649 0 0 1-.222-.626c-.04-.195-.059-.498-.059-.908l.013-1.441c0-.536-.055-.905-.165-1.105-.11-.201-.3-.367-.569-.497-.27-.13-.68-.195-1.23-.195-.607 0-1.064.108-1.371.325-.308.217-.525.55-.65 1.002l1.12.202c.076-.217.176-.369.299-.455.123-.086.294-.13.514-.13.325 0 .546.05.663.152.118.101.176.27.176.508v.123c-.222.093-.622.194-1.2.303-.427.082-.755.178-.982.288-.227.11-.403.268-.53.474a1.327 1.327 0 0 0-.188.706c0 .398.138.728.415.988.277.261.656.391 1.136.391zm.368-.87a.675.675 0 0 1-.492-.189.606.606 0 0 1-.193-.448c0-.176.08-.32.241-.435.106-.07.33-.142.673-.215a7.19 7.19 0 0 0 .751-.19v.247c0 .296-.016.496-.048.602a.773.773 0 0 1-.295.409 1.07 1.07 0 0 1-.637.22zm4.645.765v-1.235h-1.235V14h1.235zM10.2 25.105c.542 0 1.003-.215 1.382-.646.38-.43.57-1.044.57-1.84 0-.771-.187-1.362-.559-1.774a1.82 1.82 0 0 0-1.41-.617c-.522 0-.973.216-1.354.65v-2.32H7.594V25h1.147v-.686a1.9 1.9 0 0 0 .67.592c.26.133.523.2.79.2zm-.299-.975c-.354 0-.638-.164-.852-.492-.153-.232-.229-.59-.229-1.073 0-.468.098-.818.295-1.048a.93.93 0 0 1 .738-.345c.302 0 .55.118.743.354.193.236.29.62.29 1.154 0 .5-.096.868-.288 1.1-.192.233-.424.35-.697.35zm4.478.87v-1.235h-1.234V25h1.234zm-4.017 9.105c.6 0 1.08-.142 1.437-.426.357-.284.599-.704.725-1.261l-1.213-.207c-.061.326-.167.555-.316.688a.832.832 0 0 1-.576.2.916.916 0 0 1-.75-.343c-.185-.228-.278-.62-.278-1.173 0-.498.091-.853.274-1.066.183-.212.429-.318.736-.318.232 0 .42.061.565.184.145.123.238.306.28.55l1.216-.22c-.146-.501-.387-.874-.722-1.119-.336-.244-.788-.366-1.356-.366-.695 0-1.245.214-1.653.643-.407.43-.61 1.03-.61 1.8 0 .762.202 1.358.608 1.788.406.431.95.646 1.633.646zM14.633 34v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the upper–latin list style"),tooltip:e("Upper-latin"),type:"upper-latin",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="m7.88 15 .532-1.463h2.575L11.549 15h1.415l-2.58-6.442H9.01L6.5 15h1.38zm2.69-2.549H8.811l.87-2.39.887 2.39zM14.88 15v-1.235h-1.234V15h1.234zM9.352 25c.83-.006 1.352-.02 1.569-.044.346-.038.636-.14.872-.305.236-.166.422-.387.558-.664.137-.277.205-.562.205-.855 0-.372-.106-.695-.317-.97-.21-.276-.512-.471-.905-.585a1.51 1.51 0 0 0 .661-.567 1.5 1.5 0 0 0 .244-.83c0-.28-.066-.53-.197-.754a1.654 1.654 0 0 0-.495-.539 1.676 1.676 0 0 0-.672-.266c-.25-.042-.63-.063-1.14-.063H7.158V25h2.193zm.142-3.88H8.46v-1.49h.747c.612 0 .983.007 1.112.022.217.026.38.102.49.226.11.125.165.287.165.486a.68.68 0 0 1-.192.503.86.86 0 0 1-.525.23 11.47 11.47 0 0 1-.944.023h.18zm.17 2.795H8.46v-1.723h1.05c.592 0 .977.03 1.154.092.177.062.313.16.406.295a.84.84 0 0 1 .14.492c0 .228-.06.41-.181.547a.806.806 0 0 1-.473.257c-.126.026-.423.04-.892.04zM14.88 25v-1.235h-1.234V25h1.234zm-5.018 9.11c.691 0 1.262-.17 1.711-.512.45-.341.772-.864.965-1.567l-1.261-.4c-.109.472-.287.818-.536 1.037-.25.22-.547.33-.892.33-.47 0-.85-.173-1.143-.519-.293-.345-.44-.925-.44-1.74 0-.767.15-1.322.447-1.665.297-.343.684-.514 1.162-.514.346 0 .64.096.881.29.242.193.4.457.477.79l1.288-.307c-.147-.516-.367-.911-.66-1.187-.492-.465-1.132-.698-1.92-.698-.902 0-1.63.296-2.184.89-.554.593-.83 1.426-.83 2.498 0 1.014.275 1.813.825 2.397.551.585 1.254.877 2.11.877zM14.88 34v-1.235h-1.234V34h1.234z"/></svg>'}]}))}}function Nt({editor:t,parentCommandName:e,buttonLabel:i,buttonIcon:n,styleGridAriaLabel:s,styleDefinitions:r}){const o=t.commands.get(e);return l=>{const a=(0,J.createDropdown)(l,J.SplitButtonView),c=a.buttonView;a.bind("isEnabled").to(o),a.class="ck-list-styles-dropdown",c.on("execute",(()=>{t.execute(e),t.editing.view.focus()})),c.set({label:i,icon:n,tooltip:!0,isToggleable:!0}),c.bind("isOn").to(o,"value",(t=>!!t));const d=function({editor:t,dropdownView:e,parentCommandName:i,styleDefinitions:n,styleGridAriaLabel:s}){const r=t.locale,o=t.config.get("list.properties");let l;"numberedList"!=i&&(o.startIndex=!1,o.reversed=!1);if(o.styles){const e=t.commands.get("listStyle"),s=function({editor:t,listStyleCommand:e,parentCommandName:i}){const n=t.locale,s=t.commands.get(i);return({label:i,type:r,icon:o,tooltip:l})=>{const a=new J.ButtonView(n);return a.set({label:i,icon:o,tooltip:l}),e.on("change:value",(()=>{a.isOn=e.value===r})),a.on("execute",(()=>{s.value?e.value!==r?t.execute("listStyle",{type:r}):t.execute("listStyle",{type:e._defaultType}):t.model.change((()=>{t.execute("listStyle",{type:r})}))})),a}}({editor:t,parentCommandName:i,listStyleCommand:e}),r="function"==typeof e.isStyleTypeSupported?t=>e.isStyleTypeSupported(t.type):()=>!0;l=n.filter(r).map(s)}const a=new Et(r,{styleGridAriaLabel:s,enabledProperties:o,styleButtonViews:l});if(o.startIndex){const e=t.commands.get("listStart");a.startIndexFieldView.bind("isEnabled").to(e),a.startIndexFieldView.fieldView.bind("value").to(e),a.on("listStart",((e,i)=>t.execute("listStart",i)))}if(o.reversed){const e=t.commands.get("listReversed");a.reversedSwitchButtonView.bind("isEnabled").to(e),a.reversedSwitchButtonView.bind("isOn").to(e,"value"),a.on("listReversed",(()=>{const i=e.value;t.execute("listReversed",{reversed:!i})}))}return a.delegate("execute").to(e),a}({editor:t,dropdownView:a,parentCommandName:e,styleGridAriaLabel:s,styleDefinitions:r});return a.panelView.children.add(d),(0,J.focusChildOnDropdownOpen)(a,(()=>d.stylesView.children.find((t=>t.isOn)))),a.on("execute",(()=>{t.editing.view.focus()})),a}}class Mt extends t.Plugin{static get requires(){return[Tt,Bt]}static get pluginName(){return"DocumentListProperties"}}class Rt extends t.Command{constructor(t,e){super(t),this.type=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,i=e.document,n=Array.from(i.selection.getSelectedBlocks()).filter((t=>Dt(t,e.schema))),s=void 0!==t.forceValue?!t.forceValue:this.value;e.change((t=>{if(s){let e=n[n.length-1].nextSibling,i=Number.POSITIVE_INFINITY,s=[];for(;e&&"listItem"==e.name&&0!==e.getAttribute("listIndent");){const t=e.getAttribute("listIndent");t<i&&(i=t);const n=t-i;s.push({element:e,listIndent:n}),e=e.nextSibling}s=s.reverse();for(const e of s)t.setAttribute("listIndent",e.listIndent,e.element)}if(!s){let t=Number.POSITIVE_INFINITY;for(const e of n)e.is("element","listItem")&&e.getAttribute("listIndent")<t&&(t=e.getAttribute("listIndent"));t=0===t?1:t,Ot(n,!0,t),Ot(n,!1,t)}for(const e of n.reverse())s&&"listItem"==e.name?t.rename(e,"paragraph"):s||"listItem"==e.name?s||"listItem"!=e.name||e.getAttribute("listType")==this.type||t.setAttribute("listType",this.type,e):(t.setAttributes({listType:this.type,listIndent:0},e),t.rename(e,"listItem"));this.fire("_executeCleanup",n)}))}_getValue(){const t=(0,r.first)(this.editor.model.document.selection.getSelectedBlocks());return!!t&&t.is("element","listItem")&&t.getAttribute("listType")==this.type}_checkEnabled(){if(this.value)return!0;const t=this.editor.model.document.selection,e=this.editor.model.schema,i=(0,r.first)(t.getSelectedBlocks());return!!i&&Dt(i,e)}}function Ot(t,e,i){const n=e?t[0]:t[t.length-1];if(n.is("element","listItem")){let s=n[e?"previousSibling":"nextSibling"],r=n.getAttribute("listIndent");for(;s&&s.is("element","listItem")&&s.getAttribute("listIndent")>=i;)r>s.getAttribute("listIndent")&&(r=s.getAttribute("listIndent")),s.getAttribute("listIndent")==r&&t[e?"unshift":"push"](s),s=s[e?"previousSibling":"nextSibling"]}}function Dt(t,e){return e.checkChild(t.parent,"listItem")&&!e.isObject(t)}class Ht extends t.Command{constructor(t,e){super(t),this._indentBy="forward"==e?1:-1}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=t.document;let i=Array.from(e.selection.getSelectedBlocks());t.change((t=>{const e=i[i.length-1];let n=e.nextSibling;for(;n&&"listItem"==n.name&&n.getAttribute("listIndent")>e.getAttribute("listIndent");)i.push(n),n=n.nextSibling;this._indentBy<0&&(i=i.reverse());for(const e of i){const i=e.getAttribute("listIndent")+this._indentBy;i<0?t.rename(e,"paragraph"):t.setAttribute("listIndent",i,e)}this.fire("_executeCleanup",i)}))}_checkEnabled(){const t=(0,r.first)(this.editor.model.document.selection.getSelectedBlocks());if(!t||!t.is("element","listItem"))return!1;if(this._indentBy>0){const e=t.getAttribute("listIndent"),i=t.getAttribute("listType");let n=t.previousSibling;for(;n&&n.is("element","listItem")&&n.getAttribute("listIndent")>=e;){if(n.getAttribute("listIndent")==e)return n.getAttribute("listType")==i;n=n.previousSibling}return!1}return!0}}function Ft(t){return(e,i,n)=>{const s=n.consumable;if(!s.test(i.item,"insert")||!s.test(i.item,"attribute:listType")||!s.test(i.item,"attribute:listIndent"))return;s.consume(i.item,"insert"),s.consume(i.item,"attribute:listType"),s.consume(i.item,"attribute:listIndent");const r=i.item;X(r,Q(r,n),n,t)}}function jt(t,e,i){if(!i.consumable.test(e.item,t.name))return;const n=i.mapper.toViewElement(e.item),s=i.writer;s.breakContainer(s.createPositionBefore(n)),s.breakContainer(s.createPositionAfter(n));const r=n.parent,o="numbered"==e.attributeNewValue?"ol":"ul";s.rename(o,r)}function Ut(t,e,i){i.consumable.consume(e.item,t.name);const n=i.mapper.toViewElement(e.item).parent,s=i.writer;tt(s,n,n.nextSibling),tt(s,n.previousSibling,n)}function qt(t,e,i){if(i.consumable.test(e.item,t.name)&&"listItem"!=e.item.name){let t=i.mapper.toViewPosition(e.range.start);const n=i.writer,s=[];for(;("ul"==t.parent.name||"ol"==t.parent.name)&&(t=n.breakContainer(t),"li"==t.parent.name);){const e=t,i=n.createPositionAt(t.parent,"end");if(!e.isEqual(i)){const t=n.remove(n.createRange(e,i));s.push(t)}t=n.createPositionAfter(t.parent)}if(s.length>0){for(let e=0;e<s.length;e++){const i=t.nodeBefore;if(t=n.insert(t,s[e]).end,e>0){const e=tt(n,i,i.nextSibling);e&&e.parent==i&&t.offset--}}tt(n,t.nodeBefore,t.nodeAfter)}}}function Kt(t,e,i){const n=i.mapper.toViewPosition(e.position),s=n.nodeBefore,r=n.nodeAfter;tt(i.writer,s,r)}function Zt(t,e,i){if(i.consumable.consume(e.viewItem,{name:!0})){const t=i.writer,n=t.createElement("listItem"),s=function(t){let e=0,i=t.parent;for(;i;){if(i.is("element","li"))e++;else{const t=i.previousSibling;t&&t.is("element","li")&&e++}i=i.parent}return e}(e.viewItem);t.setAttribute("listIndent",s,n);const r=e.viewItem.parent&&"ol"==e.viewItem.parent.name?"numbered":"bulleted";if(t.setAttribute("listType",r,n),!i.safeInsert(n,e.modelCursor))return;const o=function(t,e,i){const{writer:n,schema:s}=i;let r=n.createPositionAfter(t);for(const o of e)if("ul"==o.name||"ol"==o.name)r=i.convertItem(o,r).modelCursor;else{const e=i.convertItem(o,n.createPositionAt(t,"end")),l=e.modelRange.start.nodeAfter;l&&l.is("element")&&!s.checkChild(t,l.name)&&(t=e.modelCursor.parent.is("element","listItem")?e.modelCursor.parent:Jt(e.modelCursor),r=n.createPositionAfter(t))}return r}(n,e.viewItem.getChildren(),i);e.modelRange=t.createRange(e.modelCursor,o),i.updateConversionResult(n,e)}}function $t(t,e,i){if(i.consumable.test(e.viewItem,{name:!0})){const t=Array.from(e.viewItem.getChildren());for(const e of t){!(e.is("element","li")||Xt(e))&&e._remove()}}}function Wt(t,e,i){if(i.consumable.test(e.viewItem,{name:!0})){if(0===e.viewItem.childCount)return;const t=[...e.viewItem.getChildren()];let i=!1;for(const e of t)i&&!Xt(e)&&e._remove(),Xt(e)&&(i=!0)}}function Gt(t){return(e,i)=>{if(i.isPhantom)return;const n=i.modelPosition.nodeBefore;if(n&&n.is("element","listItem")){const e=i.mapper.toViewElement(n),s=e.getAncestors().find(Xt),r=t.createPositionAt(e,0).getWalker();for(const t of r){if("elementStart"==t.type&&t.item.is("element","li")){i.viewPosition=t.previousPosition;break}if("elementEnd"==t.type&&t.item==s){i.viewPosition=t.nextPosition;break}}}}}function Yt(t,[e,i]){let n,s=e.is("documentFragment")?e.getChild(0):e;if(n=i?this.createSelection(i):this.document.selection,s&&s.is("element","listItem")){const t=n.getFirstPosition();let e=null;if(t.parent.is("element","listItem")?e=t.parent:t.nodeBefore&&t.nodeBefore.is("element","listItem")&&(e=t.nodeBefore),e){const t=e.getAttribute("listIndent");if(t>0)for(;s&&s.is("element","listItem");)s._setAttribute("listIndent",s.getAttribute("listIndent")+t),s=s.nextSibling}}}function Jt(t){const e=new D.TreeWalker({startPosition:t});let i;do{i=e.next()}while(!i.value.item.is("element","listItem"));return i.value.item}function Qt(t,e,i,n,s,r){const o=it(e.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:t,foo:"b"}),l=s.mapper,a=s.writer,c=o?o.getAttribute("listIndent"):null;let d;if(o)if(c==t){const t=l.toViewElement(o).parent;d=a.createPositionAfter(t)}else{const t=r.createPositionAt(o,"end");d=l.toViewPosition(t)}else d=i;d=et(d);for(const t of[...n.getChildren()])Xt(t)&&(d=a.move(a.createRangeOn(t),d).end,tt(a,t,t.nextSibling),tt(a,t.previousSibling,t))}function Xt(t){return t.is("element","ol")||t.is("element","ul")}class te extends t.Plugin{static get pluginName(){return"ListEditing"}static get requires(){return[e.Enter,s.Delete]}init(){const t=this.editor;t.model.schema.register("listItem",{inheritAllFrom:"$block",allowAttributes:["listType","listIndent"]});const e=t.data,i=t.editing;var n;t.model.document.registerPostFixer((e=>function(t,e){const i=t.document.differ.getChanges(),n=new Map;let s=!1;for(const n of i)if("insert"==n.type&&"listItem"==n.name)r(n.position);else if("insert"==n.type&&"listItem"!=n.name){if("$text"!=n.name){const i=n.position.nodeAfter;i.hasAttribute("listIndent")&&(e.removeAttribute("listIndent",i),s=!0),i.hasAttribute("listType")&&(e.removeAttribute("listType",i),s=!0),i.hasAttribute("listStyle")&&(e.removeAttribute("listStyle",i),s=!0),i.hasAttribute("listReversed")&&(e.removeAttribute("listReversed",i),s=!0),i.hasAttribute("listStart")&&(e.removeAttribute("listStart",i),s=!0);for(const e of Array.from(t.createRangeIn(i)).filter((t=>t.item.is("element","listItem"))))r(e.previousPosition)}r(n.position.getShiftedBy(n.length))}else"remove"==n.type&&"listItem"==n.name?r(n.position):("attribute"==n.type&&"listIndent"==n.attributeKey||"attribute"==n.type&&"listType"==n.attributeKey)&&r(n.range.start);for(const t of n.values())o(t),l(t);return s;function r(t){const e=t.nodeBefore;if(e&&e.is("element","listItem")){let t=e;if(n.has(t))return;for(let e=t.previousSibling;e&&e.is("element","listItem");e=t.previousSibling)if(t=e,n.has(t))return;n.set(e,t)}else{const e=t.nodeAfter;e&&e.is("element","listItem")&&n.set(e,e)}}function o(t){let i=0,n=null;for(;t&&t.is("element","listItem");){const r=t.getAttribute("listIndent");if(r>i){let o;null===n?(n=r-i,o=i):(n>r&&(n=r),o=r-n),e.setAttribute("listIndent",o,t),s=!0}else n=null,i=t.getAttribute("listIndent")+1;t=t.nextSibling}}function l(t){let i=[],n=null;for(;t&&t.is("element","listItem");){const r=t.getAttribute("listIndent");if(n&&n.getAttribute("listIndent")>r&&(i=i.slice(0,r+1)),0!=r)if(i[r]){const n=i[r];t.getAttribute("listType")!=n&&(e.setAttribute("listType",n,t),s=!0)}else i[r]=t.getAttribute("listType");n=t,t=t.nextSibling}}}(t.model,e))),i.mapper.registerViewToModelLength("li",ee),e.mapper.registerViewToModelLength("li",ee),i.mapper.on("modelToViewPosition",Gt(i.view)),i.mapper.on("viewToModelPosition",(n=t.model,(t,e)=>{const i=e.viewPosition,s=i.parent,r=e.mapper;if("ul"==s.name||"ol"==s.name){if(i.isAtEnd){const t=r.toModelElement(i.nodeBefore),s=r.getModelLength(i.nodeBefore);e.modelPosition=n.createPositionBefore(t).getShiftedBy(s)}else{const t=r.toModelElement(i.nodeAfter);e.modelPosition=n.createPositionBefore(t)}t.stop()}else if("li"==s.name&&i.nodeBefore&&("ul"==i.nodeBefore.name||"ol"==i.nodeBefore.name)){const o=r.toModelElement(s);let l=1,a=i.nodeBefore;for(;a&&Xt(a);)l+=r.getModelLength(a),a=a.previousSibling;e.modelPosition=n.createPositionBefore(o).getShiftedBy(l),t.stop()}})),e.mapper.on("modelToViewPosition",Gt(i.view)),t.conversion.for("editingDowncast").add((e=>{e.on("insert",qt,{priority:"high"}),e.on("insert:listItem",Ft(t.model)),e.on("attribute:listType:listItem",jt,{priority:"high"}),e.on("attribute:listType:listItem",Ut,{priority:"low"}),e.on("attribute:listIndent:listItem",function(t){return(e,i,n)=>{if(!n.consumable.consume(i.item,"attribute:listIndent"))return;const s=n.mapper.toViewElement(i.item),r=n.writer;r.breakContainer(r.createPositionBefore(s)),r.breakContainer(r.createPositionAfter(s));const o=s.parent,l=o.previousSibling,a=r.createRangeOn(o);r.remove(a),l&&l.nextSibling&&tt(r,l,l.nextSibling),Qt(i.attributeOldValue+1,i.range.start,a.start,s,n,t),X(i.item,s,n,t);for(const t of i.item.getChildren())n.consumable.consume(t,"insert")}}(t.model)),e.on("remove:listItem",function(t){return(e,i,n)=>{const s=n.mapper.toViewPosition(i.position).getLastMatchingPosition((t=>!t.item.is("element","li"))).nodeAfter,r=n.writer;r.breakContainer(r.createPositionBefore(s)),r.breakContainer(r.createPositionAfter(s));const o=s.parent,l=o.previousSibling,a=r.createRangeOn(o),c=r.remove(a);l&&l.nextSibling&&tt(r,l,l.nextSibling),Qt(n.mapper.toModelElement(s).getAttribute("listIndent")+1,i.position,a.start,s,n,t);for(const t of r.createRangeIn(c).getItems())n.mapper.unbindViewElement(t);e.stop()}}(t.model)),e.on("remove",Kt,{priority:"low"})})),t.conversion.for("dataDowncast").add((e=>{e.on("insert",qt,{priority:"high"}),e.on("insert:listItem",Ft(t.model))})),t.conversion.for("upcast").add((t=>{t.on("element:ul",$t,{priority:"high"}),t.on("element:ol",$t,{priority:"high"}),t.on("element:li",Wt,{priority:"high"}),t.on("element:li",Zt)})),t.model.on("insertContent",Yt,{priority:"high"}),t.commands.add("numberedList",new Rt(t,"numbered")),t.commands.add("bulletedList",new Rt(t,"bulleted")),t.commands.add("indentList",new Ht(t,"forward")),t.commands.add("outdentList",new Ht(t,"backward"));const s=i.view.document;this.listenTo(s,"enter",((t,e)=>{const i=this.editor.model.document,n=i.selection.getLastPosition().parent;i.selection.isCollapsed&&"listItem"==n.name&&n.isEmpty&&(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),{context:"li"}),this.listenTo(s,"delete",((t,e)=>{if("backward"!==e.direction)return;const i=this.editor.model.document.selection;if(!i.isCollapsed)return;const n=i.getFirstPosition();if(!n.isAtStart)return;const s=n.parent;if("listItem"!==s.name)return;s.previousSibling&&"listItem"===s.previousSibling.name||(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),{context:"li"}),this.listenTo(t.editing.view.document,"tab",((e,i)=>{const n=i.shiftKey?"outdentList":"indentList";this.editor.commands.get(n).isEnabled&&(t.execute(n),i.stopPropagation(),i.preventDefault(),e.stop())}),{context:"li"})}afterInit(){const t=this.editor.commands,e=t.get("indent"),i=t.get("outdent");e&&e.registerChildCommand(t.get("indentList")),i&&i.registerChildCommand(t.get("outdentList"))}}function ee(t){let e=1;for(const i of t.getChildren())if("ul"==i.name||"ol"==i.name)for(const t of i.getChildren())e+=ee(t);return e}class ie extends t.Plugin{static get requires(){return[te,mt]}static get pluginName(){return"List"}}class ne extends t.Command{constructor(t,e){super(t),this._defaultType=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){this._tryToConvertItemsToList(t);const e=this.editor.model,i=ot(e);i.length&&e.change((e=>{for(const n of i)e.setAttribute("listStyle",t.type||this._defaultType,n)}))}_getValue(){const t=this.editor.model.document.selection.getFirstPosition().parent;return t&&t.is("element","listItem")?t.getAttribute("listStyle"):null}_checkEnabled(){const t=this.editor,e=t.commands.get("numberedList"),i=t.commands.get("bulletedList");return e.isEnabled||i.isEnabled}_tryToConvertItemsToList(t){if(!t.type)return;const e=(i=t.type,lt.includes(i)?"bulleted":at.includes(i)?"numbered":null);var i;if(!e)return;const n=this.editor,s=e+"List";n.commands.get(s).value||n.execute(s)}}class se extends t.Command{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,i=ot(e).filter((t=>"numbered"==t.getAttribute("listType")));e.change((e=>{for(const n of i)e.setAttribute("listReversed",!!t.reversed,n)}))}_getValue(){const t=this.editor.model.document.selection.getFirstPosition().parent;return t&&t.is("element","listItem")&&"numbered"==t.getAttribute("listType")?t.getAttribute("listReversed"):null}}class re extends t.Command{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,i=ot(e).filter((t=>"numbered"==t.getAttribute("listType")));e.change((e=>{for(const n of i)e.setAttribute("listStart",t.startIndex||1,n)}))}_getValue(){const t=this.editor.model.document.selection.getFirstPosition().parent;return t&&t.is("element","listItem")&&"numbered"==t.getAttribute("listType")?t.getAttribute("listStart"):null}}const oe="default";class le extends t.Plugin{static get requires(){return[te]}static get pluginName(){return"ListPropertiesEditing"}constructor(t){super(t),t.config.define("list",{properties:{styles:!0,startIndex:!1,reversed:!1}})}init(){const t=this.editor,e=t.model,i=function(t){const e=[];t.styles&&e.push({attributeName:"listStyle",defaultValue:oe,addCommand(t){t.commands.add("listStyle",new ne(t,oe))},appliesToListItem:()=>!0,setAttributeOnDowncast(t,e,i){e&&e!==oe?t.setStyle("list-style-type",e,i):t.removeStyle("list-style-type",i)},getAttributeOnUpcast:t=>t.getStyle("list-style-type")||oe});t.reversed&&e.push({attributeName:"listReversed",defaultValue:!1,addCommand(t){t.commands.add("listReversed",new se(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),setAttributeOnDowncast(t,e,i){e?t.setAttribute("reversed","reversed",i):t.removeAttribute("reversed",i)},getAttributeOnUpcast:t=>t.hasAttribute("reversed")});t.startIndex&&e.push({attributeName:"listStart",defaultValue:1,addCommand(t){t.commands.add("listStart",new re(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),setAttributeOnDowncast(t,e,i){1!=e?t.setAttribute("start",e,i):t.removeAttribute("start",i)},getAttributeOnUpcast:t=>t.getAttribute("start")||1});return e}(t.config.get("list.properties"));e.schema.extend("listItem",{allowAttributes:i.map((t=>t.attributeName))});for(const e of i)e.addCommand(t);var n;this.listenTo(t.commands.get("indentList"),"_executeCleanup",function(t,e){return(i,n)=>{const s=n[0],r=s.getAttribute("listIndent"),o=n.filter((t=>t.getAttribute("listIndent")===r));let l=null;s.previousSibling.getAttribute("listIndent")+1!==r&&(l=it(s.previousSibling,{sameIndent:!0,direction:"backward",listIndent:r})),t.model.change((t=>{for(const i of o)for(const n of e)if(n.appliesToListItem(i)){const e=null==l?n.defaultValue:l.getAttribute(n.attributeName);t.setAttribute(n.attributeName,e,i)}}))}}(t,i)),this.listenTo(t.commands.get("outdentList"),"_executeCleanup",function(t,e){return(i,n)=>{if(!(n=n.reverse().filter((t=>t.is("element","listItem")))).length)return;const s=n[0].getAttribute("listIndent"),r=n[0].getAttribute("listType");let o=n[0].previousSibling;if(o.is("element","listItem"))for(;o.getAttribute("listIndent")!==s;)o=o.previousSibling;else o=null;o||(o=n[n.length-1].nextSibling),o&&o.is("element","listItem")&&o.getAttribute("listType")===r&&t.model.change((t=>{const i=n.filter((t=>t.getAttribute("listIndent")===s));for(const n of i)for(const i of e)if(i.appliesToListItem(n)){const e=i.attributeName,s=o.getAttribute(e);t.setAttribute(e,s,n)}}))}}(t,i)),this.listenTo(t.commands.get("bulletedList"),"_executeCleanup",de(t)),this.listenTo(t.commands.get("numberedList"),"_executeCleanup",de(t)),e.document.registerPostFixer(function(t,e){return i=>{let n=!1;const s=ue(t.model.document.differ.getChanges()).filter((t=>"todo"!==t.getAttribute("listType")));if(!s.length)return n;let r=s[s.length-1].nextSibling;if((!r||!r.is("element","listItem"))&&(r=s[0].previousSibling,r)){const t=s[0].getAttribute("listIndent");for(;r.is("element","listItem")&&r.getAttribute("listIndent")!==t&&(r=r.previousSibling,r););}for(const t of e){const e=t.attributeName;for(const o of s)if(t.appliesToListItem(o))if(o.hasAttribute(e)){const s=o.previousSibling;ce(s,o,t.attributeName)&&(i.setAttribute(e,s.getAttribute(e),o),n=!0)}else ae(r,o,t)?i.setAttribute(e,r.getAttribute(e),o):i.setAttribute(e,t.defaultValue,o),n=!0;else i.removeAttribute(e,o)}return n}}(t,i)),t.conversion.for("upcast").add((n=i,t=>{t.on("element:li",((t,e,i)=>{const s=e.viewItem.parent;if(!s)return;const r=e.modelRange.start.nodeAfter||e.modelRange.end.nodeBefore;for(const t of n)if(t.appliesToListItem(r)){const e=t.getAttributeOnUpcast(s);i.writer.setAttribute(t.attributeName,e,r)}}),{priority:"low"})})),t.conversion.for("downcast").add(function(t){return i=>{for(const n of t)i.on(`attribute:${n.attributeName}:listItem`,((t,i,s)=>{const r=s.writer,o=i.item,l=it(o.previousSibling,{sameIndent:!0,listIndent:o.getAttribute("listIndent"),direction:"backward"}),a=s.mapper.toViewElement(o);e(o,l)||r.breakContainer(r.createPositionBefore(a)),n.setAttributeOnDowncast(r,i.attributeNewValue,a.parent)}),{priority:"low"})};function e(t,e){return e&&t.getAttribute("listType")===e.getAttribute("listType")&&t.getAttribute("listIndent")===e.getAttribute("listIndent")&&t.getAttribute("listStyle")===e.getAttribute("listStyle")&&t.getAttribute("listReversed")===e.getAttribute("listReversed")&&t.getAttribute("listStart")===e.getAttribute("listStart")}}(i)),this._mergeListAttributesWhileMergingLists(i)}afterInit(){const t=this.editor;t.commands.get("todoList")&&t.model.document.registerPostFixer(function(t){return e=>{const i=ue(t.model.document.differ.getChanges()).filter((t=>"todo"===t.getAttribute("listType")&&(t.hasAttribute("listStyle")||t.hasAttribute("listReversed")||t.hasAttribute("listStart"))));if(!i.length)return!1;for(const t of i)e.removeAttribute("listStyle",t),e.removeAttribute("listReversed",t),e.removeAttribute("listStart",t);return!0}}(t))}_mergeListAttributesWhileMergingLists(t){const e=this.editor.model;let i;this.listenTo(e,"deleteContent",((t,[e])=>{const n=e.getFirstPosition(),s=e.getLastPosition();if(n.parent===s.parent)return;if(!n.parent.is("element","listItem"))return;const r=s.parent.nextSibling;if(!r||!r.is("element","listItem"))return;const o=it(n.parent,{sameIndent:!0,listIndent:r.getAttribute("listIndent")});o&&o.getAttribute("listType")===r.getAttribute("listType")&&(i=o)}),{priority:"high"}),this.listenTo(e,"deleteContent",(()=>{i&&(e.change((e=>{const n=it(i.nextSibling,{sameIndent:!0,listIndent:i.getAttribute("listIndent"),direction:"forward"});if(!n)return void(i=null);const s=[n,...rt(e.createPositionAt(n,0),"forward")];for(const n of s)for(const s of t)if(s.appliesToListItem(n)){const t=s.attributeName,r=i.getAttribute(t);e.setAttribute(t,r,n)}})),i=null)}),{priority:"low"})}}function ae(t,e,i){if(!t)return!1;const n=t.getAttribute(i.attributeName);return!!n&&(n!=i.defaultValue&&t.getAttribute("listType")===e.getAttribute("listType"))}function ce(t,e,i){if(!t||!t.is("element","listItem"))return!1;if(e.getAttribute("listType")!==t.getAttribute("listType"))return!1;const n=t.getAttribute("listIndent");if(n<1||n!==e.getAttribute("listIndent"))return!1;const s=t.getAttribute(i);return!(!s||s===e.getAttribute(i))}function de(t){return(e,i)=>{i=i.filter((t=>t.is("element","listItem"))),t.model.change((t=>{for(const e of i)t.removeAttribute("listStyle",e)}))}}function ue(t){const e=[];for(const i of t){const t=me(i);t&&t.is("element","listItem")&&e.push(t)}return e}function me(t){return"attribute"===t.type?t.range.start.nodeAfter:"insert"===t.type?t.position.nodeAfter:null}class pe extends t.Plugin{static get requires(){return[le,Bt]}static get pluginName(){return"ListProperties"}}const he="todoListChecked";class fe extends t.Command{constructor(t){super(t),this._selectedElements=[],this.on("execute",(()=>{this.refresh()}),{priority:"highest"})}refresh(){this._selectedElements=this._getSelectedItems(),this.value=this._selectedElements.every((t=>!!t.getAttribute("todoListChecked"))),this.isEnabled=!!this._selectedElements.length}_getSelectedItems(){const t=this.editor.model,e=t.schema,i=t.document.selection.getFirstRange(),n=i.start.parent,s=[];e.checkAttribute(n,he)&&s.push(n);for(const t of i.getItems())e.checkAttribute(t,he)&&!s.includes(t)&&s.push(t);return s}execute(t={}){this.editor.model.change((e=>{for(const i of this._selectedElements){(void 0===t.forceValue?!this.value:t.forceValue)?e.setAttribute(he,!0,i):e.removeAttribute(he,i)}}))}}function be(t,e,i){const n=e.modelCursor,s=n.parent,r=e.viewItem;if("checkbox"!=r.getAttribute("type")||"listItem"!=s.name||!n.isAtStart)return;if(!i.consumable.consume(r,{name:!0}))return;const o=i.writer;o.setAttribute("listType","todo",s),e.viewItem.hasAttribute("checked")&&o.setAttribute("todoListChecked",!0,s),e.modelRange=o.createRange(n)}function ge(t){return(e,i)=>{const n=i.modelPosition,s=n.parent;if(!s.is("element","listItem")||"todo"!=s.getAttribute("listType"))return;const r=we(i.mapper.toViewElement(s),t);r&&(i.viewPosition=i.mapper.findPositionIn(r,n.offset))}}function ve(t,e,i,n){return e.createUIElement("label",{class:"todo-list__label",contenteditable:!1},(function(e){const s=(0,r.createElement)(document,"input",{type:"checkbox"});i&&s.setAttribute("checked","checked"),s.addEventListener("change",(()=>n(t)));const o=this.toDomElement(e);return o.appendChild(s),o}))}function we(t,e){const i=e.createRangeIn(t);for(const t of i)if(t.item.is("containerElement","span")&&t.item.hasClass("todo-list__label__description"))return t.item}const ye=(0,r.parseKeystroke)("Ctrl+Enter");class Ae extends t.Plugin{static get pluginName(){return"TodoListEditing"}static get requires(){return[te]}init(){const t=this.editor,{editing:e,data:i,model:n}=t;n.schema.extend("listItem",{allowAttributes:["todoListChecked"]}),n.schema.addAttributeCheck(((t,e)=>{const i=t.last;if("todoListChecked"==e&&"listItem"==i.name&&"todo"!=i.getAttribute("listType"))return!1})),t.commands.add("todoList",new Rt(t,"todo"));const s=new fe(t);var o,l;t.commands.add("checkTodoList",s),t.commands.add("todoListCheck",s),i.downcastDispatcher.on("insert:listItem",function(t){return(e,i,n)=>{const s=n.consumable;if(!s.test(i.item,"insert")||!s.test(i.item,"attribute:listType")||!s.test(i.item,"attribute:listIndent"))return;if("todo"!=i.item.getAttribute("listType"))return;const r=i.item;s.consume(r,"insert"),s.consume(r,"attribute:listType"),s.consume(r,"attribute:listIndent"),s.consume(r,"attribute:todoListChecked");const o=n.writer,l=Q(r,n);o.addClass("todo-list",l.parent);const a=o.createContainerElement("label",{class:"todo-list__label"}),c=o.createEmptyElement("input",{type:"checkbox",disabled:"disabled"}),d=o.createContainerElement("span",{class:"todo-list__label__description"});r.getAttribute("todoListChecked")&&o.setAttribute("checked","checked",c),o.insert(o.createPositionAt(l,0),a),o.insert(o.createPositionAt(a,0),c),o.insert(o.createPositionAfter(c),d),X(r,l,n,t)}}(n),{priority:"high"}),i.upcastDispatcher.on("element:input",be,{priority:"high"}),e.downcastDispatcher.on("insert:listItem",function(t,e){return(i,n,s)=>{const r=s.consumable;if(!r.test(n.item,"insert")||!r.test(n.item,"attribute:listType")||!r.test(n.item,"attribute:listIndent"))return;if("todo"!=n.item.getAttribute("listType"))return;const o=n.item;r.consume(o,"insert"),r.consume(o,"attribute:listType"),r.consume(o,"attribute:listIndent"),r.consume(o,"attribute:todoListChecked");const l=s.writer,a=Q(o,s),c=!!o.getAttribute("todoListChecked"),d=ve(o,l,c,e),u=l.createContainerElement("span",{class:"todo-list__label__description"});l.addClass("todo-list",a.parent),l.insert(l.createPositionAt(a,0),d),l.insert(l.createPositionAfter(d),u),X(o,a,s,t)}}(n,(t=>this._handleCheckmarkChange(t))),{priority:"high"}),e.downcastDispatcher.on("attribute:listType:listItem",(o=t=>this._handleCheckmarkChange(t),l=e.view,(t,e,i)=>{if(!i.consumable.consume(e.item,t.name))return;const n=i.mapper.toViewElement(e.item),s=i.writer,r=function(t,e){const i=e.createRangeIn(t);for(const t of i)if(t.item.is("uiElement","label"))return t.item}(n,l);if("todo"==e.attributeNewValue){const t=!!e.item.getAttribute("todoListChecked"),i=ve(e.item,s,t,o),r=s.createContainerElement("span",{class:"todo-list__label__description"}),l=s.createRangeIn(n),a=st(n),c=et(l.start),d=a?s.createPositionBefore(a):l.end,u=s.createRange(c,d);s.addClass("todo-list",n.parent),s.move(u,s.createPositionAt(r,0)),s.insert(s.createPositionAt(n,0),i),s.insert(s.createPositionAfter(i),r)}else if("todo"==e.attributeOldValue){const t=we(n,l);s.removeClass("todo-list",n.parent),s.remove(r),s.move(s.createRangeIn(t),s.createPositionBefore(t)),s.remove(t)}})),e.downcastDispatcher.on("attribute:todoListChecked:listItem",function(t){return(e,i,n)=>{if("todo"!=i.item.getAttribute("listType"))return;if(!n.consumable.consume(i.item,"attribute:todoListChecked"))return;const{mapper:s,writer:r}=n,o=!!i.item.getAttribute("todoListChecked"),l=s.toViewElement(i.item).getChild(0),a=ve(i.item,r,o,t);r.insert(r.createPositionAfter(l),a),r.remove(l)}}((t=>this._handleCheckmarkChange(t)))),e.mapper.on("modelToViewPosition",ge(e.view)),i.mapper.on("modelToViewPosition",ge(e.view)),this.listenTo(e.view.document,"arrowKey",function(t,e){return(i,n)=>{if("left"!=(0,r.getLocalizedArrowKeyCodeDirection)(n.keyCode,e.contentLanguageDirection))return;const s=t.schema,o=t.document.selection;if(!o.isCollapsed)return;const l=o.getFirstPosition(),a=l.parent;if("listItem"===a.name&&"todo"==a.getAttribute("listType")&&l.isAtStart){const e=s.getNearestSelectionRange(t.createPositionBefore(a),"backward");e&&t.change((t=>t.setSelection(e))),n.preventDefault(),n.stopPropagation(),i.stop()}}}(n,t.locale),{context:"li"}),this.listenTo(e.view.document,"keydown",((e,i)=>{(0,r.getCode)(i)===ye&&(t.execute("checkTodoList"),e.stop())}),{priority:"high"});const a=new Set;this.listenTo(n,"applyOperation",((t,e)=>{const i=e[0];if("rename"==i.type&&"listItem"==i.oldName){const t=i.position.nodeAfter;t.hasAttribute("todoListChecked")&&a.add(t)}else if("changeAttribute"==i.type&&"listType"==i.key&&"todo"===i.oldValue)for(const t of i.range.getItems())t.hasAttribute("todoListChecked")&&"todo"!==t.getAttribute("listType")&&a.add(t)})),n.document.registerPostFixer((t=>{let e=!1;for(const i of a)t.removeAttribute("todoListChecked",i),e=!0;return a.clear(),e}))}_handleCheckmarkChange(t){const e=this.editor,i=e.model,n=Array.from(i.document.selection.getRanges());i.change((i=>{i.setSelection(t,"end"),e.execute("checkTodoList"),i.setSelection(n)}))}}class Ie extends t.Plugin{static get pluginName(){return"TodoListUI"}init(){const t=this.editor.t;nt(this.editor,"todoList",t("To-do List"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m2.315 14.705 2.224-2.24a.689.689 0 0 1 .963 0 .664.664 0 0 1 0 .949L2.865 16.07a.682.682 0 0 1-.112.089.647.647 0 0 1-.852-.051L.688 14.886a.635.635 0 0 1 0-.903.647.647 0 0 1 .91 0l.717.722zm5.185.045a.75.75 0 0 1 .75-.75h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75zM2.329 5.745l2.21-2.226a.689.689 0 0 1 .963 0 .664.664 0 0 1 0 .95L2.865 7.125a.685.685 0 0 1-.496.196.644.644 0 0 1-.468-.187L.688 5.912a.635.635 0 0 1 0-.903.647.647 0 0 1 .91 0l.73.736zM7.5 5.75A.75.75 0 0 1 8.25 5h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75z"/></svg>')}}var ke=i(250),xe={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(ke.Z,xe);ke.Z.locals;class Te extends t.Plugin{static get requires(){return[Ae,Ie]}static get pluginName(){return"TodoList"}}})(),(window.CKEditor5=window.CKEditor5||{}).list=n})(); \ No newline at end of file + */(()=>{var t={389:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var s=i(609),n=i.n(s)()((function(t){return t[1]}));n.push([t.id,".ck.ck-collapsible.ck-collapsible_collapsed>.ck-collapsible__children{display:none}:root{--ck-collapsible-arrow-size:calc(var(--ck-icon-size)*0.5)}.ck.ck-collapsible>.ck.ck-button{border-radius:0;font-weight:700;padding:var(--ck-spacing-medium) var(--ck-spacing-large);width:100%}.ck.ck-collapsible>.ck.ck-button:focus{background:transparent}.ck.ck-collapsible>.ck.ck-button:active,.ck.ck-collapsible>.ck.ck-button:hover:not(:focus),.ck.ck-collapsible>.ck.ck-button:not(:focus){background:transparent;border-color:transparent;box-shadow:none}.ck.ck-collapsible>.ck.ck-button>.ck-icon{margin-right:var(--ck-spacing-medium);width:var(--ck-collapsible-arrow-size)}.ck.ck-collapsible>.ck-collapsible__children{padding:0 var(--ck-spacing-large) var(--ck-spacing-large)}.ck.ck-collapsible.ck-collapsible_collapsed>.ck.ck-button .ck-icon{transform:rotate(-90deg)}",""]);const r=n},78:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var s=i(609),n=i.n(s)()((function(t){return t[1]}));n.push([t.id,".ck-editor__editable .ck-list-bogus-paragraph{display:block}",""]);const r=n},543:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var s=i(609),n=i.n(s)()((function(t){return t[1]}));n.push([t.id,".ck.ck-list-properties.ck-list-properties_without-styles{padding:var(--ck-spacing-large)}.ck.ck-list-properties.ck-list-properties_without-styles>*{min-width:14em}.ck.ck-list-properties.ck-list-properties_without-styles>*+*{margin-top:var(--ck-spacing-standard)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-list-styles-list{grid-template-columns:repeat(4,auto)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible{border-top:1px solid var(--ck-color-base-border)}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible>.ck-collapsible__children>*{width:100%}.ck.ck-list-properties.ck-list-properties_with-numbered-properties>.ck-collapsible>.ck-collapsible__children>*+*{margin-top:var(--ck-spacing-standard)}.ck.ck-list-properties .ck.ck-numbered-list-properties__start-index .ck-input{min-width:auto;width:100%}.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order{background:transparent;margin-bottom:calc(var(--ck-spacing-tiny)*-1);padding-left:0;padding-right:0}.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:active,.ck.ck-list-properties .ck.ck-numbered-list-properties__reversed-order:hover{background:none;border-color:transparent;box-shadow:none}",""]);const r=n},657:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var s=i(609),n=i.n(s)()((function(t){return t[1]}));n.push([t.id,".ck.ck-list-styles-list{display:grid}:root{--ck-list-style-button-size:44px}.ck.ck-list-styles-list{column-gap:var(--ck-spacing-medium);grid-template-columns:repeat(3,auto);padding:var(--ck-spacing-large);row-gap:var(--ck-spacing-medium)}.ck.ck-list-styles-list .ck-button{box-sizing:content-box;margin:0;padding:0}.ck.ck-list-styles-list .ck-button,.ck.ck-list-styles-list .ck-button .ck-icon{height:var(--ck-list-style-button-size);width:var(--ck-list-style-button-size)}",""]);const r=n},250:(t,e,i)=>{"use strict";i.d(e,{Z:()=>r});var s=i(609),n=i.n(s)()((function(t){return t[1]}));n.push([t.id,':root{--ck-todo-list-checkmark-size:16px}.ck-content .todo-list{list-style:none}.ck-content .todo-list li{margin-bottom:5px}.ck-content .todo-list li .todo-list{margin-top:5px}.ck-content .todo-list .todo-list__label>input{-webkit-appearance:none;border:0;display:inline-block;height:var(--ck-todo-list-checkmark-size);left:-25px;margin-left:0;margin-right:-15px;position:relative;right:0;vertical-align:middle;width:var(--ck-todo-list-checkmark-size)}.ck-content .todo-list .todo-list__label>input:before{border:1px solid #333;border-radius:2px;box-sizing:border-box;content:"";display:block;height:100%;position:absolute;transition:box-shadow .25s ease-in-out,background .25s ease-in-out,border .25s ease-in-out;width:100%}.ck-content .todo-list .todo-list__label>input:after{border-color:transparent;border-style:solid;border-width:0 calc(var(--ck-todo-list-checkmark-size)/8) calc(var(--ck-todo-list-checkmark-size)/8) 0;box-sizing:content-box;content:"";display:block;height:calc(var(--ck-todo-list-checkmark-size)/2.6);left:calc(var(--ck-todo-list-checkmark-size)/3);pointer-events:none;position:absolute;top:calc(var(--ck-todo-list-checkmark-size)/5.3);transform:rotate(45deg);width:calc(var(--ck-todo-list-checkmark-size)/5.3)}.ck-content .todo-list .todo-list__label>input[checked]:before{background:#26ab33;border-color:#26ab33}.ck-content .todo-list .todo-list__label>input[checked]:after{border-color:#fff}.ck-content .todo-list .todo-list__label .todo-list__label__description{vertical-align:middle}[dir=rtl] .todo-list .todo-list__label>input{left:0;margin-left:-15px;margin-right:0;right:-25px}.ck-editor__editable .todo-list .todo-list__label>input{cursor:pointer}.ck-editor__editable .todo-list .todo-list__label>input:hover:before{box-shadow:0 0 0 5px rgba(0,0,0,.1)}',""]);const r=n},609:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var i=t(e);return e[2]?"@media ".concat(e[2]," {").concat(i,"}"):i})).join("")},e.i=function(t,i,s){"string"==typeof t&&(t=[[null,t,""]]);var n={};if(s)for(var r=0;r<this.length;r++){var o=this[r][0];null!=o&&(n[o]=!0)}for(var l=0;l<t.length;l++){var a=[].concat(t[l]);s&&n[a[0]]||(i&&(a[2]?a[2]="".concat(i," and ").concat(a[2]):a[2]=i),e.push(a))}},e}},62:(t,e,i)=>{"use strict";var s,n=function(){return void 0===s&&(s=Boolean(window&&document&&document.all&&!window.atob)),s},r=function(){var t={};return function(e){if(void 0===t[e]){var i=document.querySelector(e);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(t){i=null}t[e]=i}return t[e]}}(),o=[];function l(t){for(var e=-1,i=0;i<o.length;i++)if(o[i].identifier===t){e=i;break}return e}function a(t,e){for(var i={},s=[],n=0;n<t.length;n++){var r=t[n],a=e.base?r[0]+e.base:r[0],c=i[a]||0,d="".concat(a," ").concat(c);i[a]=c+1;var u=l(d),m={css:r[1],media:r[2],sourceMap:r[3]};-1!==u?(o[u].references++,o[u].updater(m)):o.push({identifier:d,updater:b(m,e),references:1}),s.push(d)}return s}function c(t){var e=document.createElement("style"),s=t.attributes||{};if(void 0===s.nonce){var n=i.nc;n&&(s.nonce=n)}if(Object.keys(s).forEach((function(t){e.setAttribute(t,s[t])})),"function"==typeof t.insert)t.insert(e);else{var o=r(t.insert||"head");if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(e)}return e}var d,u=(d=[],function(t,e){return d[t]=e,d.filter(Boolean).join("\n")});function m(t,e,i,s){var n=i?"":s.media?"@media ".concat(s.media," {").concat(s.css,"}"):s.css;if(t.styleSheet)t.styleSheet.cssText=u(e,n);else{var r=document.createTextNode(n),o=t.childNodes;o[e]&&t.removeChild(o[e]),o.length?t.insertBefore(r,o[e]):t.appendChild(r)}}function p(t,e,i){var s=i.css,n=i.media,r=i.sourceMap;if(n?t.setAttribute("media",n):t.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(s+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),t.styleSheet)t.styleSheet.cssText=s;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(s))}}var h=null,f=0;function b(t,e){var i,s,n;if(e.singleton){var r=f++;i=h||(h=c(e)),s=m.bind(null,i,r,!1),n=m.bind(null,i,r,!0)}else i=c(e),s=p.bind(null,i,e),n=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(i)};return s(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;s(t=e)}else n()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=n());var i=a(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var s=0;s<i.length;s++){var n=l(i[s]);o[n].references--}for(var r=a(t,e),c=0;c<i.length;c++){var d=l(i[c]);0===o[d].references&&(o[d].updater(),o.splice(d,1))}i=r}}}},704:(t,e,i)=>{t.exports=i(79)("./src/core.js")},492:(t,e,i)=>{t.exports=i(79)("./src/engine.js")},331:(t,e,i)=>{t.exports=i(79)("./src/enter.js")},181:(t,e,i)=>{t.exports=i(79)("./src/typing.js")},273:(t,e,i)=>{t.exports=i(79)("./src/ui.js")},209:(t,e,i)=>{t.exports=i(79)("./src/utils.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function i(s){var n=e[s];if(void 0!==n)return n.exports;var r=e[s]={id:s,exports:{}};return t[s](r,r.exports,i),r.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var s in e)i.o(e,s)&&!i.o(t,s)&&Object.defineProperty(t,s,{enumerable:!0,get:e[s]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},i.nc=void 0;var s={};(()=>{"use strict";i.r(s),i.d(s,{DocumentList:()=>pt,DocumentListEditing:()=>G,DocumentListProperties:()=>Mt,DocumentListPropertiesEditing:()=>Tt,List:()=>ie,ListEditing:()=>te,ListProperties:()=>pe,ListPropertiesEditing:()=>le,ListPropertiesUI:()=>Bt,ListUI:()=>mt,TodoList:()=>Te,TodoListEditing:()=>Ae,TodoListUI:()=>Ie});var t=i(704),e=i(331),n=i(181),r=i(209);class o{constructor(t,e){this._startElement=t,this._referenceIndent=t.getAttribute("listIndent"),this._isForward="forward"==e.direction,this._includeSelf=!!e.includeSelf,this._sameAttributes=(0,r.toArray)(e.sameAttributes||[]),this._sameIndent=!!e.sameIndent,this._lowerIndent=!!e.lowerIndent,this._higherIndent=!!e.higherIndent}static first(t,e){const i=new this(t,e)[Symbol.iterator]();return(0,r.first)(i)}*[Symbol.iterator](){const t=[];for(const{node:e}of l(this._getStartNode(),this._isForward?"forward":"backward")){const i=e.getAttribute("listIndent");if(i<this._referenceIndent){if(!this._lowerIndent)break;this._referenceIndent=i}else if(i>this._referenceIndent){if(!this._higherIndent)continue;if(!this._isForward){t.push(e);continue}}else{if(!this._sameIndent){if(this._higherIndent){t.length&&(yield*t,t.length=0);break}continue}if(this._sameAttributes.some((t=>e.getAttribute(t)!==this._startElement.getAttribute(t))))break}t.length&&(yield*t,t.length=0),yield e}}_getStartNode(){return this._includeSelf?this._startElement:this._isForward?this._startElement.nextSibling:this._startElement.previousSibling}}function*l(t,e="forward"){const i="forward"==e;let s=null;for(;d(t);)yield{node:t,previous:s},s=t,t=i?t.nextSibling:t.previousSibling}class a{constructor(t){this._listHead=t}[Symbol.iterator](){return l(this._listHead,"forward")}}class c{static next(){return(0,r.uid)()}}function d(t){return!!t&&t.is("element")&&t.hasAttribute("listItemId")}function u(t,e={}){return[...m(t,{...e,direction:"backward"}),...m(t,{...e,direction:"forward"})]}function m(t,e={}){const i="forward"==e.direction,s=Array.from(new o(t,{...e,includeSelf:i,sameIndent:!0,sameAttributes:"listItemId"}));return i?s:s.reverse()}function p(t){const e=new o(t,{sameIndent:!0,sameAttributes:"listType"}),i=new o(t,{sameIndent:!0,sameAttributes:"listType",includeSelf:!0,direction:"forward"});return[...Array.from(e).reverse(),...i]}function h(t){return!o.first(t,{sameIndent:!0,sameAttributes:"listItemId"})}function f(t){return!o.first(t,{direction:"forward",sameIndent:!0,sameAttributes:"listItemId"})}function b(t,e={}){t=(0,r.toArray)(t);const i=!1!==e.withNested,s=new Set;for(const e of t)for(const t of u(e,{higherIndent:i}))s.add(t);return k(s)}function g(t){t=(0,r.toArray)(t);const e=new Set;for(const i of t)for(const t of p(i))e.add(t);return k(e)}function v(t,e){const i=m(t,{direction:"forward"}),s=c.next();for(const t of i)e.setAttribute("listItemId",s,t);return i}function y(t,e,i){const s={};for(const[t,i]of e.getAttributes())t.startsWith("list")&&(s[t]=i);const n=m(t,{direction:"forward"});for(const t of n)i.setAttributes(s,t);return n}function w(t,e,{expand:i,indentBy:s=1}={}){t=(0,r.toArray)(t);const n=i?b(t):t;for(const t of n){const i=t.getAttribute("listIndent")+s;i<0?A(t,e):e.setAttribute("listIndent",i,t)}return n}function A(t,e){t=(0,r.toArray)(t);for(const i of t)for(const t of i.getAttributeKeys())t.startsWith("list")&&e.removeAttribute(t,i);return t}function I(t){if(!t.length)return!1;const e=t[0].getAttribute("listItemId");return!!e&&!t.some((t=>t.getAttribute("listItemId")!=e))}function k(t){return Array.from(t).filter((t=>"$graveyard"!==t.root.rootName)).sort(((t,e)=>t.index-e.index))}function x(t){const e=t.document.selection.getSelectedElement();return e&&t.schema.isObject(e)&&t.schema.isBlock(e)?e:null}function T(t,e,i){return m(e,{direction:"forward"}).pop().index>t.index?y(t,e,i):[]}class S extends t.Command{constructor(t,e){super(t),this._direction=e}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=_(t.document.selection);t.change((t=>{const i=[];I(e)&&!h(e[0])?("forward"==this._direction&&i.push(...w(e,t)),i.push(...v(e[0],t))):"forward"==this._direction?i.push(...w(e,t,{expand:!0})):i.push(...function(t,e){const i=b(t=(0,r.toArray)(t)),s=new Set,n=Math.min(...i.map((t=>t.getAttribute("listIndent")))),l=new Map;for(const t of i)l.set(t,o.first(t,{lowerIndent:!0}));for(const t of i){if(s.has(t))continue;s.add(t);const i=t.getAttribute("listIndent")-1;if(i<0)A(t,e);else{if(t.getAttribute("listIndent")==n){const i=T(t,l.get(t),e);for(const t of i)s.add(t);if(i.length)continue}e.setAttribute("listIndent",i,t)}}return k(s)}(e,t));for(const e of i){if(!e.hasAttribute("listType"))continue;const i=o.first(e,{sameIndent:!0});i&&t.setAttribute("listType",i.getAttribute("listType"),e)}this._fireAfterExecute(i)}))}_fireAfterExecute(t){this.fire("afterExecute",k(new Set(t)))}_checkEnabled(){let t=_(this.editor.model.document.selection),e=t[0];if(!e)return!1;if("backward"==this._direction)return!0;if(I(t)&&!h(t[0]))return!0;t=b(t),e=t[0];const i=o.first(e,{sameIndent:!0});return!!i&&i.getAttribute("listType")==e.getAttribute("listType")}}function _(t){const e=Array.from(t.getSelectedBlocks()),i=e.findIndex((t=>!d(t)));return-1!=i&&(e.length=i),e}class C extends t.Command{constructor(t,e){super(t),this.type=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,i=e.document,s=x(e),n=Array.from(i.selection.getSelectedBlocks()).filter((t=>e.schema.checkAttribute(t,"listType"))),r=void 0!==t.forceValue?!t.forceValue:this.value;e.change((t=>{if(r){const e=n[n.length-1],i=m(e,{direction:"forward"}),s=[];i.length>1&&s.push(...v(i[1],t)),s.push(...A(n,t)),s.push(...function(t,e){const i=[];let s=Number.POSITIVE_INFINITY;for(const{node:n}of l(t.nextSibling,"forward")){const t=n.getAttribute("listIndent");if(0==t)break;t<s&&(s=t);const r=t-s;e.setAttribute("listIndent",r,n),i.push(n)}return i}(e,t)),this._fireAfterExecute(s)}else if((s||i.selection.isCollapsed)&&d(n[0])){const e=p(s||n[0]);for(const i of e)t.setAttribute("listType",this.type,i);this._fireAfterExecute(e)}else{const e=[];for(const i of n)if(i.hasAttribute("listType"))for(const s of b(i,{withNested:!1}))s.getAttribute("listType")!=this.type&&(t.setAttribute("listType",this.type,s),e.push(s));else t.setAttributes({listIndent:0,listItemId:c.next(),listType:this.type},i),e.push(i);this._fireAfterExecute(e)}}))}_fireAfterExecute(t){this.fire("afterExecute",k(new Set(t)))}_getValue(){const t=this.editor.model.document.selection,e=Array.from(t.getSelectedBlocks());if(!e.length)return!1;for(const t of e)if(t.getAttribute("listType")!=this.type)return!1;return!0}_checkEnabled(){const t=this.editor.model.document.selection,e=this.editor.model.schema,i=Array.from(t.getSelectedBlocks());if(!i.length)return!1;if(this.value)return!0;for(const t of i)if(e.checkAttribute(t,"listType"))return!0;return!1}}class V extends t.Command{constructor(t,e){super(t),this._direction=e}refresh(){this.isEnabled=this._checkEnabled()}execute({shouldMergeOnBlocksContentLevel:t=!1}={}){const e=this.editor.model,i=e.document.selection,s=[];e.change((n=>{const{firstElement:r,lastElement:l}=this._getMergeSubjectElements(i,t),a=r.getAttribute("listIndent")||0,c=l.getAttribute("listIndent"),d=l.getAttribute("listItemId");if(a!=c){const t=(u=l,Array.from(new o(u,{direction:"forward",higherIndent:!0})));s.push(...w([l,...t],n,{indentBy:a-c,expand:a<c}))}var u;if(t){let t=i;i.isCollapsed&&(t=n.createSelection(n.createRange(n.createPositionAt(r,"end"),n.createPositionAt(l,0)))),e.deleteContent(t,{doNotResetEntireContent:i.isCollapsed});const o=t.getLastPosition().parent,a=o.nextSibling;s.push(o),a&&a!==l&&a.getAttribute("listItemId")==d&&s.push(...y(a,o,n))}else s.push(...y(l,r,n));this._fireAfterExecute(s)}))}_fireAfterExecute(t){this.fire("afterExecute",k(new Set(t)))}_checkEnabled(){const t=this.editor.model,e=t.document.selection,i=x(t);if(e.isCollapsed||i){const t=i||e.getFirstPosition().parent;if(!d(t))return!1;const s="backward"==this._direction?t.previousSibling:t.nextSibling;if(!s)return!1;if(I([t,s]))return!1}else{const t=e.getLastPosition(),i=e.getFirstPosition();if(t.parent===i.parent)return!1;if(!d(t.parent))return!1}return!0}_getMergeSubjectElements(t,e){const i=x(this.editor.model);let s,n;if(t.isCollapsed||i){const r=i||t.getFirstPosition().parent,l=h(r);"backward"==this._direction?(n=r,s=l&&!e?o.first(r,{sameIndent:!0,lowerIndent:!0}):r.previousSibling):(s=r,n=r.nextSibling)}else s=t.getFirstPosition().parent,n=t.getLastPosition().parent;return{firstElement:s,lastElement:n}}}class L extends t.Command{constructor(t,e){super(t),this._direction=e}refresh(){this.isEnabled=this._checkEnabled()}execute(){this.editor.model.change((t=>{const e=v(this._getStartBlock(),t);this._fireAfterExecute(e)}))}_fireAfterExecute(t){this.fire("afterExecute",k(new Set(t)))}_checkEnabled(){const t=this.editor.model.document.selection,e=this._getStartBlock();return t.isCollapsed&&d(e)&&!h(e)}_getStartBlock(){const t=this.editor.model.document.selection.getFirstPosition().parent;return"before"==this._direction?t:t.nextSibling}}function E(t){return t.is("element","ol")||t.is("element","ul")}function P(t){return t.is("element","li")}function z(t){let e=0,i=t.parent;for(;i;){if(P(i))e++;else{const t=i.previousSibling;t&&P(t)&&e++}i=i.parent}return e}function B(t,e,i,s=R(i,e)){return t.createAttributeElement(M(i),null,{priority:2*e/100-100,id:s})}function N(t,e,i){return t.createAttributeElement("li",null,{priority:(2*e+1)/100-100,id:i})}function M(t){return"numbered"==t?"ol":"ul"}function R(t,e){return`list-${t}-${e}`}function O(t,e){const i=t.nodeBefore;if(d(i)){let t=i;for({node:t}of l(t,"backward"))if(e.has(t))return;e.set(i,t)}else{const i=t.nodeAfter;d(i)&&e.set(i,i)}}var H=i(492);function F(){return(t,e,i)=>{if(!i.consumable.test(e.viewItem,{name:!0}))return;const s=new H.UpcastWriter(e.viewItem.document);for(const t of Array.from(e.viewItem.getChildren()))P(t)||E(t)||s.remove(t)}}function D(t,e,i){const s=function(t){return(e,i)=>{const s=[];for(const i of t)e.hasAttribute(i)&&s.push(`attribute:${i}`);return!!s.every((t=>!1!==i.test(e,t)))&&(s.forEach((t=>i.consume(e,t))),!0)}}(t);return(n,r,l)=>{const{writer:a,mapper:c,consumable:d}=l,u=r.item;if(!t.includes(r.attributeKey))return;if(!s(u,d))return;const m=function(t,e,i){const s=i.createRangeOn(t);return e.toViewRange(s).getTrimmed().getContainedElement()}(u,c,i);!function(t,e){let i=t.parent;for(;i.is("attributeElement")&&["ul","ol","li"].includes(i.name);){const s=i.parent;e.unwrap(e.createRangeOn(t),i),i=s}}(m,a),function(t,e,i,s){if(!t.hasAttribute("listIndent"))return;const n=t.getAttribute("listIndent");let r=t;for(let t=n;t>=0;t--){const n=N(s,t,r.getAttribute("listItemId")),l=B(s,t,r.getAttribute("listType"));for(const t of i)r.hasAttribute(t.attributeName)&&t.setAttributeOnDowncast(s,r.getAttribute(t.attributeName),"list"==t.scope?l:n);if(e=s.wrap(e,n),e=s.wrap(e,l),0==t)break;if(r=o.first(r,{lowerIndent:!0}),!r)break}}(u,a.createRangeOn(m),e,a)}}function j(t,{dataPipeline:e}={}){return(i,{writer:s})=>{if(!U(i,t))return;const n=s.createContainerElement("span",{class:"ck-list-bogus-paragraph"});return e&&s.setCustomProperty("dataPipeline:transparentRendering",!0,n),n}}function U(t,e,i=u(t)){if(!d(t))return!1;for(const i of t.getAttributeKeys())if(!i.startsWith("selection:")&&!e.includes(i))return!1;return i.length<2}var q=i(62),K=i.n(q),Z=i(78),$={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(Z.Z,$);Z.Z.locals;const W=["listType","listIndent","listItemId"];class G extends t.Plugin{static get pluginName(){return"DocumentListEditing"}static get requires(){return[e.Enter,n.Delete]}constructor(t){super(t),this._downcastStrategies=[]}init(){const t=this.editor,e=t.model;if(t.plugins.has("ListEditing"))throw new r.CKEditorError("document-list-feature-conflict",this,{conflictPlugin:"ListEditing"});e.schema.extend("$container",{allowAttributes:W}),e.schema.extend("$block",{allowAttributes:W}),e.schema.extend("$blockObject",{allowAttributes:W});for(const t of W)e.schema.setAttributeProperties(t,{copyOnReplace:!0});t.commands.add("numberedList",new C(t,"numbered")),t.commands.add("bulletedList",new C(t,"bulleted")),t.commands.add("indentList",new S(t,"forward")),t.commands.add("outdentList",new S(t,"backward")),t.commands.add("mergeListItemBackward",new V(t,"backward")),t.commands.add("mergeListItemForward",new V(t,"forward")),t.commands.add("splitListItemBefore",new L(t,"before")),t.commands.add("splitListItemAfter",new L(t,"after")),this._setupDeleteIntegration(),this._setupEnterIntegration(),this._setupTabIntegration(),this._setupClipboardIntegration()}afterInit(){const t=this.editor.commands,e=t.get("indent"),i=t.get("outdent");e&&e.registerChildCommand(t.get("indentList"),{priority:"high"}),i&&i.registerChildCommand(t.get("outdentList"),{priority:"lowest"}),this._setupModelPostFixing(),this._setupConversion()}registerDowncastStrategy(t){this._downcastStrategies.push(t)}_getListAttributeNames(){return[...W,...this._downcastStrategies.map((t=>t.attributeName))]}_setupDeleteIntegration(){const t=this.editor,e=t.commands.get("mergeListItemBackward"),i=t.commands.get("mergeListItemForward");this.listenTo(t.editing.view.document,"delete",((s,n)=>{const r=t.model.document.selection;x(t.model)||t.model.change((()=>{const l=r.getFirstPosition();if(r.isCollapsed&&"backward"==n.direction){if(!l.isAtStart)return;const i=l.parent;if(!d(i))return;if(o.first(i,{sameAttributes:"listType",sameIndent:!0})||0!==i.getAttribute("listIndent")){if(!e.isEnabled)return;e.execute({shouldMergeOnBlocksContentLevel:Y(t.model,"backward")})}else f(i)||t.execute("splitListItemAfter"),t.execute("outdentList");n.preventDefault(),s.stop()}else{if(r.isCollapsed&&!r.getLastPosition().isAtEnd)return;if(!i.isEnabled)return;i.execute({shouldMergeOnBlocksContentLevel:Y(t.model,"forward")}),n.preventDefault(),s.stop()}}))}),{context:"li"})}_setupEnterIntegration(){const t=this.editor,e=t.model,i=t.commands,s=i.get("enter");this.listenTo(t.editing.view.document,"enter",((i,s)=>{const n=e.document,r=n.selection.getFirstPosition().parent;if(n.selection.isCollapsed&&d(r)&&r.isEmpty&&!s.isSoft){const e=h(r),n=f(r);e&&n?(t.execute("outdentList"),s.preventDefault(),i.stop()):e&&!n?(t.execute("splitListItemAfter"),s.preventDefault(),i.stop()):n&&(t.execute("splitListItemBefore"),s.preventDefault(),i.stop())}}),{context:"li"}),this.listenTo(s,"afterExecute",(()=>{const e=i.get("splitListItemBefore");if(e.refresh(),!e.isEnabled)return;2===u(t.model.document.selection.getLastPosition().parent).length&&e.execute()}))}_setupTabIntegration(){const t=this.editor;this.listenTo(t.editing.view.document,"tab",((e,i)=>{const s=i.shiftKey?"outdentList":"indentList";this.editor.commands.get(s).isEnabled&&(t.execute(s),i.stopPropagation(),i.preventDefault(),e.stop())}),{context:"li"})}_setupConversion(){const t=this.editor,e=t.model,i=this._getListAttributeNames();t.conversion.for("upcast").elementToElement({view:"li",model:"paragraph"}).add((t=>{t.on("element:li",((t,e,i)=>{const{writer:s,schema:n}=i;if(!e.modelRange)return;const r=Array.from(e.modelRange.getItems({shallow:!0})).filter((t=>n.checkAttribute(t,"listItemId")));if(!r.length)return;const o={listItemId:c.next(),listIndent:z(e.viewItem),listType:e.viewItem.parent&&"ol"==e.viewItem.parent.name?"numbered":"bulleted"};for(const t of r)d(t)||s.setAttributes(o,t);r.length>1&&r[1].getAttribute("listItemId")!=o.listItemId&&i.keepEmptyElement(r[0])})),t.on("element:ul",F(),{priority:"high"}),t.on("element:ol",F(),{priority:"high"})})),t.conversion.for("editingDowncast").elementToElement({model:"paragraph",view:j(i),converterPriority:"high"}),t.conversion.for("dataDowncast").elementToElement({model:"paragraph",view:j(i,{dataPipeline:!0}),converterPriority:"high"}),t.conversion.for("downcast").add((t=>{t.on("attribute",D(i,this._downcastStrategies,e))})),this.listenTo(e.document,"change:data",function(t,e,i,s){return()=>{const s=t.document.differ.getChanges(),o=[],l=new Map,a=new Set;for(const t of s)if("insert"==t.type&&"$text"!=t.name)O(t.position,l),t.attributes.has("listItemId")?a.add(t.position.nodeAfter):O(t.position.getShiftedBy(t.length),l);else if("remove"==t.type&&t.attributes.has("listItemId"))O(t.position,l);else if("attribute"==t.type){const e=t.range.start.nodeAfter;i.includes(t.attributeKey)?(O(t.range.start,l),null===t.attributeNewValue?(O(t.range.start.getShiftedBy(1),l),r(e)&&o.push(e)):a.add(e)):d(e)&&r(e)&&o.push(e)}for(const t of l.values())o.push(...n(t,a));for(const t of new Set(o))e.reconvertItem(t)};function n(t,e){const s=[],n=new Set,a=[];for(const{node:c,previous:d}of l(t,"forward")){if(n.has(c))continue;const t=c.getAttribute("listIndent");d&&t<d.getAttribute("listIndent")&&(a.length=t+1),a[t]=Object.fromEntries(Array.from(c.getAttributes()).filter((([t])=>i.includes(t))));const l=m(c,{direction:"forward"});for(const t of l)n.add(t),(r(t,l)||o(t,a,e))&&s.push(t)}return s}function r(t,s){if(!t.is("element","paragraph"))return!1;const n=e.mapper.toViewElement(t);if(!n)return!1;const r=U(t,i,s);return!(!r||!n.is("element","p"))||!(r||!n.is("element","span"))}function o(t,i,n){if(n.has(t))return!1;const r=e.mapper.toViewElement(t);let o=i.length-1;for(let t=r.parent;!t.is("editableElement");t=t.parent){const e=P(t),n=E(t);if(!n&&!e)continue;const r="checkAttributes:"+(e?"item":"list");if(s.fire(r,{viewElement:t,modelAttributes:i[o]}))break;if(n&&(o--,o<0))return!1}return!0}}(e,t.editing,i,this)),this.on("checkAttributes:item",((t,{viewElement:e,modelAttributes:i})=>{e.id!=i.listItemId&&(t.return=!0,t.stop())})),this.on("checkAttributes:list",((t,{viewElement:e,modelAttributes:i})=>{e.name==M(i.listType)&&e.id==R(i.listType,i.listIndent)||(t.return=!0,t.stop())}))}_setupModelPostFixing(){const t=this.editor.model,e=this._getListAttributeNames();t.document.registerPostFixer((i=>function(t,e,i,s){const n=t.document.differ.getChanges(),r=new Map;let o=!1;for(const s of n)if("insert"==s.type&&"$text"!=s.name){const n=s.position.nodeAfter;if(!t.schema.checkAttribute(n,"listItemId"))for(const t of Array.from(n.getAttributeKeys()))i.includes(t)&&(e.removeAttribute(t,n),o=!0);O(s.position,r),s.attributes.has("listItemId")||O(s.position.getShiftedBy(s.length),r);for(const{item:e,previousPosition:i}of t.createRangeIn(n))d(e)&&O(i,r)}else"remove"==s.type?O(s.position,r):"attribute"==s.type&&i.includes(s.attributeKey)&&(O(s.range.start,r),null===s.attributeNewValue&&O(s.range.start.getShiftedBy(1),r));const l=new Set;for(const t of r.values())o=s.fire("postFixer",{listNodes:new a(t),listHead:t,writer:e,seenIds:l})||o;return o}(t,i,e,this))),this.on("postFixer",((t,{listNodes:e,writer:i})=>{t.return=function(t,e){let i=0,s=-1,n=null,r=!1;for(const{node:o}of t){const t=o.getAttribute("listIndent");if(t>i){let l;null===n?(n=t-i,l=i):(n>t&&(n=t),l=t-n),l>s+1&&(l=s+1),e.setAttribute("listIndent",l,o),r=!0,s=l}else n=null,i=t+1,s=t}return r}(e,i)||t.return}),{priority:"high"}),this.on("postFixer",((t,{listNodes:e,writer:i,seenIds:s})=>{t.return=function(t,e,i){const s=new Set;let n=!1;for(const{node:r}of t){if(s.has(r))continue;let t=r.getAttribute("listType"),o=r.getAttribute("listItemId");e.has(o)&&(o=c.next()),e.add(o);for(const e of m(r,{direction:"forward"}))s.add(e),e.getAttribute("listType")!=t&&(o=c.next(),t=e.getAttribute("listType")),e.getAttribute("listItemId")!=o&&(i.setAttribute("listItemId",o,e),n=!0)}return n}(e,s,i)||t.return}),{priority:"high"})}_setupClipboardIntegration(){const t=this.editor.model;this.listenTo(t,"insertContent",function(t){return(e,[i,s])=>{const n=i.is("documentFragment")?i.getChild(0):i;if(!d(n))return;let r;r=s?t.createSelection(s):t.document.selection;const o=r.getFirstPosition();let a=null;if(d(o.parent)?a=o.parent:d(o.nodeBefore)&&(a=o.nodeBefore),!a)return;const c=a.getAttribute("listIndent")-n.getAttribute("listIndent");c<=0||t.change((t=>{for(const{node:e}of l(n,"forward"))t.setAttribute("listIndent",e.getAttribute("listIndent")+c,e)}))}}(t),{priority:"high"}),this.listenTo(t,"getSelectedContent",((e,[i])=>{I(Array.from(i.getSelectedBlocks()))&&t.change((t=>A(Array.from(e.return.getChildren()),t)))}))}}function Y(t,e){const i=t.document.selection;if(!i.isCollapsed)return!x(t);if("forward"===e)return!0;const s=i.getFirstPosition().parent,n=s.previousSibling;return!t.schema.isObject(n)&&(!!n.isEmpty||I([s,n]))}var J=i(273);function Q(t,e){const i=e.mapper,s=e.writer,n="numbered"==t.getAttribute("listType")?"ol":"ul",r=function(t){const e=t.createContainerElement("li");return e.getFillerOffset=ct,e}(s),o=s.createContainerElement(n,null);return s.insert(s.createPositionAt(o,0),r),i.bindElements(t,r),r}function X(t,e,i,s){const n=e.parent,r=i.mapper,o=i.writer;let l=r.toViewPosition(s.createPositionBefore(t));const a=it(t.previousSibling,{sameIndent:!0,smallerIndent:!0,listIndent:t.getAttribute("listIndent")}),c=t.previousSibling;if(a&&a.getAttribute("listIndent")==t.getAttribute("listIndent")){const t=r.toViewElement(a);l=o.breakContainer(o.createPositionAfter(t))}else if(c&&"listItem"==c.name){l=r.toViewPosition(s.createPositionAt(c,"end"));const t=r.findMappedViewAncestor(l),e=nt(t);l=e?o.createPositionBefore(e):o.createPositionAt(t,"end")}else l=r.toViewPosition(s.createPositionBefore(t));if(l=et(l),o.insert(l,n),c&&"listItem"==c.name){const t=r.toViewElement(c),i=o.createRange(o.createPositionAt(t,0),l).getWalker({ignoreElementEnd:!0});for(const t of i)if(t.item.is("element","li")){const s=o.breakContainer(o.createPositionBefore(t.item)),n=t.item.parent,r=o.createPositionAt(e,"end");tt(o,r.nodeBefore,r.nodeAfter),o.move(o.createRangeOn(n),r),i.position=s}}else{const i=n.nextSibling;if(i&&(i.is("element","ul")||i.is("element","ol"))){let s=null;for(const e of i.getChildren()){const i=r.toModelElement(e);if(!(i&&i.getAttribute("listIndent")>t.getAttribute("listIndent")))break;s=e}s&&(o.breakContainer(o.createPositionAfter(s)),o.move(o.createRangeOn(s.parent),o.createPositionAt(e,"end")))}}tt(o,n,n.nextSibling),tt(o,n.previousSibling,n)}function tt(t,e,i){return!e||!i||"ul"!=e.name&&"ol"!=e.name||e.name!=i.name||e.getAttribute("class")!==i.getAttribute("class")?null:t.mergeContainers(t.createPositionAfter(e))}function et(t){return t.getLastMatchingPosition((t=>t.item.is("uiElement")))}function it(t,e){const i=!!e.sameIndent,s=!!e.smallerIndent,n=e.listIndent;let r=t;for(;r&&"listItem"==r.name;){const t=r.getAttribute("listIndent");if(i&&n==t||s&&n>t)return r;r="forward"===e.direction?r.nextSibling:r.previousSibling}return null}function st(t,e,i,s){t.ui.componentFactory.add(e,(n=>{const r=t.commands.get(e),o=new J.ButtonView(n);return o.set({label:i,icon:s,tooltip:!0,isToggleable:!0}),o.bind("isOn","isEnabled").to(r,"value","isEnabled"),o.on("execute",(()=>{t.execute(e),t.editing.view.focus()})),o}))}function nt(t){for(const e of t.getChildren())if("ul"==e.name||"ol"==e.name)return e;return null}function rt(t,e){const i=[],s=t.parent,n={ignoreElementEnd:!0,startPosition:t,shallow:!0,direction:e},r=s.getAttribute("listIndent"),o=[...new H.TreeWalker(n)].filter((t=>t.item.is("element"))).map((t=>t.item));for(const t of o){if(!t.is("element","listItem"))break;if(t.getAttribute("listIndent")<r)break;if(!(t.getAttribute("listIndent")>r)){if(t.getAttribute("listType")!==s.getAttribute("listType"))break;if(t.getAttribute("listStyle")!==s.getAttribute("listStyle"))break;if(t.getAttribute("listReversed")!==s.getAttribute("listReversed"))break;if(t.getAttribute("listStart")!==s.getAttribute("listStart"))break;"backward"===e?i.unshift(t):i.push(t)}}return i}function ot(t){let e=[...t.document.selection.getSelectedBlocks()].filter((t=>t.is("element","listItem"))).map((e=>{const i=t.change((t=>t.createPositionAt(e,0)));return[...rt(i,"backward"),...rt(i,"forward")]})).flat();return e=[...new Set(e)],e}const lt=["disc","circle","square"],at=["decimal","decimal-leading-zero","lower-roman","upper-roman","lower-latin","upper-latin"];function ct(){const t=!this.isEmpty&&("ul"==this.getChild(0).name||"ol"==this.getChild(0).name);return this.isEmpty||t?0:H.getFillerOffset.call(this)}const dt='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zM3.5 3v5H2V3.7H1v-1h2.5V3zM.343 17.857l2.59-3.257H2.92a.6.6 0 1 0-1.04 0H.302a2 2 0 1 1 3.995 0h-.001c-.048.405-.16.734-.333.988-.175.254-.59.692-1.244 1.312H4.3v1h-4l.043-.043zM7 14.75a.75.75 0 0 1 .75-.75h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75z"/></svg>',ut='<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M7 5.75c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0C1 4.784 1.777 4 2.75 4c.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75C1.784 7.5 1 6.723 1 5.75zm6 9c0 .414.336.75.75.75h9.5a.75.75 0 1 0 0-1.5h-9.5a.75.75 0 0 0-.75.75zm-6 0c0-.966.777-1.75 1.75-1.75.966 0 1.75.777 1.75 1.75 0 .966-.777 1.75-1.75 1.75-.966 0-1.75-.777-1.75-1.75z"/></svg>';class mt extends t.Plugin{static get pluginName(){return"ListUI"}init(){const t=this.editor.t;st(this.editor,"numberedList",t("Numbered List"),dt),st(this.editor,"bulletedList",t("Bulleted List"),ut)}}class pt extends t.Plugin{static get requires(){return[G,mt]}static get pluginName(){return"DocumentList"}}class ht extends t.Command{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,i=e.document;let s=Array.from(i.selection.getSelectedBlocks()).filter((t=>d(t)&&"numbered"==t.getAttribute("listType")));s=g(s),e.change((e=>{for(const i of s)e.setAttribute("listStart",t.startIndex||1,i)}))}_getValue(){const t=this.editor.model.document,e=(0,r.first)(t.selection.getSelectedBlocks());return e&&d(e)&&"numbered"==e.getAttribute("listType")?e.getAttribute("listStart"):null}}const ft={},bt={},gt={},vt=[{listStyle:"disc",typeAttribute:"disc",listType:"bulleted"},{listStyle:"circle",typeAttribute:"circle",listType:"bulleted"},{listStyle:"square",typeAttribute:"square",listType:"bulleted"},{listStyle:"decimal",typeAttribute:"1",listType:"numbered"},{listStyle:"decimal-leading-zero",typeAttribute:null,listType:"numbered"},{listStyle:"lower-roman",typeAttribute:"i",listType:"numbered"},{listStyle:"upper-roman",typeAttribute:"I",listType:"numbered"},{listStyle:"lower-alpha",typeAttribute:"a",listType:"numbered"},{listStyle:"upper-alpha",typeAttribute:"A",listType:"numbered"},{listStyle:"lower-latin",typeAttribute:"a",listType:"numbered"},{listStyle:"upper-latin",typeAttribute:"A",listType:"numbered"}];for(const{listStyle:t,typeAttribute:e,listType:i}of vt)ft[t]=i,bt[t]=e,e&&(gt[e]=t);function yt(t){return ft[t]||null}function wt(t){return bt[t]||null}class At extends t.Command{constructor(t,e,i){super(t),this._defaultType=e,this._supportedTypes=i}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,i=e.document;e.change((e=>{this._tryToConvertItemsToList(t);let s=Array.from(i.selection.getSelectedBlocks()).filter((t=>t.hasAttribute("listType")));if(s.length){s=g(s);for(const i of s)e.setAttribute("listStyle",t.type||this._defaultType,i)}}))}isStyleTypeSupported(t){return!this._supportedTypes||this._supportedTypes.includes(t)}_getValue(){const t=(0,r.first)(this.editor.model.document.selection.getSelectedBlocks());return d(t)?t.getAttribute("listStyle"):null}_checkEnabled(){const t=this.editor,e=t.commands.get("numberedList"),i=t.commands.get("bulletedList");return e.isEnabled||i.isEnabled}_tryToConvertItemsToList(t){if(!t.type)return;const e=yt(t.type);if(!e)return;const i=this.editor,s=e+"List";i.commands.get(s).value||i.execute(s)}}class It extends t.Command{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,i=e.document;let s=Array.from(i.selection.getSelectedBlocks()).filter((t=>d(t)&&"numbered"==t.getAttribute("listType")));s=g(s),e.change((e=>{for(const i of s)e.setAttribute("listReversed",!!t.reversed,i)}))}_getValue(){const t=this.editor.model.document,e=(0,r.first)(t.selection.getSelectedBlocks());return d(e)&&"numbered"==e.getAttribute("listType")?e.getAttribute("listReversed"):null}}function kt(t){return(e,i,s)=>{const{writer:n,schema:r,consumable:o}=s;if(!1===o.test(i.viewItem,t.viewConsumables))return;i.modelRange||Object.assign(i,s.convertChildren(i.viewItem,i.modelCursor));let l=!1;for(const e of i.modelRange.getItems({shallow:!0}))r.checkAttribute(e,t.attributeName)&&t.appliesToListItem(e)&&(e.hasAttribute(t.attributeName)||(n.setAttribute(t.attributeName,t.getAttributeOnUpcast(i.viewItem),e),l=!0));l&&o.consume(i.viewItem,t.viewConsumables)}}const xt="default";class Tt extends t.Plugin{static get requires(){return[G]}static get pluginName(){return"DocumentListPropertiesEditing"}constructor(t){super(t),t.config.define("list",{properties:{styles:!0,startIndex:!1,reversed:!1}})}init(){const t=this.editor,e=t.model,i=t.plugins.get(G),s=function(t){const e=[];if(t.styles){const i="object"==typeof t.styles&&t.styles.useAttribute;e.push({attributeName:"listStyle",defaultValue:xt,viewConsumables:{styles:"list-style-type"},addCommand(t){let e=vt.map((t=>t.listStyle));i&&(e=e.filter((t=>!!wt(t)))),t.commands.add("listStyle",new At(t,xt,e))},appliesToListItem:()=>!0,hasValidAttribute(t){if(!t.hasAttribute("listStyle"))return!1;const e=t.getAttribute("listStyle");return e==xt||yt(e)==t.getAttribute("listType")},setAttributeOnDowncast(t,e,s){if(e&&e!==xt){if(!i)return void t.setStyle("list-style-type",e,s);{const i=wt(e);if(i)return void t.setAttribute("type",i,s)}}t.removeStyle("list-style-type",s),t.removeAttribute("type",s)},getAttributeOnUpcast(t){const e=t.getStyle("list-style-type");if(e)return e;const i=t.getAttribute("type");return i?gt[i]||null:xt}})}t.reversed&&e.push({attributeName:"listReversed",defaultValue:!1,viewConsumables:{attributes:"reversed"},addCommand(t){t.commands.add("listReversed",new It(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listReversed")},setAttributeOnDowncast(t,e,i){e?t.setAttribute("reversed","reversed",i):t.removeAttribute("reversed",i)},getAttributeOnUpcast:t=>t.hasAttribute("reversed")});t.startIndex&&e.push({attributeName:"listStart",defaultValue:1,viewConsumables:{attributes:"start"},addCommand(t){t.commands.add("listStart",new ht(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),hasValidAttribute(t){return this.appliesToListItem(t)==t.hasAttribute("listStart")},setAttributeOnDowncast(t,e,i){e&&e>1?t.setAttribute("start",e,i):t.removeAttribute("start",i)},getAttributeOnUpcast:t=>t.getAttribute("start")||1});return e}(t.config.get("list.properties"));for(const n of s)n.addCommand(t),e.schema.extend("$container",{allowAttributes:n.attributeName}),e.schema.extend("$block",{allowAttributes:n.attributeName}),e.schema.extend("$blockObject",{allowAttributes:n.attributeName}),i.registerDowncastStrategy({scope:"list",attributeName:n.attributeName,setAttributeOnDowncast(t,e,i){n.setAttributeOnDowncast(t,e,i)}});t.conversion.for("upcast").add((t=>{for(const e of s)t.on("element:ol",kt(e)),t.on("element:ul",kt(e))})),i.on("checkAttributes:list",((t,{viewElement:e,modelAttributes:i})=>{for(const n of s)n.getAttributeOnUpcast(e)!=i[n.attributeName]&&(t.return=!0,t.stop())})),this.listenTo(t.commands.get("indentList"),"afterExecute",((t,i)=>{e.change((t=>{for(const e of i)for(const i of s)i.appliesToListItem(e)&&t.setAttribute(i.attributeName,i.defaultValue,e)}))})),i.on("postFixer",((t,{listNodes:e,writer:i})=>{for(const{node:n}of e)for(const e of s)e.hasValidAttribute(n)||(e.appliesToListItem(n)?i.setAttribute(e.attributeName,e.defaultValue,n):i.removeAttribute(e.attributeName,n),t.return=!0)})),i.on("postFixer",((t,{listNodes:e,writer:i})=>{const n=[];for(const{node:r,previous:o}of e){if(!o)continue;const e=r.getAttribute("listIndent"),l=o.getAttribute("listIndent");let a=null;if(e>l?n[l]=o:e<l?(a=n[e],n.length=e):a=o,a&&a.getAttribute("listType")==r.getAttribute("listType"))for(const e of s){const{attributeName:s}=e;if(!e.appliesToListItem(r))continue;const n=a.getAttribute(s);r.getAttribute(s)!=n&&(i.setAttribute(s,n,r),t.return=!0)}}}))}}var St=i(389),_t={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(St.Z,_t);St.Z.locals;class Ct extends J.View{constructor(t,e){super(t);const i=this.bindTemplate;this.set("isCollapsed",!1),this.set("label",""),this.buttonView=this._createButtonView(),this.children=this.createCollection(),this.set("_collapsibleAriaLabelUid"),e&&this.children.addMany(e),this.setTemplate({tag:"div",attributes:{class:["ck","ck-collapsible",i.if("isCollapsed","ck-collapsible_collapsed")]},children:[this.buttonView,{tag:"div",attributes:{class:["ck","ck-collapsible__children"],role:"region",hidden:i.if("isCollapsed","hidden"),"aria-labelledby":i.to("_collapsibleAriaLabelUid")},children:this.children}]})}render(){super.render(),this._collapsibleAriaLabelUid=this.buttonView.labelView.element.id}_createButtonView(){const t=new J.ButtonView(this.locale),e=t.bindTemplate;return t.set({withText:!0,icon:'<svg viewBox="0 0 10 10" xmlns="http://www.w3.org/2000/svg"><path d="M.941 4.523a.75.75 0 1 1 1.06-1.06l3.006 3.005 3.005-3.005a.75.75 0 1 1 1.06 1.06l-3.549 3.55a.75.75 0 0 1-1.168-.136L.941 4.523z"/></svg>'}),t.extendTemplate({attributes:{"aria-expanded":e.to("isOn",(t=>String(t)))}}),t.bind("label").to(this),t.bind("isOn").to(this,"isCollapsed",(t=>!t)),t.on("execute",(()=>{this.isCollapsed=!this.isCollapsed})),t}}var Vt=i(543),Lt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(Vt.Z,Lt);Vt.Z.locals;class Et extends J.View{constructor(t,{enabledProperties:e,styleButtonViews:i,styleGridAriaLabel:s}){super(t);const n=["ck","ck-list-properties"];this.children=this.createCollection(),this.stylesView=null,this.additionalPropertiesCollapsibleView=null,this.startIndexFieldView=null,this.reversedSwitchButtonView=null,this.focusTracker=new r.FocusTracker,this.keystrokes=new r.KeystrokeHandler,this.focusables=new J.ViewCollection,this.focusCycler=new J.FocusCycler({focusables:this.focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),e.styles?(this.stylesView=this._createStylesView(i,s),this.children.add(this.stylesView)):n.push("ck-list-properties_without-styles"),(e.startIndex||e.reversed)&&(this._addNumberedListPropertyViews(e,i),n.push("ck-list-properties_with-numbered-properties")),this.setTemplate({tag:"div",attributes:{class:n},children:this.children})}render(){if(super.render(),this.stylesView){this.focusables.add(this.stylesView),this.focusTracker.add(this.stylesView.element),(this.startIndexFieldView||this.reversedSwitchButtonView)&&(this.focusables.add(this.children.last.buttonView),this.focusTracker.add(this.children.last.buttonView.element));for(const t of this.stylesView.children)this.stylesView.focusTracker.add(t.element);(0,J.addKeyboardHandlingForGrid)({keystrokeHandler:this.stylesView.keystrokes,focusTracker:this.stylesView.focusTracker,gridItems:this.stylesView.children,numberOfColumns:()=>r.global.window.getComputedStyle(this.stylesView.element).getPropertyValue("grid-template-columns").split(" ").length})}if(this.startIndexFieldView){this.focusables.add(this.startIndexFieldView),this.focusTracker.add(this.startIndexFieldView.element),this.listenTo(this.startIndexFieldView.element,"selectstart",((t,e)=>{e.stopPropagation()}),{priority:"high"});const t=t=>t.stopPropagation();this.keystrokes.set("arrowright",t),this.keystrokes.set("arrowleft",t),this.keystrokes.set("arrowup",t),this.keystrokes.set("arrowdown",t)}this.reversedSwitchButtonView&&(this.focusables.add(this.reversedSwitchButtonView),this.focusTracker.add(this.reversedSwitchButtonView.element)),this.keystrokes.listenTo(this.element)}focus(){this.focusCycler.focusFirst()}focusLast(){this.focusCycler.focusLast()}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createStylesView(t,e){const i=new J.View(this.locale);return i.children=i.createCollection(this.locale),i.children.addMany(t),i.setTemplate({tag:"div",attributes:{"aria-label":e,class:["ck","ck-list-styles-list"]},children:i.children}),i.children.delegate("execute").to(this),i.focus=function(){this.children.first.focus()},i.focusTracker=new r.FocusTracker,i.keystrokes=new r.KeystrokeHandler,i.render(),i.keystrokes.listenTo(i.element),i}_addNumberedListPropertyViews(t){const e=this.locale.t,i=[];t.startIndex&&(this.startIndexFieldView=this._createStartIndexField(),i.push(this.startIndexFieldView)),t.reversed&&(this.reversedSwitchButtonView=this._createReversedSwitchButton(),i.push(this.reversedSwitchButtonView)),t.styles?(this.additionalPropertiesCollapsibleView=new Ct(this.locale,i),this.additionalPropertiesCollapsibleView.set({label:e("List properties"),isCollapsed:!0}),this.additionalPropertiesCollapsibleView.buttonView.bind("isEnabled").toMany(i,"isEnabled",((...t)=>t.some((t=>t)))),this.additionalPropertiesCollapsibleView.buttonView.on("change:isEnabled",((t,e,i)=>{i||(this.additionalPropertiesCollapsibleView.isCollapsed=!0)})),this.children.add(this.additionalPropertiesCollapsibleView)):this.children.addMany(i)}_createStartIndexField(){const t=this.locale.t,e=new J.LabeledFieldView(this.locale,J.createLabeledInputNumber);return e.set({label:t("Start at"),class:"ck-numbered-list-properties__start-index"}),e.fieldView.set({min:1,step:1,value:1,inputMode:"numeric"}),e.fieldView.on("input",(()=>{const i=e.fieldView.element,s=i.valueAsNumber;Number.isNaN(s)||(i.checkValidity()?this.fire("listStart",{startIndex:s}):e.errorText=t("Start index must be greater than 0."))})),e}_createReversedSwitchButton(){const t=this.locale.t,e=new J.SwitchButtonView(this.locale);return e.set({withText:!0,label:t("Reversed order"),class:"ck-numbered-list-properties__reversed-order"}),e.delegate("execute").to(this,"listReversed"),e}}var Pt=i(657),zt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(Pt.Z,zt);Pt.Z.locals;class Bt extends t.Plugin{static get pluginName(){return"ListPropertiesUI"}init(){const t=this.editor,e=t.locale.t,i=t.config.get("list.properties");i.styles&&t.ui.componentFactory.add("bulletedList",Nt({editor:t,parentCommandName:"bulletedList",buttonLabel:e("Bulleted List"),buttonIcon:ut,styleGridAriaLabel:e("Bulleted list styles toolbar"),styleDefinitions:[{label:e("Toggle the disc list style"),tooltip:e("Disc"),type:"disc",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11 27a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0-9a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0-9a3 3 0 1 1 0 6 3 3 0 0 1 0-6z"/></svg>'},{label:e("Toggle the circle list style"),tooltip:e("Circle"),type:"circle",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11 27a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm0-10a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4zm0-10a3 3 0 1 1 0 6 3 3 0 0 1 0-6zm0 1a2 2 0 1 0 0 4 2 2 0 0 0 0-4z"/></svg>'},{label:e("Toggle the square list style"),tooltip:e("Square"),type:"square",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M14 27v6H8v-6h6zm0-9v6H8v-6h6zm0-9v6H8V9h6z"/></svg>'}]})),(i.styles||i.startIndex||i.reversed)&&t.ui.componentFactory.add("numberedList",Nt({editor:t,parentCommandName:"numberedList",buttonLabel:e("Numbered List"),buttonIcon:dt,styleGridAriaLabel:e("Numbered list styles toolbar"),styleDefinitions:[{label:e("Toggle the decimal list style"),tooltip:e("Decimal"),type:"decimal",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M10.29 15V8.531H9.286c-.14.393-.4.736-.778 1.03-.378.295-.728.495-1.05.6v1.121a4.257 4.257 0 0 0 1.595-.936V15h1.235zm3.343 0v-1.235h-1.235V15h1.235zM11.3 24v-1.147H8.848c.064-.111.148-.226.252-.343.104-.117.351-.354.74-.712.39-.357.66-.631.81-.821.225-.288.39-.562.494-.824.104-.263.156-.539.156-.829 0-.51-.182-.936-.545-1.279-.363-.342-.863-.514-1.499-.514-.58 0-1.063.148-1.45.444-.387.296-.617.784-.69 1.463l1.23.124c.024-.36.112-.619.264-.774.153-.155.358-.233.616-.233.26 0 .465.074.613.222.148.148.222.36.222.635 0 .25-.085.501-.255.756-.126.185-.468.536-1.024 1.055-.692.641-1.155 1.156-1.389 1.544-.234.389-.375.8-.422 1.233H11.3zm2.333 0v-1.235h-1.235V24h1.235zM9.204 34.11c.615 0 1.129-.2 1.542-.598.413-.398.62-.88.62-1.446 0-.39-.11-.722-.332-.997a1.5 1.5 0 0 0-.886-.532c.619-.337.928-.788.928-1.353 0-.399-.151-.756-.453-1.073-.366-.386-.852-.58-1.459-.58a2.25 2.25 0 0 0-.96.2 1.617 1.617 0 0 0-.668.55c-.16.232-.28.544-.358.933l1.138.194c.032-.282.123-.495.272-.642.15-.146.33-.22.54-.22.215 0 .386.065.515.194s.193.302.193.518c0 .255-.087.46-.263.613-.176.154-.43.227-.765.218l-.136 1.006c.22-.061.409-.092.567-.092.24 0 .444.09.61.272.168.182.251.428.251.739 0 .328-.087.589-.261.782a.833.833 0 0 1-.644.29.841.841 0 0 1-.607-.242c-.167-.16-.27-.394-.307-.698l-1.196.145c.062.542.285.98.668 1.316.384.335.868.503 1.45.503zm4.43-.11v-1.235h-1.236V34h1.235z"/></svg>'},{label:e("Toggle the decimal with leading zero list style"),tooltip:e("Decimal with leading zero"),type:"decimal-leading-zero",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M5.714 15.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm6.078.914V8.531H10.79c-.14.393-.4.736-.778 1.03-.378.295-.728.495-1.05.6v1.121a4.257 4.257 0 0 0 1.595-.936V15h1.235zm3.344 0v-1.235h-1.235V15h1.235zm-9.422 9.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm7.088.914v-1.147H10.35c.065-.111.149-.226.253-.343.104-.117.35-.354.74-.712.39-.357.66-.631.81-.821.225-.288.39-.562.493-.824.104-.263.156-.539.156-.829 0-.51-.181-.936-.544-1.279-.364-.342-.863-.514-1.499-.514-.58 0-1.063.148-1.45.444-.387.296-.617.784-.69 1.463l1.23.124c.024-.36.112-.619.264-.774.152-.155.357-.233.615-.233.261 0 .465.074.613.222.148.148.222.36.222.635 0 .25-.085.501-.255.756-.126.185-.467.536-1.024 1.055-.691.641-1.154 1.156-1.388 1.544-.235.389-.375.8-.422 1.233h4.328zm2.334 0v-1.235h-1.235V24h1.235zM5.714 34.11c.624 0 1.11-.22 1.46-.66.421-.533.632-1.408.632-2.627 0-1.222-.21-2.096-.629-2.624-.351-.445-.839-.668-1.463-.668-.624 0-1.11.22-1.459.66-.422.533-.633 1.406-.633 2.619 0 1.236.192 2.095.576 2.577.384.482.89.723 1.516.723zm0-1.024a.614.614 0 0 1-.398-.14c-.115-.094-.211-.283-.287-.565-.077-.283-.115-.802-.115-1.558s.043-1.294.128-1.613c.064-.246.155-.417.272-.512a.617.617 0 0 1 .4-.143.61.61 0 0 1 .398.143c.116.095.211.284.288.567.076.283.114.802.114 1.558s-.043 1.292-.128 1.608c-.064.246-.155.417-.272.512a.617.617 0 0 1-.4.143zm4.992 1.024c.616 0 1.13-.2 1.543-.598.413-.398.62-.88.62-1.446 0-.39-.111-.722-.332-.997a1.5 1.5 0 0 0-.886-.532c.618-.337.927-.788.927-1.353 0-.399-.15-.756-.452-1.073-.366-.386-.853-.58-1.46-.58a2.25 2.25 0 0 0-.96.2 1.617 1.617 0 0 0-.667.55c-.16.232-.28.544-.359.933l1.139.194c.032-.282.123-.495.272-.642.15-.146.33-.22.54-.22.214 0 .386.065.515.194s.193.302.193.518c0 .255-.088.46-.264.613-.175.154-.43.227-.764.218l-.136 1.006c.22-.061.408-.092.566-.092.24 0 .444.09.611.272.167.182.25.428.25.739 0 .328-.086.589-.26.782a.833.833 0 0 1-.644.29.841.841 0 0 1-.607-.242c-.167-.16-.27-.394-.308-.698l-1.195.145c.062.542.284.98.668 1.316.384.335.867.503 1.45.503zm4.43-.11v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the lower–roman list style"),tooltip:e("Lower–roman"),type:"lower-roman",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11.88 8.7V7.558h-1.234V8.7h1.234zm0 5.3V9.333h-1.234V14h1.234zm2.5 0v-1.235h-1.234V14h1.235zm-4.75 4.7v-1.142H8.395V18.7H9.63zm0 5.3v-4.667H8.395V24H9.63zm2.5-5.3v-1.142h-1.234V18.7h1.235zm0 5.3v-4.667h-1.234V24h1.235zm2.501 0v-1.235h-1.235V24h1.235zM7.38 28.7v-1.142H6.145V28.7H7.38zm0 5.3v-4.667H6.145V34H7.38zm2.5-5.3v-1.142H8.646V28.7H9.88zm0 5.3v-4.667H8.646V34H9.88zm2.5-5.3v-1.142h-1.234V28.7h1.235zm0 5.3v-4.667h-1.234V34h1.235zm2.501 0v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the upper–roman list style"),tooltip:e("Upper-roman"),type:"upper-roman",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M11.916 15V8.558h-1.301V15h1.3zm2.465 0v-1.235h-1.235V15h1.235zM9.665 25v-6.442h-1.3V25h1.3zm2.5 0v-6.442h-1.3V25h1.3zm2.466 0v-1.235h-1.235V25h1.235zm-7.216 9v-6.442h-1.3V34h1.3zm2.5 0v-6.442h-1.3V34h1.3zm2.501 0v-6.442h-1.3V34h1.3zm2.465 0v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the lower–latin list style"),tooltip:e("Lower-latin"),type:"lower-latin",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="M9.62 14.105c.272 0 .528-.05.768-.153s.466-.257.677-.462c.009.024.023.072.044.145.047.161.086.283.119.365h1.221a2.649 2.649 0 0 1-.222-.626c-.04-.195-.059-.498-.059-.908l.013-1.441c0-.536-.055-.905-.165-1.105-.11-.201-.3-.367-.569-.497-.27-.13-.68-.195-1.23-.195-.607 0-1.064.108-1.371.325-.308.217-.525.55-.65 1.002l1.12.202c.076-.217.176-.369.299-.455.123-.086.294-.13.514-.13.325 0 .546.05.663.152.118.101.176.27.176.508v.123c-.222.093-.622.194-1.2.303-.427.082-.755.178-.982.288-.227.11-.403.268-.53.474a1.327 1.327 0 0 0-.188.706c0 .398.138.728.415.988.277.261.656.391 1.136.391zm.368-.87a.675.675 0 0 1-.492-.189.606.606 0 0 1-.193-.448c0-.176.08-.32.241-.435.106-.07.33-.142.673-.215a7.19 7.19 0 0 0 .751-.19v.247c0 .296-.016.496-.048.602a.773.773 0 0 1-.295.409 1.07 1.07 0 0 1-.637.22zm4.645.765v-1.235h-1.235V14h1.235zM10.2 25.105c.542 0 1.003-.215 1.382-.646.38-.43.57-1.044.57-1.84 0-.771-.187-1.362-.559-1.774a1.82 1.82 0 0 0-1.41-.617c-.522 0-.973.216-1.354.65v-2.32H7.594V25h1.147v-.686a1.9 1.9 0 0 0 .67.592c.26.133.523.2.79.2zm-.299-.975c-.354 0-.638-.164-.852-.492-.153-.232-.229-.59-.229-1.073 0-.468.098-.818.295-1.048a.93.93 0 0 1 .738-.345c.302 0 .55.118.743.354.193.236.29.62.29 1.154 0 .5-.096.868-.288 1.1-.192.233-.424.35-.697.35zm4.478.87v-1.235h-1.234V25h1.234zm-4.017 9.105c.6 0 1.08-.142 1.437-.426.357-.284.599-.704.725-1.261l-1.213-.207c-.061.326-.167.555-.316.688a.832.832 0 0 1-.576.2.916.916 0 0 1-.75-.343c-.185-.228-.278-.62-.278-1.173 0-.498.091-.853.274-1.066.183-.212.429-.318.736-.318.232 0 .42.061.565.184.145.123.238.306.28.55l1.216-.22c-.146-.501-.387-.874-.722-1.119-.336-.244-.788-.366-1.356-.366-.695 0-1.245.214-1.653.643-.407.43-.61 1.03-.61 1.8 0 .762.202 1.358.608 1.788.406.431.95.646 1.633.646zM14.633 34v-1.235h-1.235V34h1.235z"/></svg>'},{label:e("Toggle the upper–latin list style"),tooltip:e("Upper-latin"),type:"upper-latin",icon:'<svg viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg"><path d="M35 29a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17zm0-9a1 1 0 0 1 1 1v1a1 1 0 0 1-1 1H18a1 1 0 0 1-1-1v-1a1 1 0 0 1 1-1h17z" fill-opacity=".163"/><path d="m7.88 15 .532-1.463h2.575L11.549 15h1.415l-2.58-6.442H9.01L6.5 15h1.38zm2.69-2.549H8.811l.87-2.39.887 2.39zM14.88 15v-1.235h-1.234V15h1.234zM9.352 25c.83-.006 1.352-.02 1.569-.044.346-.038.636-.14.872-.305.236-.166.422-.387.558-.664.137-.277.205-.562.205-.855 0-.372-.106-.695-.317-.97-.21-.276-.512-.471-.905-.585a1.51 1.51 0 0 0 .661-.567 1.5 1.5 0 0 0 .244-.83c0-.28-.066-.53-.197-.754a1.654 1.654 0 0 0-.495-.539 1.676 1.676 0 0 0-.672-.266c-.25-.042-.63-.063-1.14-.063H7.158V25h2.193zm.142-3.88H8.46v-1.49h.747c.612 0 .983.007 1.112.022.217.026.38.102.49.226.11.125.165.287.165.486a.68.68 0 0 1-.192.503.86.86 0 0 1-.525.23 11.47 11.47 0 0 1-.944.023h.18zm.17 2.795H8.46v-1.723h1.05c.592 0 .977.03 1.154.092.177.062.313.16.406.295a.84.84 0 0 1 .14.492c0 .228-.06.41-.181.547a.806.806 0 0 1-.473.257c-.126.026-.423.04-.892.04zM14.88 25v-1.235h-1.234V25h1.234zm-5.018 9.11c.691 0 1.262-.17 1.711-.512.45-.341.772-.864.965-1.567l-1.261-.4c-.109.472-.287.818-.536 1.037-.25.22-.547.33-.892.33-.47 0-.85-.173-1.143-.519-.293-.345-.44-.925-.44-1.74 0-.767.15-1.322.447-1.665.297-.343.684-.514 1.162-.514.346 0 .64.096.881.29.242.193.4.457.477.79l1.288-.307c-.147-.516-.367-.911-.66-1.187-.492-.465-1.132-.698-1.92-.698-.902 0-1.63.296-2.184.89-.554.593-.83 1.426-.83 2.498 0 1.014.275 1.813.825 2.397.551.585 1.254.877 2.11.877zM14.88 34v-1.235h-1.234V34h1.234z"/></svg>'}]}))}}function Nt({editor:t,parentCommandName:e,buttonLabel:i,buttonIcon:s,styleGridAriaLabel:n,styleDefinitions:r}){const o=t.commands.get(e);return l=>{const a=(0,J.createDropdown)(l,J.SplitButtonView),c=a.buttonView;a.bind("isEnabled").to(o),a.class="ck-list-styles-dropdown",c.on("execute",(()=>{t.execute(e),t.editing.view.focus()})),c.set({label:i,icon:s,tooltip:!0,isToggleable:!0}),c.bind("isOn").to(o,"value",(t=>!!t));const d=function({editor:t,dropdownView:e,parentCommandName:i,styleDefinitions:s,styleGridAriaLabel:n}){const r=t.locale,o=t.config.get("list.properties");let l;"numberedList"!=i&&(o.startIndex=!1,o.reversed=!1);if(o.styles){const e=t.commands.get("listStyle"),n=function({editor:t,listStyleCommand:e,parentCommandName:i}){const s=t.locale,n=t.commands.get(i);return({label:i,type:r,icon:o,tooltip:l})=>{const a=new J.ButtonView(s);return a.set({label:i,icon:o,tooltip:l}),e.on("change:value",(()=>{a.isOn=e.value===r})),a.on("execute",(()=>{n.value?e.value!==r?t.execute("listStyle",{type:r}):t.execute("listStyle",{type:e._defaultType}):t.model.change((()=>{t.execute("listStyle",{type:r})}))})),a}}({editor:t,parentCommandName:i,listStyleCommand:e}),r="function"==typeof e.isStyleTypeSupported?t=>e.isStyleTypeSupported(t.type):()=>!0;l=s.filter(r).map(n)}const a=new Et(r,{styleGridAriaLabel:n,enabledProperties:o,styleButtonViews:l});o.styles&&(0,J.focusChildOnDropdownOpen)(e,(()=>a.stylesView.children.find((t=>t.isOn))));if(o.startIndex){const e=t.commands.get("listStart");a.startIndexFieldView.bind("isEnabled").to(e),a.startIndexFieldView.fieldView.bind("value").to(e),a.on("listStart",((e,i)=>t.execute("listStart",i)))}if(o.reversed){const e=t.commands.get("listReversed");a.reversedSwitchButtonView.bind("isEnabled").to(e),a.reversedSwitchButtonView.bind("isOn").to(e,"value"),a.on("listReversed",(()=>{const i=e.value;t.execute("listReversed",{reversed:!i})}))}return a.delegate("execute").to(e),a}({editor:t,dropdownView:a,parentCommandName:e,styleGridAriaLabel:n,styleDefinitions:r});return a.panelView.children.add(d),a.on("execute",(()=>{t.editing.view.focus()})),a}}class Mt extends t.Plugin{static get requires(){return[Tt,Bt]}static get pluginName(){return"DocumentListProperties"}}class Rt extends t.Command{constructor(t,e){super(t),this.type=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){const e=this.editor.model,i=e.document,s=Array.from(i.selection.getSelectedBlocks()).filter((t=>Ht(t,e.schema))),n=void 0!==t.forceValue?!t.forceValue:this.value;e.change((t=>{if(n){let e=s[s.length-1].nextSibling,i=Number.POSITIVE_INFINITY,n=[];for(;e&&"listItem"==e.name&&0!==e.getAttribute("listIndent");){const t=e.getAttribute("listIndent");t<i&&(i=t);const s=t-i;n.push({element:e,listIndent:s}),e=e.nextSibling}n=n.reverse();for(const e of n)t.setAttribute("listIndent",e.listIndent,e.element)}if(!n){let t=Number.POSITIVE_INFINITY;for(const e of s)e.is("element","listItem")&&e.getAttribute("listIndent")<t&&(t=e.getAttribute("listIndent"));t=0===t?1:t,Ot(s,!0,t),Ot(s,!1,t)}for(const e of s.reverse())n&&"listItem"==e.name?t.rename(e,"paragraph"):n||"listItem"==e.name?n||"listItem"!=e.name||e.getAttribute("listType")==this.type||t.setAttribute("listType",this.type,e):(t.setAttributes({listType:this.type,listIndent:0},e),t.rename(e,"listItem"));this.fire("_executeCleanup",s)}))}_getValue(){const t=(0,r.first)(this.editor.model.document.selection.getSelectedBlocks());return!!t&&t.is("element","listItem")&&t.getAttribute("listType")==this.type}_checkEnabled(){if(this.value)return!0;const t=this.editor.model.document.selection,e=this.editor.model.schema,i=(0,r.first)(t.getSelectedBlocks());return!!i&&Ht(i,e)}}function Ot(t,e,i){const s=e?t[0]:t[t.length-1];if(s.is("element","listItem")){let n=s[e?"previousSibling":"nextSibling"],r=s.getAttribute("listIndent");for(;n&&n.is("element","listItem")&&n.getAttribute("listIndent")>=i;)r>n.getAttribute("listIndent")&&(r=n.getAttribute("listIndent")),n.getAttribute("listIndent")==r&&t[e?"unshift":"push"](n),n=n[e?"previousSibling":"nextSibling"]}}function Ht(t,e){return e.checkChild(t.parent,"listItem")&&!e.isObject(t)}class Ft extends t.Command{constructor(t,e){super(t),this._indentBy="forward"==e?1:-1}refresh(){this.isEnabled=this._checkEnabled()}execute(){const t=this.editor.model,e=t.document;let i=Array.from(e.selection.getSelectedBlocks());t.change((t=>{const e=i[i.length-1];let s=e.nextSibling;for(;s&&"listItem"==s.name&&s.getAttribute("listIndent")>e.getAttribute("listIndent");)i.push(s),s=s.nextSibling;this._indentBy<0&&(i=i.reverse());for(const e of i){const i=e.getAttribute("listIndent")+this._indentBy;i<0?t.rename(e,"paragraph"):t.setAttribute("listIndent",i,e)}this.fire("_executeCleanup",i)}))}_checkEnabled(){const t=(0,r.first)(this.editor.model.document.selection.getSelectedBlocks());if(!t||!t.is("element","listItem"))return!1;if(this._indentBy>0){const e=t.getAttribute("listIndent"),i=t.getAttribute("listType");let s=t.previousSibling;for(;s&&s.is("element","listItem")&&s.getAttribute("listIndent")>=e;){if(s.getAttribute("listIndent")==e)return s.getAttribute("listType")==i;s=s.previousSibling}return!1}return!0}}function Dt(t){return(e,i,s)=>{const n=s.consumable;if(!n.test(i.item,"insert")||!n.test(i.item,"attribute:listType")||!n.test(i.item,"attribute:listIndent"))return;n.consume(i.item,"insert"),n.consume(i.item,"attribute:listType"),n.consume(i.item,"attribute:listIndent");const r=i.item;X(r,Q(r,s),s,t)}}function jt(t,e,i){if(!i.consumable.test(e.item,t.name))return;const s=i.mapper.toViewElement(e.item),n=i.writer;n.breakContainer(n.createPositionBefore(s)),n.breakContainer(n.createPositionAfter(s));const r=s.parent,o="numbered"==e.attributeNewValue?"ol":"ul";n.rename(o,r)}function Ut(t,e,i){i.consumable.consume(e.item,t.name);const s=i.mapper.toViewElement(e.item).parent,n=i.writer;tt(n,s,s.nextSibling),tt(n,s.previousSibling,s)}function qt(t,e,i){if(i.consumable.test(e.item,t.name)&&"listItem"!=e.item.name){let t=i.mapper.toViewPosition(e.range.start);const s=i.writer,n=[];for(;("ul"==t.parent.name||"ol"==t.parent.name)&&(t=s.breakContainer(t),"li"==t.parent.name);){const e=t,i=s.createPositionAt(t.parent,"end");if(!e.isEqual(i)){const t=s.remove(s.createRange(e,i));n.push(t)}t=s.createPositionAfter(t.parent)}if(n.length>0){for(let e=0;e<n.length;e++){const i=t.nodeBefore;if(t=s.insert(t,n[e]).end,e>0){const e=tt(s,i,i.nextSibling);e&&e.parent==i&&t.offset--}}tt(s,t.nodeBefore,t.nodeAfter)}}}function Kt(t,e,i){const s=i.mapper.toViewPosition(e.position),n=s.nodeBefore,r=s.nodeAfter;tt(i.writer,n,r)}function Zt(t,e,i){if(i.consumable.consume(e.viewItem,{name:!0})){const t=i.writer,s=t.createElement("listItem"),n=function(t){let e=0,i=t.parent;for(;i;){if(i.is("element","li"))e++;else{const t=i.previousSibling;t&&t.is("element","li")&&e++}i=i.parent}return e}(e.viewItem);t.setAttribute("listIndent",n,s);const r=e.viewItem.parent&&"ol"==e.viewItem.parent.name?"numbered":"bulleted";if(t.setAttribute("listType",r,s),!i.safeInsert(s,e.modelCursor))return;const o=function(t,e,i){const{writer:s,schema:n}=i;let r=s.createPositionAfter(t);for(const o of e)if("ul"==o.name||"ol"==o.name)r=i.convertItem(o,r).modelCursor;else{const e=i.convertItem(o,s.createPositionAt(t,"end")),l=e.modelRange.start.nodeAfter;l&&l.is("element")&&!n.checkChild(t,l.name)&&(t=e.modelCursor.parent.is("element","listItem")?e.modelCursor.parent:Jt(e.modelCursor),r=s.createPositionAfter(t))}return r}(s,e.viewItem.getChildren(),i);e.modelRange=t.createRange(e.modelCursor,o),i.updateConversionResult(s,e)}}function $t(t,e,i){if(i.consumable.test(e.viewItem,{name:!0})){const t=Array.from(e.viewItem.getChildren());for(const e of t){!(e.is("element","li")||Xt(e))&&e._remove()}}}function Wt(t,e,i){if(i.consumable.test(e.viewItem,{name:!0})){if(0===e.viewItem.childCount)return;const t=[...e.viewItem.getChildren()];let i=!1;for(const e of t)i&&!Xt(e)&&e._remove(),Xt(e)&&(i=!0)}}function Gt(t){return(e,i)=>{if(i.isPhantom)return;const s=i.modelPosition.nodeBefore;if(s&&s.is("element","listItem")){const e=i.mapper.toViewElement(s),n=e.getAncestors().find(Xt),r=t.createPositionAt(e,0).getWalker();for(const t of r){if("elementStart"==t.type&&t.item.is("element","li")){i.viewPosition=t.previousPosition;break}if("elementEnd"==t.type&&t.item==n){i.viewPosition=t.nextPosition;break}}}}}function Yt(t,[e,i]){let s,n=e.is("documentFragment")?e.getChild(0):e;if(s=i?this.createSelection(i):this.document.selection,n&&n.is("element","listItem")){const t=s.getFirstPosition();let e=null;if(t.parent.is("element","listItem")?e=t.parent:t.nodeBefore&&t.nodeBefore.is("element","listItem")&&(e=t.nodeBefore),e){const t=e.getAttribute("listIndent");if(t>0)for(;n&&n.is("element","listItem");)n._setAttribute("listIndent",n.getAttribute("listIndent")+t),n=n.nextSibling}}}function Jt(t){const e=new H.TreeWalker({startPosition:t});let i;do{i=e.next()}while(!i.value.item.is("element","listItem"));return i.value.item}function Qt(t,e,i,s,n,r){const o=it(e.nodeBefore,{sameIndent:!0,smallerIndent:!0,listIndent:t,foo:"b"}),l=n.mapper,a=n.writer,c=o?o.getAttribute("listIndent"):null;let d;if(o)if(c==t){const t=l.toViewElement(o).parent;d=a.createPositionAfter(t)}else{const t=r.createPositionAt(o,"end");d=l.toViewPosition(t)}else d=i;d=et(d);for(const t of[...s.getChildren()])Xt(t)&&(d=a.move(a.createRangeOn(t),d).end,tt(a,t,t.nextSibling),tt(a,t.previousSibling,t))}function Xt(t){return t.is("element","ol")||t.is("element","ul")}class te extends t.Plugin{static get pluginName(){return"ListEditing"}static get requires(){return[e.Enter,n.Delete]}init(){const t=this.editor;t.model.schema.register("listItem",{inheritAllFrom:"$block",allowAttributes:["listType","listIndent"]});const e=t.data,i=t.editing;var s;t.model.document.registerPostFixer((e=>function(t,e){const i=t.document.differ.getChanges(),s=new Map;let n=!1;for(const s of i)if("insert"==s.type&&"listItem"==s.name)r(s.position);else if("insert"==s.type&&"listItem"!=s.name){if("$text"!=s.name){const i=s.position.nodeAfter;i.hasAttribute("listIndent")&&(e.removeAttribute("listIndent",i),n=!0),i.hasAttribute("listType")&&(e.removeAttribute("listType",i),n=!0),i.hasAttribute("listStyle")&&(e.removeAttribute("listStyle",i),n=!0),i.hasAttribute("listReversed")&&(e.removeAttribute("listReversed",i),n=!0),i.hasAttribute("listStart")&&(e.removeAttribute("listStart",i),n=!0);for(const e of Array.from(t.createRangeIn(i)).filter((t=>t.item.is("element","listItem"))))r(e.previousPosition)}r(s.position.getShiftedBy(s.length))}else"remove"==s.type&&"listItem"==s.name?r(s.position):("attribute"==s.type&&"listIndent"==s.attributeKey||"attribute"==s.type&&"listType"==s.attributeKey)&&r(s.range.start);for(const t of s.values())o(t),l(t);return n;function r(t){const e=t.nodeBefore;if(e&&e.is("element","listItem")){let t=e;if(s.has(t))return;for(let e=t.previousSibling;e&&e.is("element","listItem");e=t.previousSibling)if(t=e,s.has(t))return;s.set(e,t)}else{const e=t.nodeAfter;e&&e.is("element","listItem")&&s.set(e,e)}}function o(t){let i=0,s=null;for(;t&&t.is("element","listItem");){const r=t.getAttribute("listIndent");if(r>i){let o;null===s?(s=r-i,o=i):(s>r&&(s=r),o=r-s),e.setAttribute("listIndent",o,t),n=!0}else s=null,i=t.getAttribute("listIndent")+1;t=t.nextSibling}}function l(t){let i=[],s=null;for(;t&&t.is("element","listItem");){const r=t.getAttribute("listIndent");if(s&&s.getAttribute("listIndent")>r&&(i=i.slice(0,r+1)),0!=r)if(i[r]){const s=i[r];t.getAttribute("listType")!=s&&(e.setAttribute("listType",s,t),n=!0)}else i[r]=t.getAttribute("listType");s=t,t=t.nextSibling}}}(t.model,e))),i.mapper.registerViewToModelLength("li",ee),e.mapper.registerViewToModelLength("li",ee),i.mapper.on("modelToViewPosition",Gt(i.view)),i.mapper.on("viewToModelPosition",(s=t.model,(t,e)=>{const i=e.viewPosition,n=i.parent,r=e.mapper;if("ul"==n.name||"ol"==n.name){if(i.isAtEnd){const t=r.toModelElement(i.nodeBefore),n=r.getModelLength(i.nodeBefore);e.modelPosition=s.createPositionBefore(t).getShiftedBy(n)}else{const t=r.toModelElement(i.nodeAfter);e.modelPosition=s.createPositionBefore(t)}t.stop()}else if("li"==n.name&&i.nodeBefore&&("ul"==i.nodeBefore.name||"ol"==i.nodeBefore.name)){const o=r.toModelElement(n);let l=1,a=i.nodeBefore;for(;a&&Xt(a);)l+=r.getModelLength(a),a=a.previousSibling;e.modelPosition=s.createPositionBefore(o).getShiftedBy(l),t.stop()}})),e.mapper.on("modelToViewPosition",Gt(i.view)),t.conversion.for("editingDowncast").add((e=>{e.on("insert",qt,{priority:"high"}),e.on("insert:listItem",Dt(t.model)),e.on("attribute:listType:listItem",jt,{priority:"high"}),e.on("attribute:listType:listItem",Ut,{priority:"low"}),e.on("attribute:listIndent:listItem",function(t){return(e,i,s)=>{if(!s.consumable.consume(i.item,"attribute:listIndent"))return;const n=s.mapper.toViewElement(i.item),r=s.writer;r.breakContainer(r.createPositionBefore(n)),r.breakContainer(r.createPositionAfter(n));const o=n.parent,l=o.previousSibling,a=r.createRangeOn(o);r.remove(a),l&&l.nextSibling&&tt(r,l,l.nextSibling),Qt(i.attributeOldValue+1,i.range.start,a.start,n,s,t),X(i.item,n,s,t);for(const t of i.item.getChildren())s.consumable.consume(t,"insert")}}(t.model)),e.on("remove:listItem",function(t){return(e,i,s)=>{const n=s.mapper.toViewPosition(i.position).getLastMatchingPosition((t=>!t.item.is("element","li"))).nodeAfter,r=s.writer;r.breakContainer(r.createPositionBefore(n)),r.breakContainer(r.createPositionAfter(n));const o=n.parent,l=o.previousSibling,a=r.createRangeOn(o),c=r.remove(a);l&&l.nextSibling&&tt(r,l,l.nextSibling),Qt(s.mapper.toModelElement(n).getAttribute("listIndent")+1,i.position,a.start,n,s,t);for(const t of r.createRangeIn(c).getItems())s.mapper.unbindViewElement(t);e.stop()}}(t.model)),e.on("remove",Kt,{priority:"low"})})),t.conversion.for("dataDowncast").add((e=>{e.on("insert",qt,{priority:"high"}),e.on("insert:listItem",Dt(t.model))})),t.conversion.for("upcast").add((t=>{t.on("element:ul",$t,{priority:"high"}),t.on("element:ol",$t,{priority:"high"}),t.on("element:li",Wt,{priority:"high"}),t.on("element:li",Zt)})),t.model.on("insertContent",Yt,{priority:"high"}),t.commands.add("numberedList",new Rt(t,"numbered")),t.commands.add("bulletedList",new Rt(t,"bulleted")),t.commands.add("indentList",new Ft(t,"forward")),t.commands.add("outdentList",new Ft(t,"backward"));const n=i.view.document;this.listenTo(n,"enter",((t,e)=>{const i=this.editor.model.document,s=i.selection.getLastPosition().parent;i.selection.isCollapsed&&"listItem"==s.name&&s.isEmpty&&(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),{context:"li"}),this.listenTo(n,"delete",((t,e)=>{if("backward"!==e.direction)return;const i=this.editor.model.document.selection;if(!i.isCollapsed)return;const s=i.getFirstPosition();if(!s.isAtStart)return;const n=s.parent;if("listItem"!==n.name)return;n.previousSibling&&"listItem"===n.previousSibling.name||(this.editor.execute("outdentList"),e.preventDefault(),t.stop())}),{context:"li"}),this.listenTo(t.editing.view.document,"tab",((e,i)=>{const s=i.shiftKey?"outdentList":"indentList";this.editor.commands.get(s).isEnabled&&(t.execute(s),i.stopPropagation(),i.preventDefault(),e.stop())}),{context:"li"})}afterInit(){const t=this.editor.commands,e=t.get("indent"),i=t.get("outdent");e&&e.registerChildCommand(t.get("indentList")),i&&i.registerChildCommand(t.get("outdentList"))}}function ee(t){let e=1;for(const i of t.getChildren())if("ul"==i.name||"ol"==i.name)for(const t of i.getChildren())e+=ee(t);return e}class ie extends t.Plugin{static get requires(){return[te,mt]}static get pluginName(){return"List"}}class se extends t.Command{constructor(t,e){super(t),this._defaultType=e}refresh(){this.value=this._getValue(),this.isEnabled=this._checkEnabled()}execute(t={}){this._tryToConvertItemsToList(t);const e=this.editor.model,i=ot(e);i.length&&e.change((e=>{for(const s of i)e.setAttribute("listStyle",t.type||this._defaultType,s)}))}_getValue(){const t=this.editor.model.document.selection.getFirstPosition().parent;return t&&t.is("element","listItem")?t.getAttribute("listStyle"):null}_checkEnabled(){const t=this.editor,e=t.commands.get("numberedList"),i=t.commands.get("bulletedList");return e.isEnabled||i.isEnabled}_tryToConvertItemsToList(t){if(!t.type)return;const e=(i=t.type,lt.includes(i)?"bulleted":at.includes(i)?"numbered":null);var i;if(!e)return;const s=this.editor,n=e+"List";s.commands.get(n).value||s.execute(n)}}class ne extends t.Command{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,i=ot(e).filter((t=>"numbered"==t.getAttribute("listType")));e.change((e=>{for(const s of i)e.setAttribute("listReversed",!!t.reversed,s)}))}_getValue(){const t=this.editor.model.document.selection.getFirstPosition().parent;return t&&t.is("element","listItem")&&"numbered"==t.getAttribute("listType")?t.getAttribute("listReversed"):null}}class re extends t.Command{refresh(){const t=this._getValue();this.value=t,this.isEnabled=null!=t}execute(t={}){const e=this.editor.model,i=ot(e).filter((t=>"numbered"==t.getAttribute("listType")));e.change((e=>{for(const s of i)e.setAttribute("listStart",t.startIndex||1,s)}))}_getValue(){const t=this.editor.model.document.selection.getFirstPosition().parent;return t&&t.is("element","listItem")&&"numbered"==t.getAttribute("listType")?t.getAttribute("listStart"):null}}const oe="default";class le extends t.Plugin{static get requires(){return[te]}static get pluginName(){return"ListPropertiesEditing"}constructor(t){super(t),t.config.define("list",{properties:{styles:!0,startIndex:!1,reversed:!1}})}init(){const t=this.editor,e=t.model,i=function(t){const e=[];t.styles&&e.push({attributeName:"listStyle",defaultValue:oe,addCommand(t){t.commands.add("listStyle",new se(t,oe))},appliesToListItem:()=>!0,setAttributeOnDowncast(t,e,i){e&&e!==oe?t.setStyle("list-style-type",e,i):t.removeStyle("list-style-type",i)},getAttributeOnUpcast:t=>t.getStyle("list-style-type")||oe});t.reversed&&e.push({attributeName:"listReversed",defaultValue:!1,addCommand(t){t.commands.add("listReversed",new ne(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),setAttributeOnDowncast(t,e,i){e?t.setAttribute("reversed","reversed",i):t.removeAttribute("reversed",i)},getAttributeOnUpcast:t=>t.hasAttribute("reversed")});t.startIndex&&e.push({attributeName:"listStart",defaultValue:1,addCommand(t){t.commands.add("listStart",new re(t))},appliesToListItem:t=>"numbered"==t.getAttribute("listType"),setAttributeOnDowncast(t,e,i){1!=e?t.setAttribute("start",e,i):t.removeAttribute("start",i)},getAttributeOnUpcast:t=>t.getAttribute("start")||1});return e}(t.config.get("list.properties"));e.schema.extend("listItem",{allowAttributes:i.map((t=>t.attributeName))});for(const e of i)e.addCommand(t);var s;this.listenTo(t.commands.get("indentList"),"_executeCleanup",function(t,e){return(i,s)=>{const n=s[0],r=n.getAttribute("listIndent"),o=s.filter((t=>t.getAttribute("listIndent")===r));let l=null;n.previousSibling.getAttribute("listIndent")+1!==r&&(l=it(n.previousSibling,{sameIndent:!0,direction:"backward",listIndent:r})),t.model.change((t=>{for(const i of o)for(const s of e)if(s.appliesToListItem(i)){const e=null==l?s.defaultValue:l.getAttribute(s.attributeName);t.setAttribute(s.attributeName,e,i)}}))}}(t,i)),this.listenTo(t.commands.get("outdentList"),"_executeCleanup",function(t,e){return(i,s)=>{if(!(s=s.reverse().filter((t=>t.is("element","listItem")))).length)return;const n=s[0].getAttribute("listIndent"),r=s[0].getAttribute("listType");let o=s[0].previousSibling;if(o.is("element","listItem"))for(;o.getAttribute("listIndent")!==n;)o=o.previousSibling;else o=null;o||(o=s[s.length-1].nextSibling),o&&o.is("element","listItem")&&o.getAttribute("listType")===r&&t.model.change((t=>{const i=s.filter((t=>t.getAttribute("listIndent")===n));for(const s of i)for(const i of e)if(i.appliesToListItem(s)){const e=i.attributeName,n=o.getAttribute(e);t.setAttribute(e,n,s)}}))}}(t,i)),this.listenTo(t.commands.get("bulletedList"),"_executeCleanup",de(t)),this.listenTo(t.commands.get("numberedList"),"_executeCleanup",de(t)),e.document.registerPostFixer(function(t,e){return i=>{let s=!1;const n=ue(t.model.document.differ.getChanges()).filter((t=>"todo"!==t.getAttribute("listType")));if(!n.length)return s;let r=n[n.length-1].nextSibling;if((!r||!r.is("element","listItem"))&&(r=n[0].previousSibling,r)){const t=n[0].getAttribute("listIndent");for(;r.is("element","listItem")&&r.getAttribute("listIndent")!==t&&(r=r.previousSibling,r););}for(const t of e){const e=t.attributeName;for(const o of n)if(t.appliesToListItem(o))if(o.hasAttribute(e)){const n=o.previousSibling;ce(n,o,t.attributeName)&&(i.setAttribute(e,n.getAttribute(e),o),s=!0)}else ae(r,o,t)?i.setAttribute(e,r.getAttribute(e),o):i.setAttribute(e,t.defaultValue,o),s=!0;else i.removeAttribute(e,o)}return s}}(t,i)),t.conversion.for("upcast").add((s=i,t=>{t.on("element:li",((t,e,i)=>{const n=e.viewItem.parent;if(!n)return;const r=e.modelRange.start.nodeAfter||e.modelRange.end.nodeBefore;for(const t of s)if(t.appliesToListItem(r)){const e=t.getAttributeOnUpcast(n);i.writer.setAttribute(t.attributeName,e,r)}}),{priority:"low"})})),t.conversion.for("downcast").add(function(t){return i=>{for(const s of t)i.on(`attribute:${s.attributeName}:listItem`,((t,i,n)=>{const r=n.writer,o=i.item,l=it(o.previousSibling,{sameIndent:!0,listIndent:o.getAttribute("listIndent"),direction:"backward"}),a=n.mapper.toViewElement(o);e(o,l)||r.breakContainer(r.createPositionBefore(a)),s.setAttributeOnDowncast(r,i.attributeNewValue,a.parent)}),{priority:"low"})};function e(t,e){return e&&t.getAttribute("listType")===e.getAttribute("listType")&&t.getAttribute("listIndent")===e.getAttribute("listIndent")&&t.getAttribute("listStyle")===e.getAttribute("listStyle")&&t.getAttribute("listReversed")===e.getAttribute("listReversed")&&t.getAttribute("listStart")===e.getAttribute("listStart")}}(i)),this._mergeListAttributesWhileMergingLists(i)}afterInit(){const t=this.editor;t.commands.get("todoList")&&t.model.document.registerPostFixer(function(t){return e=>{const i=ue(t.model.document.differ.getChanges()).filter((t=>"todo"===t.getAttribute("listType")&&(t.hasAttribute("listStyle")||t.hasAttribute("listReversed")||t.hasAttribute("listStart"))));if(!i.length)return!1;for(const t of i)e.removeAttribute("listStyle",t),e.removeAttribute("listReversed",t),e.removeAttribute("listStart",t);return!0}}(t))}_mergeListAttributesWhileMergingLists(t){const e=this.editor.model;let i;this.listenTo(e,"deleteContent",((t,[e])=>{const s=e.getFirstPosition(),n=e.getLastPosition();if(s.parent===n.parent)return;if(!s.parent.is("element","listItem"))return;const r=n.parent.nextSibling;if(!r||!r.is("element","listItem"))return;const o=it(s.parent,{sameIndent:!0,listIndent:r.getAttribute("listIndent")});o&&o.getAttribute("listType")===r.getAttribute("listType")&&(i=o)}),{priority:"high"}),this.listenTo(e,"deleteContent",(()=>{i&&(e.change((e=>{const s=it(i.nextSibling,{sameIndent:!0,listIndent:i.getAttribute("listIndent"),direction:"forward"});if(!s)return void(i=null);const n=[s,...rt(e.createPositionAt(s,0),"forward")];for(const s of n)for(const n of t)if(n.appliesToListItem(s)){const t=n.attributeName,r=i.getAttribute(t);e.setAttribute(t,r,s)}})),i=null)}),{priority:"low"})}}function ae(t,e,i){if(!t)return!1;const s=t.getAttribute(i.attributeName);return!!s&&(s!=i.defaultValue&&t.getAttribute("listType")===e.getAttribute("listType"))}function ce(t,e,i){if(!t||!t.is("element","listItem"))return!1;if(e.getAttribute("listType")!==t.getAttribute("listType"))return!1;const s=t.getAttribute("listIndent");if(s<1||s!==e.getAttribute("listIndent"))return!1;const n=t.getAttribute(i);return!(!n||n===e.getAttribute(i))}function de(t){return(e,i)=>{i=i.filter((t=>t.is("element","listItem"))),t.model.change((t=>{for(const e of i)t.removeAttribute("listStyle",e)}))}}function ue(t){const e=[];for(const i of t){const t=me(i);t&&t.is("element","listItem")&&e.push(t)}return e}function me(t){return"attribute"===t.type?t.range.start.nodeAfter:"insert"===t.type?t.position.nodeAfter:null}class pe extends t.Plugin{static get requires(){return[le,Bt]}static get pluginName(){return"ListProperties"}}const he="todoListChecked";class fe extends t.Command{constructor(t){super(t),this._selectedElements=[],this.on("execute",(()=>{this.refresh()}),{priority:"highest"})}refresh(){this._selectedElements=this._getSelectedItems(),this.value=this._selectedElements.every((t=>!!t.getAttribute("todoListChecked"))),this.isEnabled=!!this._selectedElements.length}_getSelectedItems(){const t=this.editor.model,e=t.schema,i=t.document.selection.getFirstRange(),s=i.start.parent,n=[];e.checkAttribute(s,he)&&n.push(s);for(const t of i.getItems())e.checkAttribute(t,he)&&!n.includes(t)&&n.push(t);return n}execute(t={}){this.editor.model.change((e=>{for(const i of this._selectedElements){(void 0===t.forceValue?!this.value:t.forceValue)?e.setAttribute(he,!0,i):e.removeAttribute(he,i)}}))}}function be(t,e,i){const s=e.modelCursor,n=s.parent,r=e.viewItem;if("checkbox"!=r.getAttribute("type")||"listItem"!=n.name||!s.isAtStart)return;if(!i.consumable.consume(r,{name:!0}))return;const o=i.writer;o.setAttribute("listType","todo",n),e.viewItem.hasAttribute("checked")&&o.setAttribute("todoListChecked",!0,n),e.modelRange=o.createRange(s)}function ge(t){return(e,i)=>{const s=i.modelPosition,n=s.parent;if(!n.is("element","listItem")||"todo"!=n.getAttribute("listType"))return;const r=ye(i.mapper.toViewElement(n),t);r&&(i.viewPosition=i.mapper.findPositionIn(r,s.offset))}}function ve(t,e,i,s){return e.createUIElement("label",{class:"todo-list__label",contenteditable:!1},(function(e){const n=(0,r.createElement)(document,"input",{type:"checkbox"});i&&n.setAttribute("checked","checked"),n.addEventListener("change",(()=>s(t)));const o=this.toDomElement(e);return o.appendChild(n),o}))}function ye(t,e){const i=e.createRangeIn(t);for(const t of i)if(t.item.is("containerElement","span")&&t.item.hasClass("todo-list__label__description"))return t.item}const we=(0,r.parseKeystroke)("Ctrl+Enter");class Ae extends t.Plugin{static get pluginName(){return"TodoListEditing"}static get requires(){return[te]}init(){const t=this.editor,{editing:e,data:i,model:s}=t;s.schema.extend("listItem",{allowAttributes:["todoListChecked"]}),s.schema.addAttributeCheck(((t,e)=>{const i=t.last;if("todoListChecked"==e&&"listItem"==i.name&&"todo"!=i.getAttribute("listType"))return!1})),t.commands.add("todoList",new Rt(t,"todo"));const n=new fe(t);var o,l;t.commands.add("checkTodoList",n),t.commands.add("todoListCheck",n),i.downcastDispatcher.on("insert:listItem",function(t){return(e,i,s)=>{const n=s.consumable;if(!n.test(i.item,"insert")||!n.test(i.item,"attribute:listType")||!n.test(i.item,"attribute:listIndent"))return;if("todo"!=i.item.getAttribute("listType"))return;const r=i.item;n.consume(r,"insert"),n.consume(r,"attribute:listType"),n.consume(r,"attribute:listIndent"),n.consume(r,"attribute:todoListChecked");const o=s.writer,l=Q(r,s);o.addClass("todo-list",l.parent);const a=o.createContainerElement("label",{class:"todo-list__label"}),c=o.createEmptyElement("input",{type:"checkbox",disabled:"disabled"}),d=o.createContainerElement("span",{class:"todo-list__label__description"});r.getAttribute("todoListChecked")&&o.setAttribute("checked","checked",c),o.insert(o.createPositionAt(l,0),a),o.insert(o.createPositionAt(a,0),c),o.insert(o.createPositionAfter(c),d),X(r,l,s,t)}}(s),{priority:"high"}),i.upcastDispatcher.on("element:input",be,{priority:"high"}),e.downcastDispatcher.on("insert:listItem",function(t,e){return(i,s,n)=>{const r=n.consumable;if(!r.test(s.item,"insert")||!r.test(s.item,"attribute:listType")||!r.test(s.item,"attribute:listIndent"))return;if("todo"!=s.item.getAttribute("listType"))return;const o=s.item;r.consume(o,"insert"),r.consume(o,"attribute:listType"),r.consume(o,"attribute:listIndent"),r.consume(o,"attribute:todoListChecked");const l=n.writer,a=Q(o,n),c=!!o.getAttribute("todoListChecked"),d=ve(o,l,c,e),u=l.createContainerElement("span",{class:"todo-list__label__description"});l.addClass("todo-list",a.parent),l.insert(l.createPositionAt(a,0),d),l.insert(l.createPositionAfter(d),u),X(o,a,n,t)}}(s,(t=>this._handleCheckmarkChange(t))),{priority:"high"}),e.downcastDispatcher.on("attribute:listType:listItem",(o=t=>this._handleCheckmarkChange(t),l=e.view,(t,e,i)=>{if(!i.consumable.consume(e.item,t.name))return;const s=i.mapper.toViewElement(e.item),n=i.writer,r=function(t,e){const i=e.createRangeIn(t);for(const t of i)if(t.item.is("uiElement","label"))return t.item}(s,l);if("todo"==e.attributeNewValue){const t=!!e.item.getAttribute("todoListChecked"),i=ve(e.item,n,t,o),r=n.createContainerElement("span",{class:"todo-list__label__description"}),l=n.createRangeIn(s),a=nt(s),c=et(l.start),d=a?n.createPositionBefore(a):l.end,u=n.createRange(c,d);n.addClass("todo-list",s.parent),n.move(u,n.createPositionAt(r,0)),n.insert(n.createPositionAt(s,0),i),n.insert(n.createPositionAfter(i),r)}else if("todo"==e.attributeOldValue){const t=ye(s,l);n.removeClass("todo-list",s.parent),n.remove(r),n.move(n.createRangeIn(t),n.createPositionBefore(t)),n.remove(t)}})),e.downcastDispatcher.on("attribute:todoListChecked:listItem",function(t){return(e,i,s)=>{if("todo"!=i.item.getAttribute("listType"))return;if(!s.consumable.consume(i.item,"attribute:todoListChecked"))return;const{mapper:n,writer:r}=s,o=!!i.item.getAttribute("todoListChecked"),l=n.toViewElement(i.item).getChild(0),a=ve(i.item,r,o,t);r.insert(r.createPositionAfter(l),a),r.remove(l)}}((t=>this._handleCheckmarkChange(t)))),e.mapper.on("modelToViewPosition",ge(e.view)),i.mapper.on("modelToViewPosition",ge(e.view)),this.listenTo(e.view.document,"arrowKey",function(t,e){return(i,s)=>{if("left"!=(0,r.getLocalizedArrowKeyCodeDirection)(s.keyCode,e.contentLanguageDirection))return;const n=t.schema,o=t.document.selection;if(!o.isCollapsed)return;const l=o.getFirstPosition(),a=l.parent;if("listItem"===a.name&&"todo"==a.getAttribute("listType")&&l.isAtStart){const e=n.getNearestSelectionRange(t.createPositionBefore(a),"backward");e&&t.change((t=>t.setSelection(e))),s.preventDefault(),s.stopPropagation(),i.stop()}}}(s,t.locale),{context:"li"}),this.listenTo(e.view.document,"keydown",((e,i)=>{(0,r.getCode)(i)===we&&(t.execute("checkTodoList"),e.stop())}),{priority:"high"});const a=new Set;this.listenTo(s,"applyOperation",((t,e)=>{const i=e[0];if("rename"==i.type&&"listItem"==i.oldName){const t=i.position.nodeAfter;t.hasAttribute("todoListChecked")&&a.add(t)}else if("changeAttribute"==i.type&&"listType"==i.key&&"todo"===i.oldValue)for(const t of i.range.getItems())t.hasAttribute("todoListChecked")&&"todo"!==t.getAttribute("listType")&&a.add(t)})),s.document.registerPostFixer((t=>{let e=!1;for(const i of a)t.removeAttribute("todoListChecked",i),e=!0;return a.clear(),e}))}_handleCheckmarkChange(t){const e=this.editor,i=e.model,s=Array.from(i.document.selection.getRanges());i.change((i=>{i.setSelection(t,"end"),e.execute("checkTodoList"),i.setSelection(s)}))}}class Ie extends t.Plugin{static get pluginName(){return"TodoListUI"}init(){const t=this.editor.t;st(this.editor,"todoList",t("To-do List"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m2.315 14.705 2.224-2.24a.689.689 0 0 1 .963 0 .664.664 0 0 1 0 .949L2.865 16.07a.682.682 0 0 1-.112.089.647.647 0 0 1-.852-.051L.688 14.886a.635.635 0 0 1 0-.903.647.647 0 0 1 .91 0l.717.722zm5.185.045a.75.75 0 0 1 .75-.75h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75zM2.329 5.745l2.21-2.226a.689.689 0 0 1 .963 0 .664.664 0 0 1 0 .95L2.865 7.125a.685.685 0 0 1-.496.196.644.644 0 0 1-.468-.187L.688 5.912a.635.635 0 0 1 0-.903.647.647 0 0 1 .91 0l.73.736zM7.5 5.75A.75.75 0 0 1 8.25 5h9.5a.75.75 0 1 1 0 1.5h-9.5a.75.75 0 0 1-.75-.75z"/></svg>')}}var ke=i(250),xe={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};K()(ke.Z,xe);ke.Z.locals;class Te extends t.Plugin{static get requires(){return[Ae,Ie]}static get pluginName(){return"TodoList"}}})(),(window.CKEditor5=window.CKEditor5||{}).list=s})(); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/list/translations/tt.js b/web/core/assets/vendor/ckeditor5/list/translations/tt.js new file mode 100644 index 0000000000000000000000000000000000000000..b6edfb98ffea7408544aa528c922fa3b748506a3 --- /dev/null +++ b/web/core/assets/vendor/ckeditor5/list/translations/tt.js @@ -0,0 +1 @@ +!function(e){const t=e.tt=e.tt||{};t.dictionary=Object.assign(t.dictionary||{},{"Bulleted List":"","Bulleted list styles toolbar":"",Circle:"Түгәрәк",Decimal:"","Decimal with leading zero":"",Disc:"Диск","List properties":"","Lower-latin":"","Lower–roman":"","Numbered List":"","Numbered list styles toolbar":"","Reversed order":"",Square:"","Start at":"","Start index must be greater than 0.":"","To-do List":"","Toggle the circle list style":"","Toggle the decimal list style":"","Toggle the decimal with leading zero list style":"","Toggle the disc list style":"","Toggle the lower–latin list style":"","Toggle the lower–roman list style":"","Toggle the square list style":"","Toggle the upper–latin list style":"","Toggle the upper–roman list style":"","Upper-latin":"","Upper-roman":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/paste-from-office/paste-from-office.js b/web/core/assets/vendor/ckeditor5/paste-from-office/paste-from-office.js index 27885c39c0c3eafc0eeb95bd139a6283374a9b11..7a47c76b6dd76193385375693cd427783dd94209 100644 --- a/web/core/assets/vendor/ckeditor5/paste-from-office/paste-from-office.js +++ b/web/core/assets/vendor/ckeditor5/paste-from-office/paste-from-office.js @@ -1,4 +1,4 @@ /*! * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md. - */(()=>{var e={945:(e,t,n)=>{e.exports=n(79)("./src/clipboard.js")},704:(e,t,n)=>{e.exports=n(79)("./src/core.js")},492:(e,t,n)=>{e.exports=n(79)("./src/engine.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function n(r){var s=t[r];if(void 0!==s)return s.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r),n.d(r,{PasteFromOffice:()=>b});var e=n(704),t=n(945),s=n(492);function i(e,t){if(!e.childCount)return;const n=new s.UpcastWriter(e.document),r=function(e,t){const n=t.createRangeIn(e),r=new s.Matcher({name:/^p|h\d+$/,styles:{"mso-list":/.*/}}),i=[];for(const e of n)if("elementStart"===e.type&&r.match(e.item)){const t=a(e.item);i.push({element:e.item,id:t.id,order:t.order,indent:t.indent})}return i}(e,n);if(!r.length)return;let i=null,l=1;r.forEach(((e,a)=>{const u=function(e,t){if(!e)return!0;if(e.id!==t.id)return t.indent-e.indent!=1;const n=t.element.previousSibling;if(!n)return!0;return r=n,!(r.is("element","ol")||r.is("element","ul"));var r}(r[a-1],e),f=u?null:r[a-1],d=(m=e,(p=f)?m.indent-p.indent:m.indent-1);var p,m;if(u&&(i=null,l=1),!i||0!==d){const r=function(e,t){const n=new RegExp(`@list l${e.id}:level${e.indent}\\s*({[^}]*)`,"gi"),r=/mso-level-number-format:([^;]{0,100});/gi,s=/mso-level-start-at:\s{0,100}([0-9]{0,10})\s{0,100};/gi,i=n.exec(t);let c="decimal",a="ol",l=null;if(i&&i[1]){const t=r.exec(i[1]);if(t&&t[1]&&(c=t[1].trim(),a="bullet"!==c&&"image"!==c?"ol":"ul"),"bullet"===c){const t=function(e){const t=function(e){if(e.getChild(0).is("$text"))return null;for(const t of e.getChildren()){if(!t.is("element","span"))continue;const e=t.getChild(0);return e.is("$text")?e:e.getChild(0)}}(e);if(!t)return null;const n=t._data;if("o"===n)return"circle";if("·"===n)return"disc";if("§"===n)return"square";return null}(e.element);t&&(c=t)}else{const e=s.exec(i[1]);e&&e[1]&&(l=parseInt(e[1]))}}return{type:a,startIndex:l,style:o(c)}}(e,t);if(i){if(e.indent>l){const e=i.getChild(i.childCount-1),t=e.getChild(e.childCount-1);i=c(r,t,n),l+=1}else if(e.indent<l){const t=l-e.indent;i=function(e,t){const n=e.getAncestors({parentFirst:!0});let r=null,s=0;for(const e of n)if("ul"!==e.name&&"ol"!==e.name||s++,s===t){r=e;break}return r}(i,t),l=parseInt(e.indent)}}else i=c(r,e.element,n);e.indent<=l&&(i.is("element",r.type)||(i=n.rename(r.type,i)))}const g=function(e,t){return function(e,t){const n=new s.Matcher({name:"span",styles:{"mso-list":"Ignore"}}),r=t.createRangeIn(e);for(const e of r)"elementStart"===e.type&&n.match(e.item)&&t.remove(e.item)}(e,t),t.rename("li",e)}(e.element,n);n.appendChild(g,i)}))}function o(e){if(e.startsWith("arabic-leading-zero"))return"decimal-leading-zero";switch(e){case"alpha-upper":return"upper-alpha";case"alpha-lower":return"lower-alpha";case"roman-upper":return"upper-roman";case"roman-lower":return"lower-roman";case"circle":case"disc":case"square":return e;default:return null}}function c(e,t,n){const r=t.parent,s=n.createElement(e.type),i=r.getChildIndex(t)+1;return n.insertChild(i,s,r),e.style&&n.setStyle("list-style-type",e.style,s),e.startIndex&&e.startIndex>1&&n.setAttribute("start",e.startIndex,s),s}function a(e){const t={},n=e.getStyle("mso-list");if(n){const e=n.match(/(^|\s{1,100})l(\d+)/i),r=n.match(/\s{0,100}lfo(\d+)/i),s=n.match(/\s{0,100}level(\d+)/i);e&&r&&s&&(t.id=e[2],t.order=r[1],t.indent=s[1])}return t}const l=/id=("|')docs-internal-guid-[-0-9a-f]+("|')/i;class u{constructor(e){this.document=e}isActive(e){return l.test(e)}execute(e){const t=new s.UpcastWriter(this.document),{body:n}=e._parsedData;!function(e,t){for(const n of e.getChildren())if(n.is("element","b")&&"normal"===n.getStyle("font-weight")){const r=e.getChildIndex(n);t.remove(n),t.insertChild(r,n.getChildren(),e)}}(n,t),function(e,t){for(const n of t.createRangeIn(e)){const e=n.item;if(e.is("element","li")){const n=e.getChild(0);n&&n.is("element","p")&&t.unwrapElement(n)}}}(n,t),e.content=n}}function f(e,t){if(!e.childCount)return;const n=new s.UpcastWriter,r=function(e,t){const n=t.createRangeIn(e),r=new s.Matcher({name:/v:(.+)/}),i=[];for(const e of n){if("elementStart"!=e.type)continue;const t=e.item,n=t.previousSibling&&t.previousSibling.name||null;r.match(t)&&t.getAttribute("o:gfxdata")&&"v:shapetype"!==n&&i.push(e.item.getAttribute("id"))}return i}(e,n);!function(e,t,n){const r=n.createRangeIn(t),i=new s.Matcher({name:"img"}),o=[];for(const t of r)if(i.match(t.item)){const n=t.item,r=n.getAttribute("v:shapes")?n.getAttribute("v:shapes").split(" "):[];r.length&&r.every((t=>e.indexOf(t)>-1))?o.push(n):n.getAttribute("src")||o.push(n)}for(const e of o)n.remove(e)}(r,e,n),function(e,t){const n=t.createRangeIn(e),r=new s.Matcher({name:/v:(.+)/}),i=[];for(const e of n)"elementStart"==e.type&&r.match(e.item)&&i.push(e.item);for(const e of i)t.remove(e)}(e,n);const i=function(e,t){const n=t.createRangeIn(e),r=new s.Matcher({name:"img"}),i=[];for(const e of n)r.match(e.item)&&e.item.getAttribute("src").startsWith("file://")&&i.push(e.item);return i}(e,n);i.length&&function(e,t,n){if(e.length===t.length)for(let r=0;r<e.length;r++){const s=`data:${t[r].type};base64,${d(t[r].hex)}`;n.setAttribute("src",s,e[r])}}(i,function(e){if(!e)return[];const t=/{\\pict[\s\S]+?\\bliptag-?\d+(\\blipupi-?\d+)?({\\\*\\blipuid\s?[\da-fA-F]+)?[\s}]*?/,n=new RegExp("(?:("+t.source+"))([\\da-fA-F\\s]+)\\}","g"),r=e.match(n),s=[];if(r)for(const e of r){let n=!1;e.includes("\\pngblip")?n="image/png":e.includes("\\jpegblip")&&(n="image/jpeg"),n&&s.push({hex:e.replace(t,"").replace(/[^\da-fA-F]/g,""),type:n})}return s}(t),n)}function d(e){return btoa(e.match(/\w{2}/g).map((e=>String.fromCharCode(parseInt(e,16)))).join(""))}const p=/<meta\s*name="?generator"?\s*content="?microsoft\s*word\s*\d+"?\/?>/i,m=/xmlns:o="urn:schemas-microsoft-com/i;class g{constructor(e){this.document=e}isActive(e){return p.test(e)||m.test(e)}execute(e){const{body:t,stylesString:n}=e._parsedData;i(t,n),f(t,e.dataTransfer.getData("text/rtf")),e.content=t}}function h(e){return e.replace(/<span(?: class="Apple-converted-space"|)>(\s+)<\/span>/g,((e,t)=>1===t.length?" ":Array(t.length+1).join(" ").substr(0,t.length)))}function y(e,t){const n=new DOMParser,r=function(e){return h(h(e)).replace(/(<span\s+style=['"]mso-spacerun:yes['"]>[^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<span\s+style=['"]mso-spacerun:yes['"]><\/span>/g,"").replace(/ <\//g," </").replace(/ <o:p><\/o:p>/g," <o:p></o:p>").replace(/<o:p>( |\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)</g,"><")}(function(e){const t="</body>",n="</html>",r=e.indexOf(t);if(r<0)return e;const s=e.indexOf(n,r+t.length);return e.substring(0,r+t.length)+(s>=0?e.substring(s):"")}(e=e.replace(/<!--\[if gte vml 1]>/g,""))),i=n.parseFromString(r,"text/html");!function(e){e.querySelectorAll("span[style*=spacerun]").forEach((e=>{const t=e.innerText.length||0;e.innerHTML=Array(t+1).join(" ").substr(0,t)}))}(i);const o=i.body.innerHTML,c=function(e,t){const n=new s.ViewDocument(t),r=new s.DomConverter(n,{renderingMode:"data"}),i=e.createDocumentFragment(),o=e.body.childNodes;for(;o.length>0;)i.appendChild(o[0]);return r.domToView(i,{skipComments:!0})}(i,t),a=function(e){const t=[],n=[],r=Array.from(e.getElementsByTagName("style"));for(const e of r)e.sheet&&e.sheet.cssRules&&e.sheet.cssRules.length&&(t.push(e.sheet),n.push(e.innerHTML));return{styles:t,stylesString:n.join(" ")}}(i);return{body:c,bodyString:o,styles:a.styles,stylesString:a.stylesString}}class b extends e.Plugin{static get pluginName(){return"PasteFromOffice"}static get requires(){return[t.ClipboardPipeline]}init(){const e=this.editor,t=e.editing.view.document,n=[];n.push(new g(t)),n.push(new u(t)),e.plugins.get("ClipboardPipeline").on("inputTransformation",((r,s)=>{if(s._isTransformedWithPasteFromOffice)return;if(e.model.document.selection.getFirstPosition().parent.is("element","codeBlock"))return;const i=s.dataTransfer.getData("text/html"),o=n.find((e=>e.isActive(i)));o&&(s._parsedData=y(i,t.stylesProcessor),o.execute(s),s._isTransformedWithPasteFromOffice=!0)}),{priority:"high"})}}})(),(window.CKEditor5=window.CKEditor5||{}).pasteFromOffice=r})(); \ No newline at end of file + */(()=>{var e={945:(e,t,n)=>{e.exports=n(79)("./src/clipboard.js")},704:(e,t,n)=>{e.exports=n(79)("./src/core.js")},492:(e,t,n)=>{e.exports=n(79)("./src/engine.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function n(r){var s=t[r];if(void 0!==s)return s.exports;var i=t[r]={exports:{}};return e[r](i,i.exports,n),i.exports}n.d=(e,t)=>{for(var r in t)n.o(t,r)&&!n.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var r={};(()=>{"use strict";n.r(r),n.d(r,{PasteFromOffice:()=>b});var e=n(704),t=n(945),s=n(492);function i(e,t){if(!e.childCount)return;const n=new s.UpcastWriter(e.document),r=function(e,t){const n=t.createRangeIn(e),r=new s.Matcher({name:/^p|h\d+$/,styles:{"mso-list":/.*/}}),i=[];for(const e of n)if("elementStart"===e.type&&r.match(e.item)){const t=a(e.item);i.push({element:e.item,id:t.id,order:t.order,indent:t.indent})}return i}(e,n);if(!r.length)return;let i=null,l=1;r.forEach(((e,a)=>{const u=function(e,t){if(!e)return!0;if(e.id!==t.id)return t.indent-e.indent!=1;const n=t.element.previousSibling;if(!n)return!0;return r=n,!(r.is("element","ol")||r.is("element","ul"));var r}(r[a-1],e),f=u?null:r[a-1],d=(m=e,(p=f)?m.indent-p.indent:m.indent-1);var p,m;if(u&&(i=null,l=1),!i||0!==d){const r=function(e,t){const n=new RegExp(`@list l${e.id}:level${e.indent}\\s*({[^}]*)`,"gi"),r=/mso-level-number-format:([^;]{0,100});/gi,s=/mso-level-start-at:\s{0,100}([0-9]{0,10})\s{0,100};/gi,i=n.exec(t);let c="decimal",a="ol",l=null;if(i&&i[1]){const t=r.exec(i[1]);if(t&&t[1]&&(c=t[1].trim(),a="bullet"!==c&&"image"!==c?"ol":"ul"),"bullet"===c){const t=function(e){const t=function(e){if(e.getChild(0).is("$text"))return null;for(const t of e.getChildren()){if(!t.is("element","span"))continue;const e=t.getChild(0);return e.is("$text")?e:e.getChild(0)}}(e);if(!t)return null;const n=t._data;if("o"===n)return"circle";if("·"===n)return"disc";if("§"===n)return"square";return null}(e.element);t&&(c=t)}else{const e=s.exec(i[1]);e&&e[1]&&(l=parseInt(e[1]))}}return{type:a,startIndex:l,style:o(c)}}(e,t);if(i){if(e.indent>l){const e=i.getChild(i.childCount-1),t=e.getChild(e.childCount-1);i=c(r,t,n),l+=1}else if(e.indent<l){const t=l-e.indent;i=function(e,t){const n=e.getAncestors({parentFirst:!0});let r=null,s=0;for(const e of n)if("ul"!==e.name&&"ol"!==e.name||s++,s===t){r=e;break}return r}(i,t),l=parseInt(e.indent)}}else i=c(r,e.element,n);e.indent<=l&&(i.is("element",r.type)||(i=n.rename(r.type,i)))}const g=function(e,t){return function(e,t){const n=new s.Matcher({name:"span",styles:{"mso-list":"Ignore"}}),r=t.createRangeIn(e);for(const e of r)"elementStart"===e.type&&n.match(e.item)&&t.remove(e.item)}(e,t),t.rename("li",e)}(e.element,n);n.appendChild(g,i)}))}function o(e){if(e.startsWith("arabic-leading-zero"))return"decimal-leading-zero";switch(e){case"alpha-upper":return"upper-alpha";case"alpha-lower":return"lower-alpha";case"roman-upper":return"upper-roman";case"roman-lower":return"lower-roman";case"circle":case"disc":case"square":return e;default:return null}}function c(e,t,n){const r=t.parent,s=n.createElement(e.type),i=r.getChildIndex(t)+1;return n.insertChild(i,s,r),e.style&&n.setStyle("list-style-type",e.style,s),e.startIndex&&e.startIndex>1&&n.setAttribute("start",e.startIndex,s),s}function a(e){const t={},n=e.getStyle("mso-list");if(n){const e=n.match(/(^|\s{1,100})l(\d+)/i),r=n.match(/\s{0,100}lfo(\d+)/i),s=n.match(/\s{0,100}level(\d+)/i);e&&r&&s&&(t.id=e[2],t.order=r[1],t.indent=s[1])}return t}const l=/id=("|')docs-internal-guid-[-0-9a-f]+("|')/i;class u{constructor(e){this.document=e}isActive(e){return l.test(e)}execute(e){const t=new s.UpcastWriter(this.document),{body:n}=e._parsedData;!function(e,t){for(const n of e.getChildren())if(n.is("element","b")&&"normal"===n.getStyle("font-weight")){const r=e.getChildIndex(n);t.remove(n),t.insertChild(r,n.getChildren(),e)}}(n,t),function(e,t){for(const n of t.createRangeIn(e)){const e=n.item;if(e.is("element","li")){const n=e.getChild(0);n&&n.is("element","p")&&t.unwrapElement(n)}}}(n,t),e.content=n}}function f(e,t){if(!e.childCount)return;const n=new s.UpcastWriter,r=function(e,t){const n=t.createRangeIn(e),r=new s.Matcher({name:/v:(.+)/}),i=[];for(const e of n){if("elementStart"!=e.type)continue;const t=e.item,n=t.previousSibling&&t.previousSibling.name||null;r.match(t)&&t.getAttribute("o:gfxdata")&&"v:shapetype"!==n&&i.push(e.item.getAttribute("id"))}return i}(e,n);!function(e,t,n){const r=n.createRangeIn(t),i=new s.Matcher({name:"img"}),o=[];for(const t of r)if(i.match(t.item)){const n=t.item,r=n.getAttribute("v:shapes")?n.getAttribute("v:shapes").split(" "):[];r.length&&r.every((t=>e.indexOf(t)>-1))?o.push(n):n.getAttribute("src")||o.push(n)}for(const e of o)n.remove(e)}(r,e,n),function(e,t){const n=t.createRangeIn(e),r=new s.Matcher({name:/v:(.+)/}),i=[];for(const e of n)"elementStart"==e.type&&r.match(e.item)&&i.push(e.item);for(const e of i)t.remove(e)}(e,n);const i=function(e,t){const n=t.createRangeIn(e),r=new s.Matcher({name:"img"}),i=[];for(const e of n)r.match(e.item)&&e.item.getAttribute("src").startsWith("file://")&&i.push(e.item);return i}(e,n);i.length&&function(e,t,n){if(e.length===t.length)for(let r=0;r<e.length;r++){const s=`data:${t[r].type};base64,${d(t[r].hex)}`;n.setAttribute("src",s,e[r])}}(i,function(e){if(!e)return[];const t=/{\\pict[\s\S]+?\\bliptag-?\d+(\\blipupi-?\d+)?({\\\*\\blipuid\s?[\da-fA-F]+)?[\s}]*?/,n=new RegExp("(?:("+t.source+"))([\\da-fA-F\\s]+)\\}","g"),r=e.match(n),s=[];if(r)for(const e of r){let n=!1;e.includes("\\pngblip")?n="image/png":e.includes("\\jpegblip")&&(n="image/jpeg"),n&&s.push({hex:e.replace(t,"").replace(/[^\da-fA-F]/g,""),type:n})}return s}(t),n)}function d(e){return btoa(e.match(/\w{2}/g).map((e=>String.fromCharCode(parseInt(e,16)))).join(""))}const p=/<meta\s*name="?generator"?\s*content="?microsoft\s*word\s*\d+"?\/?>/i,m=/xmlns:o="urn:schemas-microsoft-com/i;class g{constructor(e){this.document=e}isActive(e){return p.test(e)||m.test(e)}execute(e){const{body:t,stylesString:n}=e._parsedData;i(t,n),f(t,e.dataTransfer.getData("text/rtf")),e.content=t}}function h(e){return e.replace(/<span(?: class="Apple-converted-space"|)>(\s+)<\/span>/g,((e,t)=>1===t.length?" ":Array(t.length+1).join(" ").substr(0,t.length)))}function y(e,t){const n=new DOMParser,r=function(e){return h(h(e)).replace(/(<span\s+style=['"]mso-spacerun:yes['"]>[^\S\r\n]*?)[\r\n]+([^\S\r\n]*<\/span>)/g,"$1$2").replace(/<span\s+style=['"]mso-spacerun:yes['"]><\/span>/g,"").replace(/ <\//g," </").replace(/ <o:p><\/o:p>/g," <o:p></o:p>").replace(/<o:p>( |\u00A0)<\/o:p>/g,"").replace(/>([^\S\r\n]*[\r\n]\s*)</g,"><")}(function(e){const t="</body>",n="</html>",r=e.indexOf(t);if(r<0)return e;const s=e.indexOf(n,r+t.length);return e.substring(0,r+t.length)+(s>=0?e.substring(s):"")}(e=e.replace(/<!--\[if gte vml 1]>/g,""))),i=n.parseFromString(r,"text/html");!function(e){e.querySelectorAll("span[style*=spacerun]").forEach((e=>{const t=e.innerText.length||0;e.innerText=Array(t+1).join(" ").substr(0,t)}))}(i);const o=i.body.innerHTML,c=function(e,t){const n=new s.ViewDocument(t),r=new s.DomConverter(n,{renderingMode:"data"}),i=e.createDocumentFragment(),o=e.body.childNodes;for(;o.length>0;)i.appendChild(o[0]);return r.domToView(i,{skipComments:!0})}(i,t),a=function(e){const t=[],n=[],r=Array.from(e.getElementsByTagName("style"));for(const e of r)e.sheet&&e.sheet.cssRules&&e.sheet.cssRules.length&&(t.push(e.sheet),n.push(e.innerHTML));return{styles:t,stylesString:n.join(" ")}}(i);return{body:c,bodyString:o,styles:a.styles,stylesString:a.stylesString}}class b extends e.Plugin{static get pluginName(){return"PasteFromOffice"}static get requires(){return[t.ClipboardPipeline]}init(){const e=this.editor,t=e.editing.view.document,n=[];n.push(new g(t)),n.push(new u(t)),e.plugins.get("ClipboardPipeline").on("inputTransformation",((r,s)=>{if(s._isTransformedWithPasteFromOffice)return;if(e.model.document.selection.getFirstPosition().parent.is("element","codeBlock"))return;const i=s.dataTransfer.getData("text/html"),o=n.find((e=>e.isActive(i)));o&&(s._parsedData=y(i,t.stylesProcessor),o.execute(s),s._isTransformedWithPasteFromOffice=!0)}),{priority:"high"})}}})(),(window.CKEditor5=window.CKEditor5||{}).pasteFromOffice=r})(); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/remove-format/translations/ur.js b/web/core/assets/vendor/ckeditor5/remove-format/translations/ur.js new file mode 100644 index 0000000000000000000000000000000000000000..5d50aac036f40147d1d7e27e00dc1685fa58e363 --- /dev/null +++ b/web/core/assets/vendor/ckeditor5/remove-format/translations/ur.js @@ -0,0 +1 @@ +!function(i){const n=i.ur=i.ur||{};n.dictionary=Object.assign(n.dictionary||{},{"Remove Format":"فارمیٹ ہٹائیں"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/source-editing/source-editing.js b/web/core/assets/vendor/ckeditor5/source-editing/source-editing.js index d2fa6d8dd3befaeca7f8c3f6aa8a5a77254ae843..45d5b5cae42cca8367a9ef04d8f1d4ab219d14df 100644 --- a/web/core/assets/vendor/ckeditor5/source-editing/source-editing.js +++ b/web/core/assets/vendor/ckeditor5/source-editing/source-editing.js @@ -2,4 +2,4 @@ /*! * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md. - */(()=>{var e={821:(e,t,i)=>{"use strict";i.d(t,{Z:()=>r});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck-source-editing-area{overflow:hidden;position:relative}.ck-source-editing-area textarea,.ck-source-editing-area:after{border:1px solid transparent;font-family:monospace;font-size:var(--ck-font-size-normal);line-height:var(--ck-line-height-base);margin:0;padding:var(--ck-spacing-large);white-space:pre-wrap}.ck-source-editing-area:after{content:attr(data-value) " ";display:block;visibility:hidden}.ck-source-editing-area textarea{border-color:var(--ck-color-base-border);border-radius:0;box-sizing:border-box;height:100%;outline:none;overflow:hidden;position:absolute;resize:none;width:100%}.ck-rounded-corners .ck-source-editing-area textarea,.ck-source-editing-area textarea.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}.ck-source-editing-area textarea:not([readonly]):focus{border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}',""]);const r=o},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=e(t);return t[2]?"@media ".concat(t[2]," {").concat(i,"}"):i})).join("")},t.i=function(e,i,n){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(n)for(var r=0;r<this.length;r++){var a=this[r][0];null!=a&&(o[a]=!0)}for(var s=0;s<e.length;s++){var d=[].concat(e[s]);n&&o[d[0]]||(i&&(d[2]?d[2]="".concat(i," and ").concat(d[2]):d[2]=i),t.push(d))}},t}},62:(e,t,i)=>{"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),a=[];function s(e){for(var t=-1,i=0;i<a.length;i++)if(a[i].identifier===e){t=i;break}return t}function d(e,t){for(var i={},n=[],o=0;o<e.length;o++){var r=e[o],d=t.base?r[0]+t.base:r[0],c=i[d]||0,l="".concat(d," ").concat(c);i[d]=c+1;var u=s(l),h={css:r[1],media:r[2],sourceMap:r[3]};-1!==u?(a[u].references++,a[u].updater(h)):a.push({identifier:l,updater:p(h,t),references:1}),n.push(l)}return n}function c(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var o=i.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var a=r(e.insert||"head");if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(t)}return t}var l,u=(l=[],function(e,t){return l[e]=t,l.filter(Boolean).join("\n")});function h(e,t,i,n){var o=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=u(t,o);else{var r=document.createTextNode(o),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(r,a[t]):e.appendChild(r)}}function m(e,t,i){var n=i.css,o=i.media,r=i.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var f=null,g=0;function p(e,t){var i,n,o;if(t.singleton){var r=g++;i=f||(f=c(t)),n=h.bind(null,i,r,!1),o=h.bind(null,i,r,!0)}else i=c(t),n=m.bind(null,i,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(i)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var i=d(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<i.length;n++){var o=s(i[n]);a[o].references--}for(var r=d(e,t),c=0;c<i.length;c++){var l=s(i[c]);0===a[l].references&&(a[l].updater(),a.splice(l,1))}i=r}}}},704:(e,t,i)=>{e.exports=i(79)("./src/core.js")},273:(e,t,i)=>{e.exports=i(79)("./src/ui.js")},209:(e,t,i)=>{e.exports=i(79)("./src/utils.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var o=t[n];if(void 0!==o)return o.exports;var r=t[n]={id:n,exports:{}};return e[n](r,r.exports,i),r.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{SourceEditing:()=>h});var e=i(704),t=i(273),o=i(209);function r(e){const t=[{name:"address",isVoid:!1},{name:"article",isVoid:!1},{name:"aside",isVoid:!1},{name:"blockquote",isVoid:!1},{name:"br",isVoid:!0},{name:"details",isVoid:!1},{name:"dialog",isVoid:!1},{name:"dd",isVoid:!1},{name:"div",isVoid:!1},{name:"dl",isVoid:!1},{name:"dt",isVoid:!1},{name:"fieldset",isVoid:!1},{name:"figcaption",isVoid:!1},{name:"figure",isVoid:!1},{name:"footer",isVoid:!1},{name:"form",isVoid:!1},{name:"h1",isVoid:!1},{name:"h2",isVoid:!1},{name:"h3",isVoid:!1},{name:"h4",isVoid:!1},{name:"h5",isVoid:!1},{name:"h6",isVoid:!1},{name:"header",isVoid:!1},{name:"hgroup",isVoid:!1},{name:"hr",isVoid:!0},{name:"input",isVoid:!0},{name:"li",isVoid:!1},{name:"main",isVoid:!1},{name:"nav",isVoid:!1},{name:"ol",isVoid:!1},{name:"p",isVoid:!1},{name:"section",isVoid:!1},{name:"table",isVoid:!1},{name:"tbody",isVoid:!1},{name:"td",isVoid:!1},{name:"textarea",isVoid:!1},{name:"th",isVoid:!1},{name:"thead",isVoid:!1},{name:"tr",isVoid:!1},{name:"ul",isVoid:!1}],i=t.map((e=>e.name)).join("|"),n=e.replace(new RegExp(`</?(${i})( .*?)?>`,"g"),"\n$&\n").split("\n");let o=0;return n.filter((e=>e.length)).map((e=>function(e,t){return t.some((t=>!t.isVoid&&!!new RegExp(`<${t.name}( .*?)?>`).test(e)))}(e,t)?a(e,o++):function(e,t){return t.some((t=>new RegExp(`</${t.name}>`).test(e)))}(e,t)?a(e,--o):a(e,o))).join("\n")}function a(e,t,i=" "){return`${i.repeat(Math.max(0,t))}${e}`}var s=i(62),d=i.n(s),c=i(821),l={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};d()(c.Z,l);c.Z.locals;const u="SourceEditingMode";class h extends e.Plugin{static get pluginName(){return"SourceEditing"}static get requires(){return[e.PendingActions]}constructor(e){super(e),this.set("isSourceEditingMode",!1),this._elementReplacer=new o.ElementReplacer,this._replacedRoots=new Map,this._dataFromRoots=new Map}init(){const i=this.editor,n=i.t;i.ui.componentFactory.add("sourceEditing",(o=>{const r=new t.ButtonView(o);return r.set({label:n("Source"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m12.5 0 5 4.5v15.003h-16V0h11zM3 1.5v3.25l-1.497 1-.003 8 1.5 1v3.254L7.685 18l-.001 1.504H17.5V8.002L16 9.428l-.004-4.22-4.222-3.692L3 1.5z"/><path d="M4.06 6.64a.75.75 0 0 1 .958 1.15l-.085.07L2.29 9.75l2.646 1.89c.302.216.4.62.232.951l-.058.095a.75.75 0 0 1-.951.232l-.095-.058-3.5-2.5V9.14l3.496-2.5zm4.194 6.22a.75.75 0 0 1-.958-1.149l.085-.07 2.643-1.89-2.646-1.89a.75.75 0 0 1-.232-.952l.058-.095a.75.75 0 0 1 .95-.232l.096.058 3.5 2.5v1.22l-3.496 2.5zm7.644-.836 2.122 2.122-5.825 5.809-2.125-.005.003-2.116zm2.539-1.847 1.414 1.414a.5.5 0 0 1 0 .707l-1.06 1.06-2.122-2.12 1.061-1.061a.5.5 0 0 1 .707 0z"/></svg>',tooltip:!0,withText:!0,class:"ck-source-editing-button"}),r.bind("isOn").to(this,"isSourceEditingMode"),r.bind("isEnabled").to(this,"isEnabled",i,"isReadOnly",i.plugins.get(e.PendingActions),"hasAny",((e,t,i)=>!!e&&(!t&&!i))),this.listenTo(r,"execute",(()=>{this.isSourceEditingMode=!this.isSourceEditingMode})),r})),this._isAllowedToHandleSourceEditingMode()&&(this.on("change:isSourceEditingMode",((e,t,i)=>{i?(this._showSourceEditing(),this._disableCommands()):(this._hideSourceEditing(),this._enableCommands())})),this.on("change:isEnabled",((e,t,i)=>this._handleReadOnlyMode(!i))),this.listenTo(i,"change:isReadOnly",((e,t,i)=>this._handleReadOnlyMode(i)))),i.data.on("get",(()=>{this.isSourceEditingMode&&this._updateEditorData()}),{priority:"high"})}afterInit(){const e=this.editor;["RealTimeCollaborativeEditing","CommentsEditing","TrackChangesEditing","RevisionHistory"].some((t=>e.plugins.has(t)))&&console.warn("You initialized the editor with the source editing feature and at least one of the collaboration features. Please be advised that the source editing feature may not work, and be careful when editing document source that contains markers created by the collaboration features."),e.plugins.has("RestrictedEditingModeEditing")&&console.warn("You initialized the editor with the source editing feature and restricted editing feature. Please be advised that the source editing feature may not work, and be careful when editing document source that contains markers created by the restricted editing feature.")}_showSourceEditing(){const e=this.editor,t=e.editing.view,i=e.model;i.change((e=>{e.setSelection(null),e.removeSelectionAttribute(i.document.selection.getAttributeKeys())}));for(const[i,n]of t.domRoots){const r=m(e.data.get({rootName:i})),a=(0,o.createElement)(n.ownerDocument,"textarea",{rows:"1","aria-label":"Source code editing area"}),s=(0,o.createElement)(n.ownerDocument,"div",{class:"ck-source-editing-area","data-value":r},[a]);a.value=r,a.setSelectionRange(0,0),a.addEventListener("input",(()=>{s.dataset.value=a.value})),t.change((e=>{const n=t.document.getRoot(i);e.addClass("ck-hidden",n)})),this._replacedRoots.set(i,s),this._elementReplacer.replace(n,s),this._dataFromRoots.set(i,r)}this._focusSourceEditing()}_hideSourceEditing(){const e=this.editor.editing.view;this._updateEditorData(),e.change((t=>{for(const[i]of this._replacedRoots)t.removeClass("ck-hidden",e.document.getRoot(i))})),this._elementReplacer.restore(),this._replacedRoots.clear(),this._dataFromRoots.clear(),e.focus()}_updateEditorData(){const e=this.editor,t={};for(const[e,i]of this._replacedRoots){const n=this._dataFromRoots.get(e),o=i.dataset.value;n!==o&&(t[e]=o)}Object.keys(t).length&&e.data.set(t,{batchType:{isUndoable:!0}})}_focusSourceEditing(){const[e]=this._replacedRoots.values();e.querySelector("textarea").focus()}_disableCommands(){const e=this.editor;for(const t of e.commands.commands())t.forceDisabled(u)}_enableCommands(){const e=this.editor;for(const t of e.commands.commands())t.clearForceDisabled(u)}_handleReadOnlyMode(e){if(this.isSourceEditingMode)for(const[,t]of this._replacedRoots)t.querySelector("textarea").readOnly=e}_isAllowedToHandleSourceEditingMode(){const e=this.editor.ui.view.editable;return e&&!e._hasExternalElement}}function m(e){return function(e){return e.startsWith("<")}(e)?r(e):e}})(),(window.CKEditor5=window.CKEditor5||{}).sourceEditing=n})(); \ No newline at end of file + */(()=>{var e={821:(e,t,i)=>{"use strict";i.d(t,{Z:()=>r});var n=i(609),o=i.n(n)()((function(e){return e[1]}));o.push([e.id,'.ck-source-editing-area{overflow:hidden;position:relative}.ck-source-editing-area textarea,.ck-source-editing-area:after{border:1px solid transparent;font-family:monospace;font-size:var(--ck-font-size-normal);line-height:var(--ck-line-height-base);margin:0;padding:var(--ck-spacing-large);white-space:pre-wrap}.ck-source-editing-area:after{content:attr(data-value) " ";display:block;visibility:hidden}.ck-source-editing-area textarea{border-color:var(--ck-color-base-border);border-radius:0;box-sizing:border-box;height:100%;outline:none;overflow:hidden;position:absolute;resize:none;width:100%}.ck-rounded-corners .ck-source-editing-area textarea,.ck-source-editing-area textarea.ck-rounded-corners{border-radius:var(--ck-border-radius);border-top-left-radius:0;border-top-right-radius:0}.ck-source-editing-area textarea:not([readonly]):focus{border:var(--ck-focus-ring);box-shadow:var(--ck-inner-shadow),0 0;outline:none}',""]);const r=o},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var i=e(t);return t[2]?"@media ".concat(t[2]," {").concat(i,"}"):i})).join("")},t.i=function(e,i,n){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(n)for(var r=0;r<this.length;r++){var a=this[r][0];null!=a&&(o[a]=!0)}for(var s=0;s<e.length;s++){var d=[].concat(e[s]);n&&o[d[0]]||(i&&(d[2]?d[2]="".concat(i," and ").concat(d[2]):d[2]=i),t.push(d))}},t}},62:(e,t,i)=>{"use strict";var n,o=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},r=function(){var e={};return function(t){if(void 0===e[t]){var i=document.querySelector(t);if(window.HTMLIFrameElement&&i instanceof window.HTMLIFrameElement)try{i=i.contentDocument.head}catch(e){i=null}e[t]=i}return e[t]}}(),a=[];function s(e){for(var t=-1,i=0;i<a.length;i++)if(a[i].identifier===e){t=i;break}return t}function d(e,t){for(var i={},n=[],o=0;o<e.length;o++){var r=e[o],d=t.base?r[0]+t.base:r[0],c=i[d]||0,l="".concat(d," ").concat(c);i[d]=c+1;var u=s(l),h={css:r[1],media:r[2],sourceMap:r[3]};-1!==u?(a[u].references++,a[u].updater(h)):a.push({identifier:l,updater:p(h,t),references:1}),n.push(l)}return n}function c(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var o=i.nc;o&&(n.nonce=o)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var a=r(e.insert||"head");if(!a)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");a.appendChild(t)}return t}var l,u=(l=[],function(e,t){return l[e]=t,l.filter(Boolean).join("\n")});function h(e,t,i,n){var o=i?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=u(t,o);else{var r=document.createTextNode(o),a=e.childNodes;a[t]&&e.removeChild(a[t]),a.length?e.insertBefore(r,a[t]):e.appendChild(r)}}function m(e,t,i){var n=i.css,o=i.media,r=i.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),r&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(r))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var f=null,g=0;function p(e,t){var i,n,o;if(t.singleton){var r=g++;i=f||(f=c(t)),n=h.bind(null,i,r,!1),o=h.bind(null,i,r,!0)}else i=c(t),n=m.bind(null,i,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(i)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var i=d(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<i.length;n++){var o=s(i[n]);a[o].references--}for(var r=d(e,t),c=0;c<i.length;c++){var l=s(i[c]);0===a[l].references&&(a[l].updater(),a.splice(l,1))}i=r}}}},704:(e,t,i)=>{e.exports=i(79)("./src/core.js")},273:(e,t,i)=>{e.exports=i(79)("./src/ui.js")},209:(e,t,i)=>{e.exports=i(79)("./src/utils.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var o=t[n];if(void 0!==o)return o.exports;var r=t[n]={id:n,exports:{}};return e[n](r,r.exports,i),r.exports}i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nc=void 0;var n={};(()=>{"use strict";i.r(n),i.d(n,{SourceEditing:()=>h});var e=i(704),t=i(273),o=i(209);function r(e){const t=[{name:"address",isVoid:!1},{name:"article",isVoid:!1},{name:"aside",isVoid:!1},{name:"blockquote",isVoid:!1},{name:"br",isVoid:!0},{name:"details",isVoid:!1},{name:"dialog",isVoid:!1},{name:"dd",isVoid:!1},{name:"div",isVoid:!1},{name:"dl",isVoid:!1},{name:"dt",isVoid:!1},{name:"fieldset",isVoid:!1},{name:"figcaption",isVoid:!1},{name:"figure",isVoid:!1},{name:"footer",isVoid:!1},{name:"form",isVoid:!1},{name:"h1",isVoid:!1},{name:"h2",isVoid:!1},{name:"h3",isVoid:!1},{name:"h4",isVoid:!1},{name:"h5",isVoid:!1},{name:"h6",isVoid:!1},{name:"header",isVoid:!1},{name:"hgroup",isVoid:!1},{name:"hr",isVoid:!0},{name:"input",isVoid:!0},{name:"li",isVoid:!1},{name:"main",isVoid:!1},{name:"nav",isVoid:!1},{name:"ol",isVoid:!1},{name:"p",isVoid:!1},{name:"section",isVoid:!1},{name:"table",isVoid:!1},{name:"tbody",isVoid:!1},{name:"td",isVoid:!1},{name:"textarea",isVoid:!1},{name:"th",isVoid:!1},{name:"thead",isVoid:!1},{name:"tr",isVoid:!1},{name:"ul",isVoid:!1}],i=t.map((e=>e.name)).join("|"),n=e.replace(new RegExp(`</?(${i})( .*?)?>`,"g"),"\n$&\n").split("\n");let o=0;return n.filter((e=>e.length)).map((e=>function(e,t){return t.some((t=>!t.isVoid&&!!new RegExp(`<${t.name}( .*?)?>`).test(e)))}(e,t)?a(e,o++):function(e,t){return t.some((t=>new RegExp(`</${t.name}>`).test(e)))}(e,t)?a(e,--o):a(e,o))).join("\n")}function a(e,t,i=" "){return`${i.repeat(Math.max(0,t))}${e}`}var s=i(62),d=i.n(s),c=i(821),l={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};d()(c.Z,l);c.Z.locals;const u="SourceEditingMode";class h extends e.Plugin{static get pluginName(){return"SourceEditing"}static get requires(){return[e.PendingActions]}constructor(e){super(e),this.set("isSourceEditingMode",!1),this._elementReplacer=new o.ElementReplacer,this._replacedRoots=new Map,this._dataFromRoots=new Map}init(){const i=this.editor,n=i.t;i.ui.componentFactory.add("sourceEditing",(o=>{const r=new t.ButtonView(o);return r.set({label:n("Source"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m12.5 0 5 4.5v15.003h-16V0h11zM3 1.5v3.25l-1.497 1-.003 8 1.5 1v3.254L7.685 18l-.001 1.504H17.5V8.002L16 9.428l-.004-4.22-4.222-3.692L3 1.5z"/><path d="M4.06 6.64a.75.75 0 0 1 .958 1.15l-.085.07L2.29 9.75l2.646 1.89c.302.216.4.62.232.951l-.058.095a.75.75 0 0 1-.951.232l-.095-.058-3.5-2.5V9.14l3.496-2.5zm4.194 6.22a.75.75 0 0 1-.958-1.149l.085-.07 2.643-1.89-2.646-1.89a.75.75 0 0 1-.232-.952l.058-.095a.75.75 0 0 1 .95-.232l.096.058 3.5 2.5v1.22l-3.496 2.5zm7.644-.836 2.122 2.122-5.825 5.809-2.125-.005.003-2.116zm2.539-1.847 1.414 1.414a.5.5 0 0 1 0 .707l-1.06 1.06-2.122-2.12 1.061-1.061a.5.5 0 0 1 .707 0z"/></svg>',tooltip:!0,withText:!0,class:"ck-source-editing-button"}),r.bind("isOn").to(this,"isSourceEditingMode"),r.bind("isEnabled").to(this,"isEnabled",i,"isReadOnly",i.plugins.get(e.PendingActions),"hasAny",((e,t,i)=>!!e&&(!t&&!i))),this.listenTo(r,"execute",(()=>{this.isSourceEditingMode=!this.isSourceEditingMode})),r})),this._isAllowedToHandleSourceEditingMode()&&(this.on("change:isSourceEditingMode",((e,t,i)=>{i?(this._showSourceEditing(),this._disableCommands()):(this._hideSourceEditing(),this._enableCommands())})),this.on("change:isEnabled",((e,t,i)=>this._handleReadOnlyMode(!i))),this.listenTo(i,"change:isReadOnly",((e,t,i)=>this._handleReadOnlyMode(i)))),i.data.on("get",(()=>{this.isSourceEditingMode&&this._updateEditorData()}),{priority:"high"})}afterInit(){const e=this.editor;["RealTimeCollaborativeEditing","CommentsEditing","TrackChangesEditing","RevisionHistory"].some((t=>e.plugins.has(t)))&&console.warn("You initialized the editor with the source editing feature and at least one of the collaboration features. Please be advised that the source editing feature may not work, and be careful when editing document source that contains markers created by the collaboration features."),e.plugins.has("RestrictedEditingModeEditing")&&console.warn("You initialized the editor with the source editing feature and restricted editing feature. Please be advised that the source editing feature may not work, and be careful when editing document source that contains markers created by the restricted editing feature.")}_showSourceEditing(){const e=this.editor,t=e.editing.view,i=e.model;i.change((e=>{e.setSelection(null),e.removeSelectionAttribute(i.document.selection.getAttributeKeys())}));for(const[i,n]of t.domRoots){const r=m(e.data.get({rootName:i})),a=(0,o.createElement)(n.ownerDocument,"textarea",{rows:"1","aria-label":"Source code editing area"}),s=(0,o.createElement)(n.ownerDocument,"div",{class:"ck-source-editing-area","data-value":r},[a]);a.value=r,a.setSelectionRange(0,0),a.addEventListener("input",(()=>{s.dataset.value=a.value})),t.change((e=>{const n=t.document.getRoot(i);e.addClass("ck-hidden",n)})),e.ui.setEditableElement("sourceEditing:"+i,a),this._replacedRoots.set(i,s),this._elementReplacer.replace(n,s),this._dataFromRoots.set(i,r)}this._focusSourceEditing()}_hideSourceEditing(){const e=this.editor.editing.view;this._updateEditorData(),e.change((t=>{for(const[i]of this._replacedRoots)t.removeClass("ck-hidden",e.document.getRoot(i))})),this._elementReplacer.restore(),this._replacedRoots.clear(),this._dataFromRoots.clear(),e.focus()}_updateEditorData(){const e=this.editor,t={};for(const[e,i]of this._replacedRoots){const n=this._dataFromRoots.get(e),o=i.dataset.value;n!==o&&(t[e]=o)}Object.keys(t).length&&e.data.set(t,{batchType:{isUndoable:!0}})}_focusSourceEditing(){const e=this.editor,[t]=this._replacedRoots.values(),i=t.querySelector("textarea");e.editing.view.document.isFocused=!1,i.focus()}_disableCommands(){const e=this.editor;for(const t of e.commands.commands())t.forceDisabled(u)}_enableCommands(){const e=this.editor;for(const t of e.commands.commands())t.clearForceDisabled(u)}_handleReadOnlyMode(e){if(this.isSourceEditingMode)for(const[,t]of this._replacedRoots)t.querySelector("textarea").readOnly=e}_isAllowedToHandleSourceEditingMode(){const e=this.editor.ui.view.editable;return e&&!e._hasExternalElement}}function m(e){return function(e){return e.startsWith("<")}(e)?r(e):e}})(),(window.CKEditor5=window.CKEditor5||{}).sourceEditing=n})(); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/source-editing/translations/ur.js b/web/core/assets/vendor/ckeditor5/source-editing/translations/ur.js new file mode 100644 index 0000000000000000000000000000000000000000..d11960177431354cc10ba932da4f1933e7d8bcdb --- /dev/null +++ b/web/core/assets/vendor/ckeditor5/source-editing/translations/ur.js @@ -0,0 +1 @@ +!function(i){const n=i.ur=i.ur||{};n.dictionary=Object.assign(n.dictionary||{},{Source:"مآخذ"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/special-characters/special-characters.js b/web/core/assets/vendor/ckeditor5/special-characters/special-characters.js index 3f20d2a3eb052ee3bfc416eb5f124d9eb467d751..ba24d6c08d517e65ed37e91c7041352329b5f1ba 100644 --- a/web/core/assets/vendor/ckeditor5/special-characters/special-characters.js +++ b/web/core/assets/vendor/ckeditor5/special-characters/special-characters.js @@ -2,4 +2,4 @@ /*! * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md. - */(()=>{var t={395:(t,e,a)=>{"use strict";a.d(e,{Z:()=>l});var i=a(609),r=a.n(i)()((function(t){return t[1]}));r.push([t.id,".ck.ck-character-grid{max-width:100%}.ck.ck-character-grid .ck-character-grid__tiles{display:grid}:root{--ck-character-grid-tile-size:24px}.ck.ck-character-grid{max-height:200px;overflow-x:hidden;overflow-y:auto;width:350px}.ck.ck-character-grid .ck-character-grid__tiles{grid-gap:var(--ck-spacing-standard);grid-template-columns:repeat(auto-fit,minmax(var(--ck-character-grid-tile-size),1fr));margin:var(--ck-spacing-standard) var(--ck-spacing-large)}.ck.ck-character-grid .ck-character-grid__tile{border:0;font-size:1.2em;height:var(--ck-character-grid-tile-size);min-height:var(--ck-character-grid-tile-size);min-width:var(--ck-character-grid-tile-size);padding:0;transition:box-shadow .2s ease;width:var(--ck-character-grid-tile-size)}.ck.ck-character-grid .ck-character-grid__tile:focus:not(.ck-disabled),.ck.ck-character-grid .ck-character-grid__tile:hover:not(.ck-disabled){border:0;box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-character-grid .ck-character-grid__tile .ck-button__label{line-height:var(--ck-character-grid-tile-size);text-align:center;width:100%}",""]);const l=r},198:(t,e,a)=>{"use strict";a.d(e,{Z:()=>l});var i=a(609),r=a.n(i)()((function(t){return t[1]}));r.push([t.id,".ck.ck-character-info{border-top:1px solid var(--ck-color-base-border);display:flex;justify-content:space-between;padding:var(--ck-spacing-small) var(--ck-spacing-large)}.ck.ck-character-info>*{font-size:var(--ck-font-size-small);text-transform:uppercase}.ck.ck-character-info .ck-character-info__name{max-width:280px;overflow:hidden;text-overflow:ellipsis}.ck.ck-character-info .ck-character-info__code{opacity:.6}",""]);const l=r},454:(t,e,a)=>{"use strict";a.d(e,{Z:()=>l});var i=a(609),r=a.n(i)()((function(t){return t[1]}));r.push([t.id,".ck.ck-special-characters-navigation>.ck-label{max-width:160px;overflow:hidden;text-overflow:ellipsis}.ck.ck-special-characters-navigation>.ck-dropdown .ck-dropdown__panel{max-height:250px;overflow-x:hidden;overflow-y:auto}",""]);const l=r},609:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var a=t(e);return e[2]?"@media ".concat(e[2]," {").concat(a,"}"):a})).join("")},e.i=function(t,a,i){"string"==typeof t&&(t=[[null,t,""]]);var r={};if(i)for(var l=0;l<this.length;l++){var c=this[l][0];null!=c&&(r[c]=!0)}for(var n=0;n<t.length;n++){var o=[].concat(t[n]);i&&r[o[0]]||(a&&(o[2]?o[2]="".concat(a," and ").concat(o[2]):o[2]=a),e.push(o))}},e}},62:(t,e,a)=>{"use strict";var i,r=function(){return void 0===i&&(i=Boolean(window&&document&&document.all&&!window.atob)),i},l=function(){var t={};return function(e){if(void 0===t[e]){var a=document.querySelector(e);if(window.HTMLIFrameElement&&a instanceof window.HTMLIFrameElement)try{a=a.contentDocument.head}catch(t){a=null}t[e]=a}return t[e]}}(),c=[];function n(t){for(var e=-1,a=0;a<c.length;a++)if(c[a].identifier===t){e=a;break}return e}function o(t,e){for(var a={},i=[],r=0;r<t.length;r++){var l=t[r],o=e.base?l[0]+e.base:l[0],s=a[o]||0,h="".concat(o," ").concat(s);a[o]=s+1;var w=n(h),u={css:l[1],media:l[2],sourceMap:l[3]};-1!==w?(c[w].references++,c[w].updater(u)):c.push({identifier:h,updater:p(u,e),references:1}),i.push(h)}return i}function s(t){var e=document.createElement("style"),i=t.attributes||{};if(void 0===i.nonce){var r=a.nc;r&&(i.nonce=r)}if(Object.keys(i).forEach((function(t){e.setAttribute(t,i[t])})),"function"==typeof t.insert)t.insert(e);else{var c=l(t.insert||"head");if(!c)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");c.appendChild(e)}return e}var h,w=(h=[],function(t,e){return h[t]=e,h.filter(Boolean).join("\n")});function u(t,e,a,i){var r=a?"":i.media?"@media ".concat(i.media," {").concat(i.css,"}"):i.css;if(t.styleSheet)t.styleSheet.cssText=w(e,r);else{var l=document.createTextNode(r),c=t.childNodes;c[e]&&t.removeChild(c[e]),c.length?t.insertBefore(l,c[e]):t.appendChild(l)}}function d(t,e,a){var i=a.css,r=a.media,l=a.sourceMap;if(r?t.setAttribute("media",r):t.removeAttribute("media"),l&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(l))))," */")),t.styleSheet)t.styleSheet.cssText=i;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(i))}}var g=null,m=0;function p(t,e){var a,i,r;if(e.singleton){var l=m++;a=g||(g=s(e)),i=u.bind(null,a,l,!1),r=u.bind(null,a,l,!0)}else a=s(e),i=d.bind(null,a,e),r=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(a)};return i(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;i(t=e)}else r()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=r());var a=o(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var i=0;i<a.length;i++){var r=n(a[i]);c[r].references--}for(var l=o(t,e),s=0;s<a.length;s++){var h=n(a[s]);0===c[h].references&&(c[h].updater(),c.splice(h,1))}a=l}}}},704:(t,e,a)=>{t.exports=a(79)("./src/core.js")},181:(t,e,a)=>{t.exports=a(79)("./src/typing.js")},273:(t,e,a)=>{t.exports=a(79)("./src/ui.js")},209:(t,e,a)=>{t.exports=a(79)("./src/utils.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function a(i){var r=e[i];if(void 0!==r)return r.exports;var l=e[i]={id:i,exports:{}};return t[i](l,l.exports,a),l.exports}a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var i in e)a.o(e,i)&&!a.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nc=void 0;var i={};(()=>{"use strict";a.r(i),a.d(i,{SpecialCharacters:()=>f,SpecialCharactersArrows:()=>v,SpecialCharactersCurrency:()=>C,SpecialCharactersEssentials:()=>q,SpecialCharactersLatin:()=>y,SpecialCharactersMathematical:()=>x,SpecialCharactersText:()=>k});var t=a(704),e=a(181),r=a(273),l=a(209);class c extends r.FormHeaderView{constructor(t,e){super(t);const a=t.t;this.set("class","ck-special-characters-navigation"),this.groupDropdownView=this._createGroupDropdown(e),this.groupDropdownView.panelPosition="rtl"===t.uiLanguageDirection?"se":"sw",this.label=a("Special characters"),this.children.add(this.groupDropdownView)}get currentGroupName(){return this.groupDropdownView.value}focus(){this.groupDropdownView.focus()}_createGroupDropdown(t){const e=this.locale,a=e.t,i=(0,r.createDropdown)(e),l=this._getCharacterGroupListItemDefinitions(i,t);return i.set("value",l.first.model.label),i.buttonView.bind("label").to(i,"value"),i.buttonView.set({isOn:!1,withText:!0,tooltip:a("Character categories"),class:["ck-dropdown__button_label-width_auto"]}),i.on("execute",(t=>{i.value=t.source.label})),i.delegate("execute").to(this),(0,r.addListToDropdown)(i,l),i}_getCharacterGroupListItemDefinitions(t,e){const a=new l.Collection;for(const i of e){const e={type:"button",model:new r.Model({label:i,withText:!0})};e.model.bind("isOn").to(t,"value",(t=>t===e.model.label)),a.add(e)}return a}}var n=a(62),o=a.n(n),s=a(395),h={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(s.Z,h);s.Z.locals;class w extends r.View{constructor(t){super(t),this.tiles=this.createCollection(),this.setTemplate({tag:"div",children:[{tag:"div",attributes:{class:["ck","ck-character-grid__tiles"]},children:this.tiles}],attributes:{class:["ck","ck-character-grid"]}})}createTile(t,e){const a=new r.ButtonView(this.locale);return a.set({label:t,withText:!0,class:"ck-character-grid__tile"}),a.extendTemplate({attributes:{title:e},on:{mouseover:a.bindTemplate.to("mouseover")}}),a.on("mouseover",(()=>{this.fire("tileHover",{name:e,character:t})})),a.on("execute",(()=>{this.fire("execute",{name:e,character:t})})),a}}var u=a(198),d={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(u.Z,d);u.Z.locals;class g extends r.View{constructor(t){super(t);const e=this.bindTemplate;this.set("character",null),this.set("name",null),this.bind("code").to(this,"character",m),this.setTemplate({tag:"div",children:[{tag:"span",attributes:{class:["ck-character-info__name"]},children:[{text:e.to("name",(t=>t||""))}]},{tag:"span",attributes:{class:["ck-character-info__code"]},children:[{text:e.to("code")}]}],attributes:{class:["ck","ck-character-info"]}})}}function m(t){if(null===t)return"";return"U+"+("0000"+t.codePointAt(0).toString(16)).slice(-4)}var p=a(454),L={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(p.Z,L);p.Z.locals;const b="All";class f extends t.Plugin{static get requires(){return[e.Typing]}static get pluginName(){return"SpecialCharacters"}constructor(t){super(t),this._characters=new Map,this._groups=new Map}init(){const t=this.editor,e=t.t,a=t.commands.get("input");t.ui.componentFactory.add("specialCharacters",(i=>{const l=(0,r.createDropdown)(i);let c;return l.buttonView.set({label:e("Special characters"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10 2.5a7.47 7.47 0 0 1 4.231 1.31 7.268 7.268 0 0 1 2.703 3.454 7.128 7.128 0 0 1 .199 4.353c-.39 1.436-1.475 2.72-2.633 3.677h2.013c0-.226.092-.443.254-.603a.876.876 0 0 1 1.229 0c.163.16.254.377.254.603v.853c0 .209-.078.41-.22.567a.873.873 0 0 1-.547.28l-.101.006h-4.695a.517.517 0 0 1-.516-.518v-1.265c0-.21.128-.398.317-.489a5.601 5.601 0 0 0 2.492-2.371 5.459 5.459 0 0 0 .552-3.693 5.53 5.53 0 0 0-1.955-3.2A5.71 5.71 0 0 0 10 4.206 5.708 5.708 0 0 0 6.419 5.46 5.527 5.527 0 0 0 4.46 8.663a5.457 5.457 0 0 0 .554 3.695 5.6 5.6 0 0 0 2.497 2.37.55.55 0 0 1 .317.49v1.264c0 .286-.23.518-.516.518H2.618a.877.877 0 0 1-.614-.25.845.845 0 0 1-.254-.603v-.853c0-.226.091-.443.254-.603a.876.876 0 0 1 1.228 0c.163.16.255.377.255.603h1.925c-1.158-.958-2.155-2.241-2.545-3.678a7.128 7.128 0 0 1 .199-4.352 7.268 7.268 0 0 1 2.703-3.455A7.475 7.475 0 0 1 10 2.5z"/></svg>',tooltip:!0}),l.bind("isEnabled").to(a),l.on("execute",((e,a)=>{t.execute("input",{text:a.character}),t.editing.view.focus()})),l.on("change:isOpen",(()=>{c||(c=this._createDropdownPanelContent(i,l),l.panelView.children.add(c.navigationView),l.panelView.children.add(c.gridView),l.panelView.children.add(c.infoView)),c.infoView.set({character:null,name:null})})),l}))}addItems(t,e){if(t===b)throw new l.CKEditorError('special-character-invalid-group-name: The name "All" is reserved and cannot be used.');const a=this._getGroup(t);for(const t of e)a.add(t.title),this._characters.set(t.title,t.character)}getGroups(){return this._groups.keys()}getCharactersForGroup(t){return t===b?new Set(this._characters.keys()):this._groups.get(t)}getCharacter(t){return this._characters.get(t)}_getGroup(t){return this._groups.has(t)||this._groups.set(t,new Set),this._groups.get(t)}_updateGrid(t,e){e.tiles.clear();const a=this.getCharactersForGroup(t);for(const t of a){const a=this.getCharacter(t);e.tiles.add(e.createTile(a,t))}}_createDropdownPanelContent(t,e){const a=[...this.getGroups()];a.unshift(b);const i=new c(t,a),r=new w(t),l=new g(t);return r.delegate("execute").to(e),r.on("tileHover",((t,e)=>{l.set(e)})),i.on("execute",(()=>{this._updateGrid(i.currentGroupName,r)})),this._updateGrid(i.currentGroupName,r),{navigationView:i,gridView:r,infoView:l}}}class v extends t.Plugin{static get pluginName(){return"SpecialCharactersArrows"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Arrows",[{title:e("leftwards double arrow"),character:"⇐"},{title:e("rightwards double arrow"),character:"⇒"},{title:e("upwards double arrow"),character:"⇑"},{title:e("downwards double arrow"),character:"⇓"},{title:e("leftwards dashed arrow"),character:"⇠"},{title:e("rightwards dashed arrow"),character:"⇢"},{title:e("upwards dashed arrow"),character:"⇡"},{title:e("downwards dashed arrow"),character:"⇣"},{title:e("leftwards arrow to bar"),character:"⇤"},{title:e("rightwards arrow to bar"),character:"⇥"},{title:e("upwards arrow to bar"),character:"⤒"},{title:e("downwards arrow to bar"),character:"⤓"},{title:e("up down arrow with base"),character:"↨"},{title:e("back with leftwards arrow above"),character:"🔙"},{title:e("end with leftwards arrow above"),character:"🔚"},{title:e("on with exclamation mark with left right arrow above"),character:"🔛"},{title:e("soon with rightwards arrow above"),character:"🔜"},{title:e("top with upwards arrow above"),character:"🔝"}])}}class k extends t.Plugin{static get pluginName(){return"SpecialCharactersText"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Text",[{character:"‹",title:e("Single left-pointing angle quotation mark")},{character:"›",title:e("Single right-pointing angle quotation mark")},{character:"«",title:e("Left-pointing double angle quotation mark")},{character:"»",title:e("Right-pointing double angle quotation mark")},{character:"‘",title:e("Left single quotation mark")},{character:"’",title:e("Right single quotation mark")},{character:"“",title:e("Left double quotation mark")},{character:"”",title:e("Right double quotation mark")},{character:"‚",title:e("Single low-9 quotation mark")},{character:"„",title:e("Double low-9 quotation mark")},{character:"¡",title:e("Inverted exclamation mark")},{character:"¿",title:e("Inverted question mark")},{character:"‥",title:e("Two dot leader")},{character:"…",title:e("Horizontal ellipsis")},{character:"‡",title:e("Double dagger")},{character:"‰",title:e("Per mille sign")},{character:"‱",title:e("Per ten thousand sign")},{character:"‼",title:e("Double exclamation mark")},{character:"⁈",title:e("Question exclamation mark")},{character:"⁉",title:e("Exclamation question mark")},{character:"⁇",title:e("Double question mark")},{character:"©",title:e("Copyright sign")},{character:"®",title:e("Registered sign")},{character:"™",title:e("Trade mark sign")},{character:"§",title:e("Section sign")},{character:"¶",title:e("Paragraph sign")},{character:"⁋",title:e("Reversed paragraph sign")}])}}class x extends t.Plugin{static get pluginName(){return"SpecialCharactersMathematical"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Mathematical",[{character:"<",title:e("Less-than sign")},{character:">",title:e("Greater-than sign")},{character:"≤",title:e("Less-than or equal to")},{character:"≥",title:e("Greater-than or equal to")},{character:"–",title:e("En dash")},{character:"—",title:e("Em dash")},{character:"¯",title:e("Macron")},{character:"‾",title:e("Overline")},{character:"°",title:e("Degree sign")},{character:"−",title:e("Minus sign")},{character:"±",title:e("Plus-minus sign")},{character:"÷",title:e("Division sign")},{character:"⁄",title:e("Fraction slash")},{character:"×",title:e("Multiplication sign")},{character:"ƒ",title:e("Latin small letter f with hook")},{character:"∫",title:e("Integral")},{character:"∑",title:e("N-ary summation")},{character:"∞",title:e("Infinity")},{character:"√",title:e("Square root")},{character:"∼",title:e("Tilde operator")},{character:"≅",title:e("Approximately equal to")},{character:"≈",title:e("Almost equal to")},{character:"≠",title:e("Not equal to")},{character:"≡",title:e("Identical to")},{character:"∈",title:e("Element of")},{character:"∉",title:e("Not an element of")},{character:"∋",title:e("Contains as member")},{character:"∏",title:e("N-ary product")},{character:"∧",title:e("Logical and")},{character:"∨",title:e("Logical or")},{character:"¬",title:e("Not sign")},{character:"∩",title:e("Intersection")},{character:"∪",title:e("Union")},{character:"∂",title:e("Partial differential")},{character:"∀",title:e("For all")},{character:"∃",title:e("There exists")},{character:"∅",title:e("Empty set")},{character:"∇",title:e("Nabla")},{character:"∗",title:e("Asterisk operator")},{character:"∝",title:e("Proportional to")},{character:"∠",title:e("Angle")},{character:"¼",title:e("Vulgar fraction one quarter")},{character:"½",title:e("Vulgar fraction one half")},{character:"¾",title:e("Vulgar fraction three quarters")}])}}class y extends t.Plugin{static get pluginName(){return"SpecialCharactersLatin"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Latin",[{character:"Ā",title:e("Latin capital letter a with macron")},{character:"ā",title:e("Latin small letter a with macron")},{character:"Ă",title:e("Latin capital letter a with breve")},{character:"ă",title:e("Latin small letter a with breve")},{character:"Ą",title:e("Latin capital letter a with ogonek")},{character:"ą",title:e("Latin small letter a with ogonek")},{character:"Ć",title:e("Latin capital letter c with acute")},{character:"ć",title:e("Latin small letter c with acute")},{character:"Ĉ",title:e("Latin capital letter c with circumflex")},{character:"ĉ",title:e("Latin small letter c with circumflex")},{character:"Ċ",title:e("Latin capital letter c with dot above")},{character:"ċ",title:e("Latin small letter c with dot above")},{character:"Č",title:e("Latin capital letter c with caron")},{character:"č",title:e("Latin small letter c with caron")},{character:"Ď",title:e("Latin capital letter d with caron")},{character:"ď",title:e("Latin small letter d with caron")},{character:"Đ",title:e("Latin capital letter d with stroke")},{character:"đ",title:e("Latin small letter d with stroke")},{character:"Ē",title:e("Latin capital letter e with macron")},{character:"ē",title:e("Latin small letter e with macron")},{character:"Ĕ",title:e("Latin capital letter e with breve")},{character:"ĕ",title:e("Latin small letter e with breve")},{character:"Ė",title:e("Latin capital letter e with dot above")},{character:"ė",title:e("Latin small letter e with dot above")},{character:"Ę",title:e("Latin capital letter e with ogonek")},{character:"ę",title:e("Latin small letter e with ogonek")},{character:"Ě",title:e("Latin capital letter e with caron")},{character:"ě",title:e("Latin small letter e with caron")},{character:"Ĝ",title:e("Latin capital letter g with circumflex")},{character:"ĝ",title:e("Latin small letter g with circumflex")},{character:"Ğ",title:e("Latin capital letter g with breve")},{character:"ğ",title:e("Latin small letter g with breve")},{character:"Ġ",title:e("Latin capital letter g with dot above")},{character:"ġ",title:e("Latin small letter g with dot above")},{character:"Ģ",title:e("Latin capital letter g with cedilla")},{character:"ģ",title:e("Latin small letter g with cedilla")},{character:"Ĥ",title:e("Latin capital letter h with circumflex")},{character:"ĥ",title:e("Latin small letter h with circumflex")},{character:"Ħ",title:e("Latin capital letter h with stroke")},{character:"ħ",title:e("Latin small letter h with stroke")},{character:"Ĩ",title:e("Latin capital letter i with tilde")},{character:"ĩ",title:e("Latin small letter i with tilde")},{character:"Ī",title:e("Latin capital letter i with macron")},{character:"ī",title:e("Latin small letter i with macron")},{character:"Ĭ",title:e("Latin capital letter i with breve")},{character:"ĭ",title:e("Latin small letter i with breve")},{character:"Į",title:e("Latin capital letter i with ogonek")},{character:"į",title:e("Latin small letter i with ogonek")},{character:"İ",title:e("Latin capital letter i with dot above")},{character:"ı",title:e("Latin small letter dotless i")},{character:"IJ",title:e("Latin capital ligature ij")},{character:"ij",title:e("Latin small ligature ij")},{character:"Ĵ",title:e("Latin capital letter j with circumflex")},{character:"ĵ",title:e("Latin small letter j with circumflex")},{character:"Ķ",title:e("Latin capital letter k with cedilla")},{character:"ķ",title:e("Latin small letter k with cedilla")},{character:"ĸ",title:e("Latin small letter kra")},{character:"Ĺ",title:e("Latin capital letter l with acute")},{character:"ĺ",title:e("Latin small letter l with acute")},{character:"Ļ",title:e("Latin capital letter l with cedilla")},{character:"ļ",title:e("Latin small letter l with cedilla")},{character:"Ľ",title:e("Latin capital letter l with caron")},{character:"ľ",title:e("Latin small letter l with caron")},{character:"Ŀ",title:e("Latin capital letter l with middle dot")},{character:"ŀ",title:e("Latin small letter l with middle dot")},{character:"Ł",title:e("Latin capital letter l with stroke")},{character:"ł",title:e("Latin small letter l with stroke")},{character:"Ń",title:e("Latin capital letter n with acute")},{character:"ń",title:e("Latin small letter n with acute")},{character:"Ņ",title:e("Latin capital letter n with cedilla")},{character:"ņ",title:e("Latin small letter n with cedilla")},{character:"Ň",title:e("Latin capital letter n with caron")},{character:"ň",title:e("Latin small letter n with caron")},{character:"ʼn",title:e("Latin small letter n preceded by apostrophe")},{character:"Ŋ",title:e("Latin capital letter eng")},{character:"ŋ",title:e("Latin small letter eng")},{character:"Ō",title:e("Latin capital letter o with macron")},{character:"ō",title:e("Latin small letter o with macron")},{character:"Ŏ",title:e("Latin capital letter o with breve")},{character:"ŏ",title:e("Latin small letter o with breve")},{character:"Ő",title:e("Latin capital letter o with double acute")},{character:"ő",title:e("Latin small letter o with double acute")},{character:"Œ",title:e("Latin capital ligature oe")},{character:"œ",title:e("Latin small ligature oe")},{character:"Ŕ",title:e("Latin capital letter r with acute")},{character:"ŕ",title:e("Latin small letter r with acute")},{character:"Ŗ",title:e("Latin capital letter r with cedilla")},{character:"ŗ",title:e("Latin small letter r with cedilla")},{character:"Ř",title:e("Latin capital letter r with caron")},{character:"ř",title:e("Latin small letter r with caron")},{character:"Ś",title:e("Latin capital letter s with acute")},{character:"ś",title:e("Latin small letter s with acute")},{character:"Ŝ",title:e("Latin capital letter s with circumflex")},{character:"ŝ",title:e("Latin small letter s with circumflex")},{character:"Ş",title:e("Latin capital letter s with cedilla")},{character:"ş",title:e("Latin small letter s with cedilla")},{character:"Š",title:e("Latin capital letter s with caron")},{character:"š",title:e("Latin small letter s with caron")},{character:"Ţ",title:e("Latin capital letter t with cedilla")},{character:"ţ",title:e("Latin small letter t with cedilla")},{character:"Ť",title:e("Latin capital letter t with caron")},{character:"ť",title:e("Latin small letter t with caron")},{character:"Ŧ",title:e("Latin capital letter t with stroke")},{character:"ŧ",title:e("Latin small letter t with stroke")},{character:"Ũ",title:e("Latin capital letter u with tilde")},{character:"ũ",title:e("Latin small letter u with tilde")},{character:"Ū",title:e("Latin capital letter u with macron")},{character:"ū",title:e("Latin small letter u with macron")},{character:"Ŭ",title:e("Latin capital letter u with breve")},{character:"ŭ",title:e("Latin small letter u with breve")},{character:"Ů",title:e("Latin capital letter u with ring above")},{character:"ů",title:e("Latin small letter u with ring above")},{character:"Ű",title:e("Latin capital letter u with double acute")},{character:"ű",title:e("Latin small letter u with double acute")},{character:"Ų",title:e("Latin capital letter u with ogonek")},{character:"ų",title:e("Latin small letter u with ogonek")},{character:"Ŵ",title:e("Latin capital letter w with circumflex")},{character:"ŵ",title:e("Latin small letter w with circumflex")},{character:"Ŷ",title:e("Latin capital letter y with circumflex")},{character:"ŷ",title:e("Latin small letter y with circumflex")},{character:"Ÿ",title:e("Latin capital letter y with diaeresis")},{character:"Ź",title:e("Latin capital letter z with acute")},{character:"ź",title:e("Latin small letter z with acute")},{character:"Ż",title:e("Latin capital letter z with dot above")},{character:"ż",title:e("Latin small letter z with dot above")},{character:"Ž",title:e("Latin capital letter z with caron")},{character:"ž",title:e("Latin small letter z with caron")},{character:"ſ",title:e("Latin small letter long s")}])}}class C extends t.Plugin{static get pluginName(){return"SpecialCharactersCurrency"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Currency",[{character:"$",title:e("Dollar sign")},{character:"€",title:e("Euro sign")},{character:"¥",title:e("Yen sign")},{character:"£",title:e("Pound sign")},{character:"¢",title:e("Cent sign")},{character:"₠",title:e("Euro-currency sign")},{character:"₡",title:e("Colon sign")},{character:"₢",title:e("Cruzeiro sign")},{character:"₣",title:e("French franc sign")},{character:"₤",title:e("Lira sign")},{character:"¤",title:e("Currency sign")},{character:"₿",title:e("Bitcoin sign")},{character:"₥",title:e("Mill sign")},{character:"₦",title:e("Naira sign")},{character:"₧",title:e("Peseta sign")},{character:"₨",title:e("Rupee sign")},{character:"₩",title:e("Won sign")},{character:"₪",title:e("New sheqel sign")},{character:"₫",title:e("Dong sign")},{character:"₭",title:e("Kip sign")},{character:"₮",title:e("Tugrik sign")},{character:"₯",title:e("Drachma sign")},{character:"₰",title:e("German penny sign")},{character:"₱",title:e("Peso sign")},{character:"₲",title:e("Guarani sign")},{character:"₳",title:e("Austral sign")},{character:"₴",title:e("Hryvnia sign")},{character:"₵",title:e("Cedi sign")},{character:"₶",title:e("Livre tournois sign")},{character:"₷",title:e("Spesmilo sign")},{character:"₸",title:e("Tenge sign")},{character:"₹",title:e("Indian rupee sign")},{character:"₺",title:e("Turkish lira sign")},{character:"₻",title:e("Nordic mark sign")},{character:"₼",title:e("Manat sign")},{character:"₽",title:e("Ruble sign")}])}}class q extends t.Plugin{static get requires(){return[C,k,x,v,y]}}})(),(window.CKEditor5=window.CKEditor5||{}).specialCharacters=i})(); \ No newline at end of file + */(()=>{var t={395:(t,e,a)=>{"use strict";a.d(e,{Z:()=>l});var i=a(609),r=a.n(i)()((function(t){return t[1]}));r.push([t.id,".ck.ck-character-grid{max-width:100%}.ck.ck-character-grid .ck-character-grid__tiles{display:grid}:root{--ck-character-grid-tile-size:24px}.ck.ck-character-grid{max-height:200px;overflow-x:hidden;overflow-y:auto;width:350px}@media screen and (max-width:600px){.ck.ck-character-grid{width:190px}}.ck.ck-character-grid .ck-character-grid__tiles{grid-gap:var(--ck-spacing-standard);grid-template-columns:repeat(10,1fr);margin:var(--ck-spacing-standard) var(--ck-spacing-large)}@media screen and (max-width:600px){.ck.ck-character-grid .ck-character-grid__tiles{grid-template-columns:repeat(5,1fr)}}.ck.ck-character-grid .ck-character-grid__tile{border:0;font-size:1.2em;height:var(--ck-character-grid-tile-size);min-height:var(--ck-character-grid-tile-size);min-width:var(--ck-character-grid-tile-size);padding:0;transition:box-shadow .2s ease;width:var(--ck-character-grid-tile-size)}.ck.ck-character-grid .ck-character-grid__tile:focus:not(.ck-disabled),.ck.ck-character-grid .ck-character-grid__tile:hover:not(.ck-disabled){border:0;box-shadow:inset 0 0 0 1px var(--ck-color-base-background),0 0 0 2px var(--ck-color-focus-border)}.ck.ck-character-grid .ck-character-grid__tile .ck-button__label{line-height:var(--ck-character-grid-tile-size);text-align:center;width:100%}",""]);const l=r},198:(t,e,a)=>{"use strict";a.d(e,{Z:()=>l});var i=a(609),r=a.n(i)()((function(t){return t[1]}));r.push([t.id,".ck.ck-character-info{border-top:1px solid var(--ck-color-base-border);display:flex;justify-content:space-between;padding:var(--ck-spacing-small) var(--ck-spacing-large)}.ck.ck-character-info>*{font-size:var(--ck-font-size-small);text-transform:uppercase}.ck.ck-character-info .ck-character-info__name{max-width:280px;overflow:hidden;text-overflow:ellipsis}.ck.ck-character-info .ck-character-info__code{opacity:.6}@media screen and (max-width:600px){.ck.ck-character-info{max-width:190px}}",""]);const l=r},454:(t,e,a)=>{"use strict";a.d(e,{Z:()=>l});var i=a(609),r=a.n(i)()((function(t){return t[1]}));r.push([t.id,".ck.ck-special-characters-navigation>.ck-label{max-width:160px;overflow:hidden;text-overflow:ellipsis}.ck.ck-special-characters-navigation>.ck-dropdown .ck-dropdown__panel{max-height:250px;overflow-x:hidden;overflow-y:auto}@media screen and (max-width:600px){.ck.ck-special-characters-navigation{max-width:190px}.ck.ck-special-characters-navigation>.ck-form__header__label{overflow:hidden;text-overflow:ellipsis}}",""]);const l=r},609:t=>{"use strict";t.exports=function(t){var e=[];return e.toString=function(){return this.map((function(e){var a=t(e);return e[2]?"@media ".concat(e[2]," {").concat(a,"}"):a})).join("")},e.i=function(t,a,i){"string"==typeof t&&(t=[[null,t,""]]);var r={};if(i)for(var l=0;l<this.length;l++){var c=this[l][0];null!=c&&(r[c]=!0)}for(var n=0;n<t.length;n++){var o=[].concat(t[n]);i&&r[o[0]]||(a&&(o[2]?o[2]="".concat(a," and ").concat(o[2]):o[2]=a),e.push(o))}},e}},62:(t,e,a)=>{"use strict";var i,r=function(){return void 0===i&&(i=Boolean(window&&document&&document.all&&!window.atob)),i},l=function(){var t={};return function(e){if(void 0===t[e]){var a=document.querySelector(e);if(window.HTMLIFrameElement&&a instanceof window.HTMLIFrameElement)try{a=a.contentDocument.head}catch(t){a=null}t[e]=a}return t[e]}}(),c=[];function n(t){for(var e=-1,a=0;a<c.length;a++)if(c[a].identifier===t){e=a;break}return e}function o(t,e){for(var a={},i=[],r=0;r<t.length;r++){var l=t[r],o=e.base?l[0]+e.base:l[0],s=a[o]||0,h="".concat(o," ").concat(s);a[o]=s+1;var d=n(h),w={css:l[1],media:l[2],sourceMap:l[3]};-1!==d?(c[d].references++,c[d].updater(w)):c.push({identifier:h,updater:p(w,e),references:1}),i.push(h)}return i}function s(t){var e=document.createElement("style"),i=t.attributes||{};if(void 0===i.nonce){var r=a.nc;r&&(i.nonce=r)}if(Object.keys(i).forEach((function(t){e.setAttribute(t,i[t])})),"function"==typeof t.insert)t.insert(e);else{var c=l(t.insert||"head");if(!c)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");c.appendChild(e)}return e}var h,d=(h=[],function(t,e){return h[t]=e,h.filter(Boolean).join("\n")});function w(t,e,a,i){var r=a?"":i.media?"@media ".concat(i.media," {").concat(i.css,"}"):i.css;if(t.styleSheet)t.styleSheet.cssText=d(e,r);else{var l=document.createTextNode(r),c=t.childNodes;c[e]&&t.removeChild(c[e]),c.length?t.insertBefore(l,c[e]):t.appendChild(l)}}function u(t,e,a){var i=a.css,r=a.media,l=a.sourceMap;if(r?t.setAttribute("media",r):t.removeAttribute("media"),l&&"undefined"!=typeof btoa&&(i+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(l))))," */")),t.styleSheet)t.styleSheet.cssText=i;else{for(;t.firstChild;)t.removeChild(t.firstChild);t.appendChild(document.createTextNode(i))}}var g=null,m=0;function p(t,e){var a,i,r;if(e.singleton){var l=m++;a=g||(g=s(e)),i=w.bind(null,a,l,!1),r=w.bind(null,a,l,!0)}else a=s(e),i=u.bind(null,a,e),r=function(){!function(t){if(null===t.parentNode)return!1;t.parentNode.removeChild(t)}(a)};return i(t),function(e){if(e){if(e.css===t.css&&e.media===t.media&&e.sourceMap===t.sourceMap)return;i(t=e)}else r()}}t.exports=function(t,e){(e=e||{}).singleton||"boolean"==typeof e.singleton||(e.singleton=r());var a=o(t=t||[],e);return function(t){if(t=t||[],"[object Array]"===Object.prototype.toString.call(t)){for(var i=0;i<a.length;i++){var r=n(a[i]);c[r].references--}for(var l=o(t,e),s=0;s<a.length;s++){var h=n(a[s]);0===c[h].references&&(c[h].updater(),c.splice(h,1))}a=l}}}},704:(t,e,a)=>{t.exports=a(79)("./src/core.js")},181:(t,e,a)=>{t.exports=a(79)("./src/typing.js")},273:(t,e,a)=>{t.exports=a(79)("./src/ui.js")},209:(t,e,a)=>{t.exports=a(79)("./src/utils.js")},79:t=>{"use strict";t.exports=CKEditor5.dll}},e={};function a(i){var r=e[i];if(void 0!==r)return r.exports;var l=e[i]={id:i,exports:{}};return t[i](l,l.exports,a),l.exports}a.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return a.d(e,{a:e}),e},a.d=(t,e)=>{for(var i in e)a.o(e,i)&&!a.o(t,i)&&Object.defineProperty(t,i,{enumerable:!0,get:e[i]})},a.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),a.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},a.nc=void 0;var i={};(()=>{"use strict";a.r(i),a.d(i,{SpecialCharacters:()=>b,SpecialCharactersArrows:()=>v,SpecialCharactersCurrency:()=>T,SpecialCharactersEssentials:()=>q,SpecialCharactersLatin:()=>C,SpecialCharactersMathematical:()=>y,SpecialCharactersText:()=>x});var t=a(704),e=a(181),r=a(273),l=a(209);class c extends r.FormHeaderView{constructor(t,e){super(t);const a=t.t;this.set("class","ck-special-characters-navigation"),this.groupDropdownView=this._createGroupDropdown(e),this.groupDropdownView.panelPosition="rtl"===t.uiLanguageDirection?"se":"sw",this.label=a("Special characters"),this.children.add(this.groupDropdownView)}get currentGroupName(){return this.groupDropdownView.value}focus(){this.groupDropdownView.focus()}_createGroupDropdown(t){const e=this.locale,a=e.t,i=(0,r.createDropdown)(e),l=this._getCharacterGroupListItemDefinitions(i,t);return i.set("value",l.first.model.label),i.buttonView.bind("label").to(i,"value"),i.buttonView.set({isOn:!1,withText:!0,tooltip:a("Character categories"),class:["ck-dropdown__button_label-width_auto"]}),i.on("execute",(t=>{i.value=t.source.label})),i.delegate("execute").to(this),(0,r.addListToDropdown)(i,l),i}_getCharacterGroupListItemDefinitions(t,e){const a=new l.Collection;for(const i of e){const e={type:"button",model:new r.Model({label:i,withText:!0})};e.model.bind("isOn").to(t,"value",(t=>t===e.model.label)),a.add(e)}return a}}var n=a(62),o=a.n(n),s=a(395),h={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(s.Z,h);s.Z.locals;class d extends r.View{constructor(t){super(t),this.tiles=this.createCollection(),this.setTemplate({tag:"div",children:[{tag:"div",attributes:{class:["ck","ck-character-grid__tiles"]},children:this.tiles}],attributes:{class:["ck","ck-character-grid"]}}),this.focusTracker=new l.FocusTracker,this.keystrokes=new l.KeystrokeHandler,(0,r.addKeyboardHandlingForGrid)({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.tiles,numberOfColumns:()=>l.global.window.getComputedStyle(this.element.firstChild).getPropertyValue("grid-template-columns").split(" ").length})}createTile(t,e){const a=new r.ButtonView(this.locale);return a.set({label:t,withText:!0,class:"ck-character-grid__tile"}),a.extendTemplate({attributes:{title:e},on:{mouseover:a.bindTemplate.to("mouseover")}}),a.on("mouseover",(()=>{this.fire("tileHover",{name:e,character:t})})),a.on("execute",(()=>{this.fire("execute",{name:e,character:t})})),a}render(){super.render();for(const t of this.tiles)this.focusTracker.add(t.element);this.tiles.on("change",((t,{added:e,removed:a})=>{if(e.length>0)for(const t of e)this.focusTracker.add(t.element);if(a.length>0)for(const t of a)this.focusTracker.remove(t.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.keystrokes.destroy()}focus(){this.tiles.get(0).focus()}}var w=a(198),u={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(w.Z,u);w.Z.locals;class g extends r.View{constructor(t){super(t);const e=this.bindTemplate;this.set("character",null),this.set("name",null),this.bind("code").to(this,"character",m),this.setTemplate({tag:"div",children:[{tag:"span",attributes:{class:["ck-character-info__name"]},children:[{text:e.to("name",(t=>t||""))}]},{tag:"span",attributes:{class:["ck-character-info__code"]},children:[{text:e.to("code")}]}],attributes:{class:["ck","ck-character-info"]}})}}function m(t){if(null===t)return"";return"U+"+("0000"+t.codePointAt(0).toString(16)).slice(-4)}class p extends r.View{constructor(t,e,a,i){super(t),this.items=this.createCollection(),this.focusTracker=new l.FocusTracker,this.keystrokes=new l.KeystrokeHandler,this._focusCycler=new r.FocusCycler({focusables:this.items,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.navigationView=e,this.gridView=a,this.infoView=i,this.setTemplate({tag:"div",children:[this.navigationView,this.gridView,this.infoView]}),this.items.add(this.navigationView.groupDropdownView.buttonView),this.items.add(this.gridView)}render(){super.render(),this.focusTracker.add(this.navigationView.groupDropdownView.buttonView.element),this.focusTracker.add(this.gridView.element),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this.navigationView.focus()}}var L=a(454),f={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};o()(L.Z,f);L.Z.locals;const k="All";class b extends t.Plugin{static get requires(){return[e.Typing]}static get pluginName(){return"SpecialCharacters"}constructor(t){super(t),this._characters=new Map,this._groups=new Map}init(){const t=this.editor,e=t.t,a=t.commands.get("input");t.ui.componentFactory.add("specialCharacters",(i=>{const l=(0,r.createDropdown)(i);let c;return l.buttonView.set({label:e("Special characters"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M10 2.5a7.47 7.47 0 0 1 4.231 1.31 7.268 7.268 0 0 1 2.703 3.454 7.128 7.128 0 0 1 .199 4.353c-.39 1.436-1.475 2.72-2.633 3.677h2.013c0-.226.092-.443.254-.603a.876.876 0 0 1 1.229 0c.163.16.254.377.254.603v.853c0 .209-.078.41-.22.567a.873.873 0 0 1-.547.28l-.101.006h-4.695a.517.517 0 0 1-.516-.518v-1.265c0-.21.128-.398.317-.489a5.601 5.601 0 0 0 2.492-2.371 5.459 5.459 0 0 0 .552-3.693 5.53 5.53 0 0 0-1.955-3.2A5.71 5.71 0 0 0 10 4.206 5.708 5.708 0 0 0 6.419 5.46 5.527 5.527 0 0 0 4.46 8.663a5.457 5.457 0 0 0 .554 3.695 5.6 5.6 0 0 0 2.497 2.37.55.55 0 0 1 .317.49v1.264c0 .286-.23.518-.516.518H2.618a.877.877 0 0 1-.614-.25.845.845 0 0 1-.254-.603v-.853c0-.226.091-.443.254-.603a.876.876 0 0 1 1.228 0c.163.16.255.377.255.603h1.925c-1.158-.958-2.155-2.241-2.545-3.678a7.128 7.128 0 0 1 .199-4.352 7.268 7.268 0 0 1 2.703-3.455A7.475 7.475 0 0 1 10 2.5z"/></svg>',tooltip:!0}),l.bind("isEnabled").to(a),l.on("execute",((e,a)=>{t.execute("input",{text:a.character}),t.editing.view.focus()})),l.on("change:isOpen",(()=>{if(!c){c=this._createDropdownPanelContent(i,l);const t=new p(i,c.navigationView,c.gridView,c.infoView);l.panelView.children.add(t)}c.infoView.set({character:null,name:null})})),l}))}addItems(t,e){if(t===k)throw new l.CKEditorError('special-character-invalid-group-name: The name "All" is reserved and cannot be used.');const a=this._getGroup(t);for(const t of e)a.add(t.title),this._characters.set(t.title,t.character)}getGroups(){return this._groups.keys()}getCharactersForGroup(t){return t===k?new Set(this._characters.keys()):this._groups.get(t)}getCharacter(t){return this._characters.get(t)}_getGroup(t){return this._groups.has(t)||this._groups.set(t,new Set),this._groups.get(t)}_updateGrid(t,e){e.tiles.clear();const a=this.getCharactersForGroup(t);for(const t of a){const a=this.getCharacter(t);e.tiles.add(e.createTile(a,t))}}_createDropdownPanelContent(t,e){const a=[...this.getGroups()];a.unshift(k);const i=new c(t,a),r=new d(t),l=new g(t);return r.delegate("execute").to(e),r.on("tileHover",((t,e)=>{l.set(e)})),i.on("execute",(()=>{this._updateGrid(i.currentGroupName,r)})),this._updateGrid(i.currentGroupName,r),{navigationView:i,gridView:r,infoView:l}}}class v extends t.Plugin{static get pluginName(){return"SpecialCharactersArrows"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Arrows",[{title:e("leftwards double arrow"),character:"⇐"},{title:e("rightwards double arrow"),character:"⇒"},{title:e("upwards double arrow"),character:"⇑"},{title:e("downwards double arrow"),character:"⇓"},{title:e("leftwards dashed arrow"),character:"⇠"},{title:e("rightwards dashed arrow"),character:"⇢"},{title:e("upwards dashed arrow"),character:"⇡"},{title:e("downwards dashed arrow"),character:"⇣"},{title:e("leftwards arrow to bar"),character:"⇤"},{title:e("rightwards arrow to bar"),character:"⇥"},{title:e("upwards arrow to bar"),character:"⤒"},{title:e("downwards arrow to bar"),character:"⤓"},{title:e("up down arrow with base"),character:"↨"},{title:e("back with leftwards arrow above"),character:"🔙"},{title:e("end with leftwards arrow above"),character:"🔚"},{title:e("on with exclamation mark with left right arrow above"),character:"🔛"},{title:e("soon with rightwards arrow above"),character:"🔜"},{title:e("top with upwards arrow above"),character:"🔝"}])}}class x extends t.Plugin{static get pluginName(){return"SpecialCharactersText"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Text",[{character:"‹",title:e("Single left-pointing angle quotation mark")},{character:"›",title:e("Single right-pointing angle quotation mark")},{character:"«",title:e("Left-pointing double angle quotation mark")},{character:"»",title:e("Right-pointing double angle quotation mark")},{character:"‘",title:e("Left single quotation mark")},{character:"’",title:e("Right single quotation mark")},{character:"“",title:e("Left double quotation mark")},{character:"”",title:e("Right double quotation mark")},{character:"‚",title:e("Single low-9 quotation mark")},{character:"„",title:e("Double low-9 quotation mark")},{character:"¡",title:e("Inverted exclamation mark")},{character:"¿",title:e("Inverted question mark")},{character:"‥",title:e("Two dot leader")},{character:"…",title:e("Horizontal ellipsis")},{character:"‡",title:e("Double dagger")},{character:"‰",title:e("Per mille sign")},{character:"‱",title:e("Per ten thousand sign")},{character:"‼",title:e("Double exclamation mark")},{character:"⁈",title:e("Question exclamation mark")},{character:"⁉",title:e("Exclamation question mark")},{character:"⁇",title:e("Double question mark")},{character:"©",title:e("Copyright sign")},{character:"®",title:e("Registered sign")},{character:"™",title:e("Trade mark sign")},{character:"§",title:e("Section sign")},{character:"¶",title:e("Paragraph sign")},{character:"⁋",title:e("Reversed paragraph sign")}])}}class y extends t.Plugin{static get pluginName(){return"SpecialCharactersMathematical"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Mathematical",[{character:"<",title:e("Less-than sign")},{character:">",title:e("Greater-than sign")},{character:"≤",title:e("Less-than or equal to")},{character:"≥",title:e("Greater-than or equal to")},{character:"–",title:e("En dash")},{character:"—",title:e("Em dash")},{character:"¯",title:e("Macron")},{character:"‾",title:e("Overline")},{character:"°",title:e("Degree sign")},{character:"−",title:e("Minus sign")},{character:"±",title:e("Plus-minus sign")},{character:"÷",title:e("Division sign")},{character:"⁄",title:e("Fraction slash")},{character:"×",title:e("Multiplication sign")},{character:"ƒ",title:e("Latin small letter f with hook")},{character:"∫",title:e("Integral")},{character:"∑",title:e("N-ary summation")},{character:"∞",title:e("Infinity")},{character:"√",title:e("Square root")},{character:"∼",title:e("Tilde operator")},{character:"≅",title:e("Approximately equal to")},{character:"≈",title:e("Almost equal to")},{character:"≠",title:e("Not equal to")},{character:"≡",title:e("Identical to")},{character:"∈",title:e("Element of")},{character:"∉",title:e("Not an element of")},{character:"∋",title:e("Contains as member")},{character:"∏",title:e("N-ary product")},{character:"∧",title:e("Logical and")},{character:"∨",title:e("Logical or")},{character:"¬",title:e("Not sign")},{character:"∩",title:e("Intersection")},{character:"∪",title:e("Union")},{character:"∂",title:e("Partial differential")},{character:"∀",title:e("For all")},{character:"∃",title:e("There exists")},{character:"∅",title:e("Empty set")},{character:"∇",title:e("Nabla")},{character:"∗",title:e("Asterisk operator")},{character:"∝",title:e("Proportional to")},{character:"∠",title:e("Angle")},{character:"¼",title:e("Vulgar fraction one quarter")},{character:"½",title:e("Vulgar fraction one half")},{character:"¾",title:e("Vulgar fraction three quarters")}])}}class C extends t.Plugin{static get pluginName(){return"SpecialCharactersLatin"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Latin",[{character:"Ā",title:e("Latin capital letter a with macron")},{character:"ā",title:e("Latin small letter a with macron")},{character:"Ă",title:e("Latin capital letter a with breve")},{character:"ă",title:e("Latin small letter a with breve")},{character:"Ą",title:e("Latin capital letter a with ogonek")},{character:"ą",title:e("Latin small letter a with ogonek")},{character:"Ć",title:e("Latin capital letter c with acute")},{character:"ć",title:e("Latin small letter c with acute")},{character:"Ĉ",title:e("Latin capital letter c with circumflex")},{character:"ĉ",title:e("Latin small letter c with circumflex")},{character:"Ċ",title:e("Latin capital letter c with dot above")},{character:"ċ",title:e("Latin small letter c with dot above")},{character:"Č",title:e("Latin capital letter c with caron")},{character:"č",title:e("Latin small letter c with caron")},{character:"Ď",title:e("Latin capital letter d with caron")},{character:"ď",title:e("Latin small letter d with caron")},{character:"Đ",title:e("Latin capital letter d with stroke")},{character:"đ",title:e("Latin small letter d with stroke")},{character:"Ē",title:e("Latin capital letter e with macron")},{character:"ē",title:e("Latin small letter e with macron")},{character:"Ĕ",title:e("Latin capital letter e with breve")},{character:"ĕ",title:e("Latin small letter e with breve")},{character:"Ė",title:e("Latin capital letter e with dot above")},{character:"ė",title:e("Latin small letter e with dot above")},{character:"Ę",title:e("Latin capital letter e with ogonek")},{character:"ę",title:e("Latin small letter e with ogonek")},{character:"Ě",title:e("Latin capital letter e with caron")},{character:"ě",title:e("Latin small letter e with caron")},{character:"Ĝ",title:e("Latin capital letter g with circumflex")},{character:"ĝ",title:e("Latin small letter g with circumflex")},{character:"Ğ",title:e("Latin capital letter g with breve")},{character:"ğ",title:e("Latin small letter g with breve")},{character:"Ġ",title:e("Latin capital letter g with dot above")},{character:"ġ",title:e("Latin small letter g with dot above")},{character:"Ģ",title:e("Latin capital letter g with cedilla")},{character:"ģ",title:e("Latin small letter g with cedilla")},{character:"Ĥ",title:e("Latin capital letter h with circumflex")},{character:"ĥ",title:e("Latin small letter h with circumflex")},{character:"Ħ",title:e("Latin capital letter h with stroke")},{character:"ħ",title:e("Latin small letter h with stroke")},{character:"Ĩ",title:e("Latin capital letter i with tilde")},{character:"ĩ",title:e("Latin small letter i with tilde")},{character:"Ī",title:e("Latin capital letter i with macron")},{character:"ī",title:e("Latin small letter i with macron")},{character:"Ĭ",title:e("Latin capital letter i with breve")},{character:"ĭ",title:e("Latin small letter i with breve")},{character:"Į",title:e("Latin capital letter i with ogonek")},{character:"į",title:e("Latin small letter i with ogonek")},{character:"İ",title:e("Latin capital letter i with dot above")},{character:"ı",title:e("Latin small letter dotless i")},{character:"IJ",title:e("Latin capital ligature ij")},{character:"ij",title:e("Latin small ligature ij")},{character:"Ĵ",title:e("Latin capital letter j with circumflex")},{character:"ĵ",title:e("Latin small letter j with circumflex")},{character:"Ķ",title:e("Latin capital letter k with cedilla")},{character:"ķ",title:e("Latin small letter k with cedilla")},{character:"ĸ",title:e("Latin small letter kra")},{character:"Ĺ",title:e("Latin capital letter l with acute")},{character:"ĺ",title:e("Latin small letter l with acute")},{character:"Ļ",title:e("Latin capital letter l with cedilla")},{character:"ļ",title:e("Latin small letter l with cedilla")},{character:"Ľ",title:e("Latin capital letter l with caron")},{character:"ľ",title:e("Latin small letter l with caron")},{character:"Ŀ",title:e("Latin capital letter l with middle dot")},{character:"ŀ",title:e("Latin small letter l with middle dot")},{character:"Ł",title:e("Latin capital letter l with stroke")},{character:"ł",title:e("Latin small letter l with stroke")},{character:"Ń",title:e("Latin capital letter n with acute")},{character:"ń",title:e("Latin small letter n with acute")},{character:"Ņ",title:e("Latin capital letter n with cedilla")},{character:"ņ",title:e("Latin small letter n with cedilla")},{character:"Ň",title:e("Latin capital letter n with caron")},{character:"ň",title:e("Latin small letter n with caron")},{character:"ʼn",title:e("Latin small letter n preceded by apostrophe")},{character:"Ŋ",title:e("Latin capital letter eng")},{character:"ŋ",title:e("Latin small letter eng")},{character:"Ō",title:e("Latin capital letter o with macron")},{character:"ō",title:e("Latin small letter o with macron")},{character:"Ŏ",title:e("Latin capital letter o with breve")},{character:"ŏ",title:e("Latin small letter o with breve")},{character:"Ő",title:e("Latin capital letter o with double acute")},{character:"ő",title:e("Latin small letter o with double acute")},{character:"Œ",title:e("Latin capital ligature oe")},{character:"œ",title:e("Latin small ligature oe")},{character:"Ŕ",title:e("Latin capital letter r with acute")},{character:"ŕ",title:e("Latin small letter r with acute")},{character:"Ŗ",title:e("Latin capital letter r with cedilla")},{character:"ŗ",title:e("Latin small letter r with cedilla")},{character:"Ř",title:e("Latin capital letter r with caron")},{character:"ř",title:e("Latin small letter r with caron")},{character:"Ś",title:e("Latin capital letter s with acute")},{character:"ś",title:e("Latin small letter s with acute")},{character:"Ŝ",title:e("Latin capital letter s with circumflex")},{character:"ŝ",title:e("Latin small letter s with circumflex")},{character:"Ş",title:e("Latin capital letter s with cedilla")},{character:"ş",title:e("Latin small letter s with cedilla")},{character:"Š",title:e("Latin capital letter s with caron")},{character:"š",title:e("Latin small letter s with caron")},{character:"Ţ",title:e("Latin capital letter t with cedilla")},{character:"ţ",title:e("Latin small letter t with cedilla")},{character:"Ť",title:e("Latin capital letter t with caron")},{character:"ť",title:e("Latin small letter t with caron")},{character:"Ŧ",title:e("Latin capital letter t with stroke")},{character:"ŧ",title:e("Latin small letter t with stroke")},{character:"Ũ",title:e("Latin capital letter u with tilde")},{character:"ũ",title:e("Latin small letter u with tilde")},{character:"Ū",title:e("Latin capital letter u with macron")},{character:"ū",title:e("Latin small letter u with macron")},{character:"Ŭ",title:e("Latin capital letter u with breve")},{character:"ŭ",title:e("Latin small letter u with breve")},{character:"Ů",title:e("Latin capital letter u with ring above")},{character:"ů",title:e("Latin small letter u with ring above")},{character:"Ű",title:e("Latin capital letter u with double acute")},{character:"ű",title:e("Latin small letter u with double acute")},{character:"Ų",title:e("Latin capital letter u with ogonek")},{character:"ų",title:e("Latin small letter u with ogonek")},{character:"Ŵ",title:e("Latin capital letter w with circumflex")},{character:"ŵ",title:e("Latin small letter w with circumflex")},{character:"Ŷ",title:e("Latin capital letter y with circumflex")},{character:"ŷ",title:e("Latin small letter y with circumflex")},{character:"Ÿ",title:e("Latin capital letter y with diaeresis")},{character:"Ź",title:e("Latin capital letter z with acute")},{character:"ź",title:e("Latin small letter z with acute")},{character:"Ż",title:e("Latin capital letter z with dot above")},{character:"ż",title:e("Latin small letter z with dot above")},{character:"Ž",title:e("Latin capital letter z with caron")},{character:"ž",title:e("Latin small letter z with caron")},{character:"ſ",title:e("Latin small letter long s")}])}}class T extends t.Plugin{static get pluginName(){return"SpecialCharactersCurrency"}init(){const t=this.editor,e=t.t;t.plugins.get("SpecialCharacters").addItems("Currency",[{character:"$",title:e("Dollar sign")},{character:"€",title:e("Euro sign")},{character:"¥",title:e("Yen sign")},{character:"£",title:e("Pound sign")},{character:"¢",title:e("Cent sign")},{character:"₠",title:e("Euro-currency sign")},{character:"₡",title:e("Colon sign")},{character:"₢",title:e("Cruzeiro sign")},{character:"₣",title:e("French franc sign")},{character:"₤",title:e("Lira sign")},{character:"¤",title:e("Currency sign")},{character:"₿",title:e("Bitcoin sign")},{character:"₥",title:e("Mill sign")},{character:"₦",title:e("Naira sign")},{character:"₧",title:e("Peseta sign")},{character:"₨",title:e("Rupee sign")},{character:"₩",title:e("Won sign")},{character:"₪",title:e("New sheqel sign")},{character:"₫",title:e("Dong sign")},{character:"₭",title:e("Kip sign")},{character:"₮",title:e("Tugrik sign")},{character:"₯",title:e("Drachma sign")},{character:"₰",title:e("German penny sign")},{character:"₱",title:e("Peso sign")},{character:"₲",title:e("Guarani sign")},{character:"₳",title:e("Austral sign")},{character:"₴",title:e("Hryvnia sign")},{character:"₵",title:e("Cedi sign")},{character:"₶",title:e("Livre tournois sign")},{character:"₷",title:e("Spesmilo sign")},{character:"₸",title:e("Tenge sign")},{character:"₹",title:e("Indian rupee sign")},{character:"₺",title:e("Turkish lira sign")},{character:"₻",title:e("Nordic mark sign")},{character:"₼",title:e("Manat sign")},{character:"₽",title:e("Ruble sign")}])}}class q extends t.Plugin{static get requires(){return[T,x,y,v,C]}}})(),(window.CKEditor5=window.CKEditor5||{}).specialCharacters=i})(); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/special-characters/translations/ur.js b/web/core/assets/vendor/ckeditor5/special-characters/translations/ur.js new file mode 100644 index 0000000000000000000000000000000000000000..f449eade73619f05689ab8f1e5f0166bf205299c --- /dev/null +++ b/web/core/assets/vendor/ckeditor5/special-characters/translations/ur.js @@ -0,0 +1 @@ +!function(t){const a=t.ur=t.ur||{};a.dictionary=Object.assign(a.dictionary||{},{"Almost equal to":"",Angle:"","Approximately equal to":"","Asterisk operator":"","Austral sign":"","back with leftwards arrow above":"","Bitcoin sign":"","Cedi sign":"","Cent sign":"","Character categories":"","Colon sign":"","Contains as member":"","Copyright sign":"","Cruzeiro sign":"","Currency sign":"","Degree sign":"","Division sign":"","Dollar sign":"","Dong sign":"","Double dagger":"","Double exclamation mark":"","Double low-9 quotation mark":"","Double question mark":"","downwards arrow to bar":"","downwards dashed arrow":"","downwards double arrow":"","Drachma sign":"علامتِ دراچمہ ","Element of":"","Em dash":"","Empty set":"","En dash":"","end with leftwards arrow above":"","Euro sign":"","Euro-currency sign":"","Exclamation question mark":"","For all":"","Fraction slash":"","French franc sign":"","German penny sign":"علامت جرمن پینی","Greater-than or equal to":"","Greater-than sign":"","Guarani sign":"علامتِ گوارانی","Horizontal ellipsis":"","Hryvnia sign":"","Identical to":"","Indian rupee sign":"انڈین روپیہ کی علامت",Infinity:"",Integral:"",Intersection:"","Inverted exclamation mark":"","Inverted question mark":"","Kip sign":"","Latin capital letter a with breve":"","Latin capital letter a with macron":"","Latin capital letter a with ogonek":"","Latin capital letter c with acute":"","Latin capital letter c with caron":"","Latin capital letter c with circumflex":"","Latin capital letter c with dot above":"","Latin capital letter d with caron":"","Latin capital letter d with stroke":"","Latin capital letter e with breve":"","Latin capital letter e with caron":"","Latin capital letter e with dot above":"","Latin capital letter e with macron":"","Latin capital letter e with ogonek":"","Latin capital letter eng":"","Latin capital letter g with breve":"","Latin capital letter g with cedilla":"","Latin capital letter g with circumflex":"","Latin capital letter g with dot above":"","Latin capital letter h with circumflex":"","Latin capital letter h with stroke":"","Latin capital letter i with breve":"","Latin capital letter i with dot above":"","Latin capital letter i with macron":"","Latin capital letter i with ogonek":"","Latin capital letter i with tilde":"","Latin capital letter j with circumflex":"","Latin capital letter k with cedilla":"","Latin capital letter l with acute":"","Latin capital letter l with caron":"","Latin capital letter l with cedilla":"","Latin capital letter l with middle dot":"","Latin capital letter l with stroke":"","Latin capital letter n with acute":"","Latin capital letter n with caron":"","Latin capital letter n with cedilla":"","Latin capital letter o with breve":"","Latin capital letter o with double acute":"","Latin capital letter o with macron":"","Latin capital letter r with acute":"","Latin capital letter r with caron":"","Latin capital letter r with cedilla":"","Latin capital letter s with acute":"","Latin capital letter s with caron":"","Latin capital letter s with cedilla":"","Latin capital letter s with circumflex":"","Latin capital letter t with caron":"","Latin capital letter t with cedilla":"","Latin capital letter t with stroke":"","Latin capital letter u with breve":"","Latin capital letter u with double acute":"","Latin capital letter u with macron":"","Latin capital letter u with ogonek":"","Latin capital letter u with ring above":"","Latin capital letter u with tilde":"","Latin capital letter w with circumflex":"","Latin capital letter y with circumflex":"","Latin capital letter y with diaeresis":"","Latin capital letter z with acute":"","Latin capital letter z with caron":"","Latin capital letter z with dot above":"","Latin capital ligature ij":"","Latin capital ligature oe":"","Latin small letter a with breve":"","Latin small letter a with macron":"","Latin small letter a with ogonek":"","Latin small letter c with acute":"","Latin small letter c with caron":"","Latin small letter c with circumflex":"","Latin small letter c with dot above":"","Latin small letter d with caron":"","Latin small letter d with stroke":"","Latin small letter dotless i":"","Latin small letter e with breve":"","Latin small letter e with caron":"","Latin small letter e with dot above":"","Latin small letter e with macron":"","Latin small letter e with ogonek":"","Latin small letter eng":"","Latin small letter f with hook":"","Latin small letter g with breve":"","Latin small letter g with cedilla":"","Latin small letter g with circumflex":"","Latin small letter g with dot above":"","Latin small letter h with circumflex":"","Latin small letter h with stroke":"","Latin small letter i with breve":"","Latin small letter i with macron":"","Latin small letter i with ogonek":"","Latin small letter i with tilde":"","Latin small letter j with circumflex":"","Latin small letter k with cedilla":"","Latin small letter kra":"","Latin small letter l with acute":"","Latin small letter l with caron":"","Latin small letter l with cedilla":"","Latin small letter l with middle dot":"","Latin small letter l with stroke":"","Latin small letter long s":"","Latin small letter n preceded by apostrophe":"","Latin small letter n with acute":"","Latin small letter n with caron":"","Latin small letter n with cedilla":"","Latin small letter o with breve":"","Latin small letter o with double acute":"","Latin small letter o with macron":"","Latin small letter r with acute":"","Latin small letter r with caron":"","Latin small letter r with cedilla":"","Latin small letter s with acute":"","Latin small letter s with caron":"","Latin small letter s with cedilla":"","Latin small letter s with circumflex":"","Latin small letter t with caron":"","Latin small letter t with cedilla":"","Latin small letter t with stroke":"","Latin small letter u with breve":"","Latin small letter u with double acute":"","Latin small letter u with macron":"","Latin small letter u with ogonek":"","Latin small letter u with ring above":"","Latin small letter u with tilde":"","Latin small letter w with circumflex":"","Latin small letter y with circumflex":"","Latin small letter z with acute":"","Latin small letter z with caron":"","Latin small letter z with dot above":"","Latin small ligature ij":"","Latin small ligature oe":"","Left double quotation mark":"","Left single quotation mark":"","Left-pointing double angle quotation mark":"","leftwards arrow to bar":"","leftwards dashed arrow":"","leftwards double arrow":"","Less-than or equal to":"","Less-than sign":"","Lira sign":"","Livre tournois sign":"","Logical and":"","Logical or":"",Macron:"","Manat sign":"","Mill sign":"","Minus sign":"","Multiplication sign":"","N-ary product":"","N-ary summation":"",Nabla:"","Naira sign":"","New sheqel sign":"","Nordic mark sign":"","Not an element of":"","Not equal to":"","Not sign":"","on with exclamation mark with left right arrow above":"",Overline:"","Paragraph sign":"","Partial differential":"","Per mille sign":"","Per ten thousand sign":"","Peseta sign":"","Peso sign":"علامتِ پیسو","Plus-minus sign":"","Pound sign":"","Proportional to":"","Question exclamation mark":"","Registered sign":"","Reversed paragraph sign":"","Right double quotation mark":"","Right single quotation mark":"","Right-pointing double angle quotation mark":"","rightwards arrow to bar":"","rightwards dashed arrow":"","rightwards double arrow":"","Ruble sign":"","Rupee sign":"","Section sign":"","Single left-pointing angle quotation mark":"","Single low-9 quotation mark":"","Single right-pointing angle quotation mark":"","soon with rightwards arrow above":"","Special characters":"","Spesmilo sign":"","Square root":"","Tenge sign":"","There exists":"","Tilde operator":"","top with upwards arrow above":"","Trade mark sign":"","Tugrik sign":"","Turkish lira sign":"","Two dot leader":"",Union:"","up down arrow with base":"","upwards arrow to bar":"","upwards dashed arrow":"","upwards double arrow":"","Vulgar fraction one half":"","Vulgar fraction one quarter":"","Vulgar fraction three quarters":"","Won sign":"","Yen sign":""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/style/style.js b/web/core/assets/vendor/ckeditor5/style/style.js index a47a10cdcfcd7f1ecfee8588e37e82f46a7c4a2a..c04304ce7fcb6f48dd0f54442ad3f76a66527dd0 100644 --- a/web/core/assets/vendor/ckeditor5/style/style.js +++ b/web/core/assets/vendor/ckeditor5/style/style.js @@ -2,4 +2,4 @@ /*! * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md. - */(()=>{var e={529:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var s=n(609),o=n.n(s)()((function(e){return e[1]}));o.push([e.id,".ck.ck-dropdown.ck-style-dropdown.ck-style-dropdown_multiple-active>.ck-button>.ck-button__label{font-style:italic}",""]);const i=o},945:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var s=n(609),o=n.n(s)()((function(e){return e[1]}));o.push([e.id,":root{--ck-style-panel-columns:3}.ck.ck-style-panel .ck-style-grid{display:grid;grid-template-columns:repeat(var(--ck-style-panel-columns),auto);justify-content:start}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button{display:flex;flex-direction:column;justify-content:space-between}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button .ck-style-grid__button__preview{align-content:center;align-items:center;display:flex;flex-basis:100%;flex-grow:1;justify-content:flex-start}:root{--ck-style-panel-button-width:120px;--ck-style-panel-button-height:80px;--ck-style-panel-button-shadow-color:rgba(0,0,0,.1);--ck-style-panel-button-shadow:0px 0px 6px var(--ck-style-panel-button-shadow-color);--ck-style-panel-button-label-background:#e6e6e6;--ck-style-panel-button-hover-label-background:#ccc;--ck-style-panel-button-hover-border-color:#b3b3b3}.ck.ck-style-panel .ck-style-grid{column-gap:var(--ck-spacing-large);row-gap:var(--ck-spacing-large)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button{--ck-color-button-default-hover-background:var(--ck-color-base-background);--ck-color-button-default-active-background:var(--ck-color-base-background);height:var(--ck-style-panel-button-height);padding:0;width:var(--ck-style-panel-button-width)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:not(:focus){border:1px solid var(--ck-color-base-border);box-shadow:var(--ck-style-panel-button-shadow)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button .ck-button__label{background:var(--ck-style-panel-button-label-background);flex-shrink:0;height:22px;line-height:22px;overflow:hidden;padding:0 var(--ck-spacing-medium);text-overflow:ellipsis;width:100%}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button .ck-style-grid__button__preview{border:2px solid var(--ck-color-base-background);opacity:.9;overflow:hidden;padding:var(--ck-spacing-medium);width:100%}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-disabled{--ck-color-button-default-disabled-background:var(--ck-color-base-foreground)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-disabled:not(:focus){border-color:var(--ck-style-panel-button-label-background);box-shadow:none}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-disabled .ck-button__label{background:var(--ck-style-panel-button-label-background)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-disabled .ck-style-grid__button__preview{border-color:var(--ck-color-base-foreground);filter:saturate(.3);opacity:.4}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-on{--ck-color-button-on-background:var(--ck-color-base-background);--ck-color-button-on-hover-background:var(--ck-color-base-background);--ck-color-button-on-active-background:var(--ck-color-base-background);--ck-style-panel-button-shadow-color:rgba(25,140,240,.1);border-color:var(--ck-color-base-active)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-on .ck-button__label{background:var(--ck-color-base-active);color:var(--ck-color-base-background)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-on:hover{border-color:var(--ck-color-base-active-focus)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-on:hover .ck-button__label{background:var(--ck-color-base-active-focus)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:hover:not(.ck-disabled):not(.ck-on){border-color:var(--ck-style-panel-button-hover-border-color)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:hover:not(.ck-disabled):not(.ck-on) .ck-style-grid__button__preview{opacity:1}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:hover:not(.ck-disabled):not(.ck-on) .ck-button__label{background:var(--ck-style-panel-button-hover-label-background)}",""]);const i=o},561:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var s=n(609),o=n.n(s)()((function(e){return e[1]}));o.push([e.id,".ck.ck-style-panel .ck-style-panel__style-group>.ck-label{margin:var(--ck-spacing-large) 0}.ck.ck-style-panel .ck-style-panel__style-group:first-child>.ck-label{margin-top:0}",""]);const i=o},662:(e,t,n)=>{"use strict";n.d(t,{Z:()=>i});var s=n(609),o=n.n(s)()((function(e){return e[1]}));o.push([e.id,":root{--ck-style-panel-max-height:470px}.ck.ck-style-panel{max-height:var(--ck-style-panel-max-height);overflow-y:auto;padding:var(--ck-spacing-large)}",""]);const i=o},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var n=e(t);return t[2]?"@media ".concat(t[2]," {").concat(n,"}"):n})).join("")},t.i=function(e,n,s){"string"==typeof e&&(e=[[null,e,""]]);var o={};if(s)for(var i=0;i<this.length;i++){var l=this[i][0];null!=l&&(o[l]=!0)}for(var r=0;r<e.length;r++){var c=[].concat(e[r]);s&&o[c[0]]||(n&&(c[2]?c[2]="".concat(n," and ").concat(c[2]):c[2]=n),t.push(c))}},t}},62:(e,t,n)=>{"use strict";var s,o=function(){return void 0===s&&(s=Boolean(window&&document&&document.all&&!window.atob)),s},i=function(){var e={};return function(t){if(void 0===e[t]){var n=document.querySelector(t);if(window.HTMLIFrameElement&&n instanceof window.HTMLIFrameElement)try{n=n.contentDocument.head}catch(e){n=null}e[t]=n}return e[t]}}(),l=[];function r(e){for(var t=-1,n=0;n<l.length;n++)if(l[n].identifier===e){t=n;break}return t}function c(e,t){for(var n={},s=[],o=0;o<e.length;o++){var i=e[o],c=t.base?i[0]+t.base:i[0],a=n[c]||0,d="".concat(c," ").concat(a);n[c]=a+1;var u=r(d),k={css:i[1],media:i[2],sourceMap:i[3]};-1!==u?(l[u].references++,l[u].updater(k)):l.push({identifier:d,updater:g(k,t),references:1}),s.push(d)}return s}function a(e){var t=document.createElement("style"),s=e.attributes||{};if(void 0===s.nonce){var o=n.nc;o&&(s.nonce=o)}if(Object.keys(s).forEach((function(e){t.setAttribute(e,s[e])})),"function"==typeof e.insert)e.insert(t);else{var l=i(e.insert||"head");if(!l)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");l.appendChild(t)}return t}var d,u=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function k(e,t,n,s){var o=n?"":s.media?"@media ".concat(s.media," {").concat(s.css,"}"):s.css;if(e.styleSheet)e.styleSheet.cssText=u(t,o);else{var i=document.createTextNode(o),l=e.childNodes;l[t]&&e.removeChild(l[t]),l.length?e.insertBefore(i,l[t]):e.appendChild(i)}}function b(e,t,n){var s=n.css,o=n.media,i=n.sourceMap;if(o?e.setAttribute("media",o):e.removeAttribute("media"),i&&"undefined"!=typeof btoa&&(s+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(i))))," */")),e.styleSheet)e.styleSheet.cssText=s;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(s))}}var h=null,y=0;function g(e,t){var n,s,o;if(t.singleton){var i=y++;n=h||(h=a(t)),s=k.bind(null,n,i,!1),o=k.bind(null,n,i,!0)}else n=a(t),s=b.bind(null,n,t),o=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(n)};return s(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;s(e=t)}else o()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=o());var n=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var s=0;s<n.length;s++){var o=r(n[s]);l[o].references--}for(var i=c(e,t),a=0;a<n.length;a++){var d=r(n[a]);0===l[d].references&&(l[d].updater(),l.splice(d,1))}n=i}}}},704:(e,t,n)=>{e.exports=n(79)("./src/core.js")},273:(e,t,n)=>{e.exports=n(79)("./src/ui.js")},209:(e,t,n)=>{e.exports=n(79)("./src/utils.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function n(s){var o=t[s];if(void 0!==o)return o.exports;var i=t[s]={id:s,exports:{}};return e[s](i,i.exports,n),i.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var s in t)n.o(t,s)&&!n.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.nc=void 0;var s={};(()=>{"use strict";n.r(s),n.d(s,{Style:()=>V,StyleEditing:()=>x,StyleUI:()=>w});var e=n(704),t=n(273),o=n(209);const i=["caption","colgroup","dd","dt","figcaption","legend","li","optgroup","option","rp","rt","summary","tbody","td","tfoot","th","thead","tr"];class l extends t.ButtonView{constructor(e,t){super(e),this.styleDefinition=t,this.previewView=this._createPreview(),this.set({label:t.name,class:"ck-style-grid__button",withText:!0}),this.extendTemplate({attributes:{role:"option"}}),this.children.add(this.previewView,0)}_createPreview(){const{element:e,classes:n}=this.styleDefinition,s=new t.View(this.locale);return s.setTemplate({tag:"div",attributes:{class:["ck","ck-reset_all-excluded","ck-style-grid__button__preview","ck-content"]},children:[{tag:this._isPreviewable(e)?e:"div",attributes:{class:n},children:[{text:"AaBbCcDdEeFfGgHhIiJj"}]}]}),s}_isPreviewable(e){return!i.includes(e)}}var r=n(62),c=n.n(r),a=n(945),d={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(a.Z,d);a.Z.locals;class u extends t.View{constructor(e,t){super(e),this.set("activeStyles",[]),this.set("enabledStyles",[]),this.children=this.createCollection(),this.children.delegate("execute").to(this);for(const n of t){const t=new l(e,n);this.children.add(t)}this.on("change:activeStyles",(()=>{for(const e of this.children)e.isOn=this.activeStyles.includes(e.styleDefinition.name)})),this.on("change:enabledStyles",(()=>{for(const e of this.children)e.isEnabled=this.enabledStyles.includes(e.styleDefinition.name)})),this.setTemplate({tag:"div",attributes:{class:["ck","ck-style-grid"],role:"listbox"},children:this.children})}}var k=n(561),b={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(k.Z,b);k.Z.locals;class h extends t.View{constructor(e,n,s){super(e),this.labelView=new t.LabelView(e),this.labelView.text=n,this.gridView=new u(e,s),this.setTemplate({tag:"div",attributes:{class:["ck","ck-style-panel__style-group"],role:"group","aria-labelledby":this.labelView.id},children:[this.labelView,this.gridView]})}}var y=n(662),g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(y.Z,g);y.Z.locals;class p extends t.View{constructor(e,n){super(e);const s=e.t;this.focusTracker=new o.FocusTracker,this.keystrokes=new o.KeystrokeHandler,this.children=this.createCollection(),this.blockStylesGroupView=new h(e,s("Block styles"),n.block),this.inlineStylesGroupView=new h(e,s("Text styles"),n.inline),this.set("activeStyles",[]),this.set("enabledStyles",[]),this._focusables=new t.ViewCollection,this._focusCycler=new t.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:["arrowup","arrowleft"],focusNext:["arrowdown","arrowright"]}}),n.block.length&&this.children.add(this.blockStylesGroupView),n.inline.length&&this.children.add(this.inlineStylesGroupView),this.blockStylesGroupView.gridView.delegate("execute").to(this),this.inlineStylesGroupView.gridView.delegate("execute").to(this),this.blockStylesGroupView.gridView.bind("activeStyles","enabledStyles").to(this),this.inlineStylesGroupView.gridView.bind("activeStyles","enabledStyles").to(this),this.setTemplate({tag:"div",attributes:{class:["ck","ck-style-panel"]},children:this.children})}render(){super.render();[...this.blockStylesGroupView.gridView.children,...this.inlineStylesGroupView.gridView.children].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}}function f(e,t=[]){const n={block:[],inline:[]};for(const s of t){const t=[],o=[];for(const n of e.getDefinitionsForView(s.element))n.isBlock?t.push(n.model):o.push(n.model);t.length?n.block.push({...s,modelElements:t,isBlock:!0}):n.inline.push({...s,ghsAttributes:o})}return n}var v=n(529),m={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(v.Z,m);v.Z.locals;class w extends e.Plugin{static get pluginName(){return"StyleUI"}init(){const e=this.editor,n=f(e.plugins.get("DataSchema"),e.config.get("style.definitions"));e.ui.componentFactory.add("style",(s=>{const o=s.t,i=(0,t.createDropdown)(s),l=new p(s,n),r=e.commands.get("style");return i.bind("isEnabled").to(r),i.panelView.children.add(l),i.buttonView.withText=!0,i.buttonView.bind("label").to(r,"value",(e=>e.length>1?o("Multiple styles"):1===e.length?e[0]:o("Styles"))),i.bind("class").to(r,"value",(e=>{const t=["ck-style-dropdown"];return e.length>1&&t.push("ck-style-dropdown_multiple-active"),t.join(" ")})),l.delegate("execute").to(i),i.on("execute",(t=>{e.execute("style",{styleName:t.source.styleDefinition.name}),e.editing.view.focus()})),l.bind("activeStyles").to(r,"value"),l.bind("enabledStyles").to(r,"enabledStyles"),i}))}}class _ extends e.Command{constructor(e,t){super(e),this.set("value",[]),this.set("enabledStyles",[]),this._styleDefinitions=t}refresh(){const e=this.editor.model,t=e.document.selection,n=new Set,s=new Set;for(const o of this._styleDefinitions.inline)for(const i of o.ghsAttributes){e.schema.checkAttributeInSelection(t,i)&&s.add(o.name);S(this._getValueFromFirstAllowedNode(i),o.classes)&&n.add(o.name)}const i=(0,o.first)(t.getSelectedBlocks());if(i){const t=i.getAncestors({includeSelf:!0,parentFirst:!0});for(const o of t){if(e.schema.isLimit(o))break;if(e.schema.checkAttribute(o,"htmlAttributes"))for(const e of this._styleDefinitions.block){if(!e.modelElements.includes(o.name))continue;s.add(e.name);S(o.getAttribute("htmlAttributes"),e.classes)&&n.add(e.name)}}}this.enabledStyles=Array.from(s).sort(),this.isEnabled=this.enabledStyles.length>0,this.value=this.isEnabled?Array.from(n).sort():[]}execute({styleName:e,forceValue:t}){if(!this.enabledStyles.includes(e))return void(0,o.logWarning)("style-command-executed-with-incorrect-style-name");const n=this.editor.model,s=n.document.selection,i=this.editor.plugins.get("GeneralHtmlSupport"),l=[...this._styleDefinitions.inline,...this._styleDefinitions.block].find((({name:t})=>t==e)),r=void 0===t?!this.value.includes(l.name):t;n.change((()=>{let e;e=l.isBlock?function(e,t,n){const s=new Set;for(const o of e){const e=o.getAncestors({includeSelf:!0,parentFirst:!0});for(const o of e){if(n.isLimit(o))break;if(t.includes(o.name)){s.add(o);break}}}return s}(s.getSelectedBlocks(),l.modelElements,n.schema):[s];for(const t of e)r?i.addModelHtmlClass(l.element,l.classes,t):i.removeModelHtmlClass(l.element,l.classes,t)}))}_getValueFromFirstAllowedNode(e){const t=this.editor.model,n=t.schema,s=t.document.selection;if(s.isCollapsed)return s.getAttribute(e);for(const t of s.getRanges())for(const s of t.getItems())if(n.checkAttribute(s,e))return s.getAttribute(e);return null}}function S(e,t){return!(!e||!e.classes)&&t.every((t=>e.classes.includes(t)))}class x extends e.Plugin{static get pluginName(){return"StyleEditing"}static get requires(){return["GeneralHtmlSupport"]}init(){const e=this.editor,t=f(e.plugins.get("DataSchema"),e.config.get("style.definitions"));e.commands.add("style",new _(e,t)),this._configureGHSDataFilter(t)}_configureGHSDataFilter({block:e,inline:t}){const n=this.editor.plugins.get("DataFilter");n.loadAllowedConfig(e.map(T)),n.loadAllowedConfig(t.map(T))}}function T({element:e,classes:t}){return{name:e,classes:t}}class V extends e.Plugin{static get pluginName(){return"Style"}static get requires(){return[x,w]}}})(),(window.CKEditor5=window.CKEditor5||{}).style=s})(); \ No newline at end of file + */(()=>{var e={529:(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var n=s(609),i=s.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-dropdown.ck-style-dropdown.ck-style-dropdown_multiple-active>.ck-button>.ck-button__label{font-style:italic}",""]);const l=i},945:(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var n=s(609),i=s.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-style-panel-columns:3}.ck.ck-style-panel .ck-style-grid{display:grid;grid-template-columns:repeat(var(--ck-style-panel-columns),auto);justify-content:start}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button{display:flex;flex-direction:column;justify-content:space-between}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button .ck-style-grid__button__preview{align-content:center;align-items:center;display:flex;flex-basis:100%;flex-grow:1;justify-content:flex-start}:root{--ck-style-panel-button-width:120px;--ck-style-panel-button-height:80px;--ck-style-panel-button-label-background:#f0f0f0;--ck-style-panel-button-hover-label-background:#ebebeb;--ck-style-panel-button-hover-border-color:#b3b3b3}.ck.ck-style-panel .ck-style-grid{column-gap:var(--ck-spacing-large);row-gap:var(--ck-spacing-large)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button{--ck-color-button-default-hover-background:var(--ck-color-base-background);--ck-color-button-default-active-background:var(--ck-color-base-background);height:var(--ck-style-panel-button-height);padding:0;width:var(--ck-style-panel-button-width)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:not(:focus){border:1px solid var(--ck-color-base-border)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button .ck-button__label{flex-shrink:0;height:22px;line-height:22px;overflow:hidden;padding:0 var(--ck-spacing-medium);text-overflow:ellipsis;width:100%}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button .ck-style-grid__button__preview{background:var(--ck-color-base-background);border:2px solid var(--ck-color-base-background);opacity:.9;overflow:hidden;padding:var(--ck-spacing-medium);width:100%}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-disabled{--ck-color-button-default-disabled-background:var(--ck-color-base-foreground)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-disabled:not(:focus){border-color:var(--ck-style-panel-button-label-background)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-disabled .ck-style-grid__button__preview{border-color:var(--ck-color-base-foreground);filter:saturate(.3);opacity:.4}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-on{border-color:var(--ck-color-base-active)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-on .ck-button__label{box-shadow:0 -1px 0 var(--ck-color-base-active);z-index:1}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button.ck-on:hover{border-color:var(--ck-color-base-active-focus)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:not(.ck-on) .ck-button__label{background:var(--ck-style-panel-button-label-background)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:not(.ck-on):hover .ck-button__label{background:var(--ck-style-panel-button-hover-label-background)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:hover:not(.ck-disabled):not(.ck-on){border-color:var(--ck-style-panel-button-hover-border-color)}.ck.ck-style-panel .ck-style-grid .ck-style-grid__button:hover:not(.ck-disabled):not(.ck-on) .ck-style-grid__button__preview{opacity:1}",""]);const l=i},561:(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var n=s(609),i=s.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-style-panel .ck-style-panel__style-group>.ck-label{margin:var(--ck-spacing-large) 0}.ck.ck-style-panel .ck-style-panel__style-group:first-child>.ck-label{margin-top:0}",""]);const l=i},662:(e,t,s)=>{"use strict";s.d(t,{Z:()=>l});var n=s(609),i=s.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-style-panel-max-height:470px}.ck.ck-style-panel{max-height:var(--ck-style-panel-max-height);overflow-y:auto;padding:var(--ck-spacing-large)}",""]);const l=i},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var s=e(t);return t[2]?"@media ".concat(t[2]," {").concat(s,"}"):s})).join("")},t.i=function(e,s,n){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(n)for(var l=0;l<this.length;l++){var o=this[l][0];null!=o&&(i[o]=!0)}for(var r=0;r<e.length;r++){var c=[].concat(e[r]);n&&i[c[0]]||(s&&(c[2]?c[2]="".concat(s," and ").concat(c[2]):c[2]=s),t.push(c))}},t}},62:(e,t,s)=>{"use strict";var n,i=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},l=function(){var e={};return function(t){if(void 0===e[t]){var s=document.querySelector(t);if(window.HTMLIFrameElement&&s instanceof window.HTMLIFrameElement)try{s=s.contentDocument.head}catch(e){s=null}e[t]=s}return e[t]}}(),o=[];function r(e){for(var t=-1,s=0;s<o.length;s++)if(o[s].identifier===e){t=s;break}return t}function c(e,t){for(var s={},n=[],i=0;i<e.length;i++){var l=e[i],c=t.base?l[0]+t.base:l[0],a=s[c]||0,d="".concat(c," ").concat(a);s[c]=a+1;var u=r(d),h={css:l[1],media:l[2],sourceMap:l[3]};-1!==u?(o[u].references++,o[u].updater(h)):o.push({identifier:d,updater:g(h,t),references:1}),n.push(d)}return n}function a(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var i=s.nc;i&&(n.nonce=i)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var o=l(e.insert||"head");if(!o)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");o.appendChild(t)}return t}var d,u=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function h(e,t,s,n){var i=s?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=u(t,i);else{var l=document.createTextNode(i),o=e.childNodes;o[t]&&e.removeChild(o[t]),o.length?e.insertBefore(l,o[t]):e.appendChild(l)}}function y(e,t,s){var n=s.css,i=s.media,l=s.sourceMap;if(i?e.setAttribute("media",i):e.removeAttribute("media"),l&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(l))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var k=null,b=0;function g(e,t){var s,n,i;if(t.singleton){var l=b++;s=k||(k=a(t)),n=h.bind(null,s,l,!1),i=h.bind(null,s,l,!0)}else s=a(t),n=y.bind(null,s,t),i=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(s)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else i()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=i());var s=c(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<s.length;n++){var i=r(s[n]);o[i].references--}for(var l=c(e,t),a=0;a<s.length;a++){var d=r(s[a]);0===o[d].references&&(o[d].updater(),o.splice(d,1))}s=l}}}},704:(e,t,s)=>{e.exports=s(79)("./src/core.js")},273:(e,t,s)=>{e.exports=s(79)("./src/ui.js")},209:(e,t,s)=>{e.exports=s(79)("./src/utils.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function s(n){var i=t[n];if(void 0!==i)return i.exports;var l=t[n]={id:n,exports:{}};return e[n](l,l.exports,s),l.exports}s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var n in t)s.o(t,n)&&!s.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nc=void 0;var n={};(()=>{"use strict";s.r(n),s.d(n,{Style:()=>V,StyleEditing:()=>x,StyleUI:()=>w});var e=s(704),t=s(273),i=s(209);const l=["caption","colgroup","dd","dt","figcaption","legend","li","optgroup","option","rp","rt","summary","tbody","td","tfoot","th","thead","tr"];class o extends t.ButtonView{constructor(e,t){super(e),this.styleDefinition=t,this.previewView=this._createPreview(),this.set({label:t.name,class:"ck-style-grid__button",withText:!0}),this.extendTemplate({attributes:{role:"option"}}),this.children.add(this.previewView,0)}_createPreview(){const{element:e,classes:s}=this.styleDefinition,n=new t.View(this.locale);return n.setTemplate({tag:"div",attributes:{class:["ck","ck-reset_all-excluded","ck-style-grid__button__preview","ck-content"]},children:[{tag:this._isPreviewable(e)?e:"div",attributes:{class:s},children:[{text:"AaBbCcDdEeFfGgHhIiJj"}]}]}),n}_isPreviewable(e){return!l.includes(e)}}var r=s(62),c=s.n(r),a=s(945),d={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(a.Z,d);a.Z.locals;class u extends t.View{constructor(e,t){super(e),this.set("activeStyles",[]),this.set("enabledStyles",[]),this.children=this.createCollection(),this.children.delegate("execute").to(this);for(const s of t){const t=new o(e,s);this.children.add(t)}this.on("change:activeStyles",(()=>{for(const e of this.children)e.isOn=this.activeStyles.includes(e.styleDefinition.name)})),this.on("change:enabledStyles",(()=>{for(const e of this.children)e.isEnabled=this.enabledStyles.includes(e.styleDefinition.name)})),this.setTemplate({tag:"div",attributes:{class:["ck","ck-style-grid"],role:"listbox"},children:this.children})}}var h=s(561),y={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(h.Z,y);h.Z.locals;class k extends t.View{constructor(e,s,n){super(e),this.labelView=new t.LabelView(e),this.labelView.text=s,this.gridView=new u(e,n),this.setTemplate({tag:"div",attributes:{class:["ck","ck-style-panel__style-group"],role:"group","aria-labelledby":this.labelView.id},children:[this.labelView,this.gridView]})}}var b=s(662),g={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(b.Z,g);b.Z.locals;class p extends t.View{constructor(e,s){super(e);const n=e.t;this.focusTracker=new i.FocusTracker,this.keystrokes=new i.KeystrokeHandler,this.children=this.createCollection(),this.blockStylesGroupView=new k(e,n("Block styles"),s.block),this.inlineStylesGroupView=new k(e,n("Text styles"),s.inline),this.set("activeStyles",[]),this.set("enabledStyles",[]),this._focusables=new t.ViewCollection,this._focusCycler=new t.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:["arrowup","arrowleft"],focusNext:["arrowdown","arrowright"]}}),s.block.length&&this.children.add(this.blockStylesGroupView),s.inline.length&&this.children.add(this.inlineStylesGroupView),this.blockStylesGroupView.gridView.delegate("execute").to(this),this.inlineStylesGroupView.gridView.delegate("execute").to(this),this.blockStylesGroupView.gridView.bind("activeStyles","enabledStyles").to(this),this.inlineStylesGroupView.gridView.bind("activeStyles","enabledStyles").to(this),this.setTemplate({tag:"div",attributes:{class:["ck","ck-style-panel"]},children:this.children})}render(){super.render();[...this.blockStylesGroupView.gridView.children,...this.inlineStylesGroupView.gridView.children].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}focus(){this._focusCycler.focusFirst()}focusLast(){this._focusCycler.focusLast()}}function f(e,t=[]){const s={block:[],inline:[]};for(const n of t){const t=[],i=[];for(const s of e.getDefinitionsForView(n.element))s.isBlock?t.push(s.model):i.push(s.model);t.length?s.block.push({...n,modelElements:t,isBlock:!0}):s.inline.push({...n,ghsAttributes:i})}return s}var v=s(529),m={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};c()(v.Z,m);v.Z.locals;class w extends e.Plugin{static get pluginName(){return"StyleUI"}init(){const e=this.editor,s=f(e.plugins.get("DataSchema"),e.config.get("style.definitions"));e.ui.componentFactory.add("style",(n=>{const i=n.t,l=(0,t.createDropdown)(n),o=new p(n,s),r=e.commands.get("style");return l.bind("isEnabled").to(r),l.panelView.children.add(o),l.buttonView.withText=!0,l.buttonView.bind("label").to(r,"value",(e=>e.length>1?i("Multiple styles"):1===e.length?e[0]:i("Styles"))),l.bind("class").to(r,"value",(e=>{const t=["ck-style-dropdown"];return e.length>1&&t.push("ck-style-dropdown_multiple-active"),t.join(" ")})),o.delegate("execute").to(l),l.on("execute",(t=>{e.execute("style",{styleName:t.source.styleDefinition.name}),e.editing.view.focus()})),o.bind("activeStyles").to(r,"value"),o.bind("enabledStyles").to(r,"enabledStyles"),l}))}}class _ extends e.Command{constructor(e,t){super(e),this.set("value",[]),this.set("enabledStyles",[]),this._styleDefinitions=t}refresh(){const e=this.editor.model,t=e.document.selection,s=new Set,n=new Set;for(const i of this._styleDefinitions.inline)for(const l of i.ghsAttributes){e.schema.checkAttributeInSelection(t,l)&&n.add(i.name);S(this._getValueFromFirstAllowedNode(l),i.classes)&&s.add(i.name)}const l=(0,i.first)(t.getSelectedBlocks());if(l){const t=l.getAncestors({includeSelf:!0,parentFirst:!0});for(const i of t){if(e.schema.isLimit(i))break;if(e.schema.checkAttribute(i,"htmlAttributes"))for(const e of this._styleDefinitions.block){if(!e.modelElements.includes(i.name))continue;n.add(e.name);S(i.getAttribute("htmlAttributes"),e.classes)&&s.add(e.name)}}}this.enabledStyles=Array.from(n).sort(),this.isEnabled=this.enabledStyles.length>0,this.value=this.isEnabled?Array.from(s).sort():[]}execute({styleName:e,forceValue:t}){if(!this.enabledStyles.includes(e))return void(0,i.logWarning)("style-command-executed-with-incorrect-style-name");const s=this.editor.model,n=s.document.selection,l=this.editor.plugins.get("GeneralHtmlSupport"),o=[...this._styleDefinitions.inline,...this._styleDefinitions.block].find((({name:t})=>t==e)),r=void 0===t?!this.value.includes(o.name):t;s.change((()=>{let e;e=o.isBlock?function(e,t,s){const n=new Set;for(const i of e){const e=i.getAncestors({includeSelf:!0,parentFirst:!0});for(const i of e){if(s.isLimit(i))break;if(t.includes(i.name)){n.add(i);break}}}return n}(n.getSelectedBlocks(),o.modelElements,s.schema):[n];for(const t of e)r?l.addModelHtmlClass(o.element,o.classes,t):l.removeModelHtmlClass(o.element,o.classes,t)}))}_getValueFromFirstAllowedNode(e){const t=this.editor.model,s=t.schema,n=t.document.selection;if(n.isCollapsed)return n.getAttribute(e);for(const t of n.getRanges())for(const n of t.getItems())if(s.checkAttribute(n,e))return n.getAttribute(e);return null}}function S(e,t){return!(!e||!e.classes)&&t.every((t=>e.classes.includes(t)))}class x extends e.Plugin{static get pluginName(){return"StyleEditing"}static get requires(){return["GeneralHtmlSupport"]}init(){const e=this.editor,t=f(e.plugins.get("DataSchema"),e.config.get("style.definitions"));e.commands.add("style",new _(e,t)),this._configureGHSDataFilter(t)}_configureGHSDataFilter({block:e,inline:t}){const s=this.editor.plugins.get("DataFilter");s.loadAllowedConfig(e.map(T)),s.loadAllowedConfig(t.map(T))}}function T({element:e,classes:t}){return{name:e,classes:t}}class V extends e.Plugin{static get pluginName(){return"Style"}static get requires(){return[x,w]}}})(),(window.CKEditor5=window.CKEditor5||{}).style=n})(); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/style/translations/ur.js b/web/core/assets/vendor/ckeditor5/style/translations/ur.js new file mode 100644 index 0000000000000000000000000000000000000000..e948009b101fd91bcd481cc62a967bc7793cbebe --- /dev/null +++ b/web/core/assets/vendor/ckeditor5/style/translations/ur.js @@ -0,0 +1 @@ +!function(t){const s=t.ur=t.ur||{};s.dictionary=Object.assign(s.dictionary||{},{"Block styles":"خانہ کے انداز","Multiple styles":"متعدد انداز",Styles:"انداز","Text styles":"متن کے انداز"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/table/table.js b/web/core/assets/vendor/ckeditor5/table/table.js index e6bd1cba849d6f16831fdf0aec74488ae8e22171..21589b94bed2bc45dfe36f127a429adb108e34c2 100644 --- a/web/core/assets/vendor/ckeditor5/table/table.js +++ b/web/core/assets/vendor/ckeditor5/table/table.js @@ -2,4 +2,4 @@ /*! * @license Copyright (c) 2003-2022, CKSource Holding sp. z o.o. All rights reserved. * For licensing, see LICENSE.md. - */(()=>{var e={252:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-input-color{display:flex;flex-direction:row-reverse;width:100%}.ck.ck-input-color>input.ck.ck-input-text{flex-grow:1;min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown{min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown>.ck-input-color__button .ck-dropdown__arrow{display:none}.ck.ck-input-color .ck.ck-input-color__button{display:flex}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview{overflow:hidden;position:relative}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{display:block;position:absolute}[dir=ltr] .ck.ck-input-color>.ck.ck-input-text{border-bottom-right-radius:0;border-top-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-input-text{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{padding:0}[dir=ltr] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button.ck-disabled{background:var(--ck-color-input-disabled-background)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{border-radius:0}.ck-rounded-corners .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview,.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{border:1px solid var(--ck-color-input-border);height:20px;width:20px}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{background:red;border-radius:2px;height:150%;left:50%;top:-30%;transform:rotate(45deg);transform-origin:50%;width:8%}.ck.ck-input-color .ck.ck-input-color__remove-color{border-bottom:1px solid var(--ck-color-input-border);border-bottom-left-radius:0;border-bottom-right-radius:0;padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard);width:100%}[dir=ltr] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-right-radius:0}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-left-radius:0}.ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-left:var(--ck-spacing-standard);margin-right:0}",""]);const l=i},934:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-form{padding:0 0 var(--ck-spacing-large)}.ck.ck-form:focus{outline:none}.ck.ck-form .ck.ck-input-text{min-width:100%;width:0}.ck.ck-form .ck.ck-dropdown{min-width:100%}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button:not(:focus){border:1px solid var(--ck-color-base-border)}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button .ck-button__label{width:100%}",""]);const l=i},333:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-table-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-table-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row{padding:var(--ck-spacing-standard) var(--ck-spacing-large) 0}[dir=ltr] .ck.ck-form__row>:not(.ck-label)+*{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-form__row>:not(.ck-label)+*{margin-right:var(--ck-spacing-large)}.ck.ck-form__row>.ck-label{min-width:100%;width:100%}.ck.ck-form__row.ck-table-form__action-row{margin-top:var(--ck-spacing-large)}.ck.ck-form__row.ck-table-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}",""]);const l=i},272:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck .ck-insert-table-dropdown__grid{display:flex;flex-direction:row;flex-wrap:wrap}:root{--ck-insert-table-dropdown-padding:10px;--ck-insert-table-dropdown-box-height:11px;--ck-insert-table-dropdown-box-width:12px;--ck-insert-table-dropdown-box-margin:1px}.ck .ck-insert-table-dropdown__grid{padding:var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0;width:calc(var(--ck-insert-table-dropdown-box-width)*10 + var(--ck-insert-table-dropdown-box-margin)*20 + var(--ck-insert-table-dropdown-padding)*2)}.ck .ck-insert-table-dropdown__label{text-align:center}.ck .ck-insert-table-dropdown-grid-box{border:1px solid var(--ck-color-base-border);border-radius:1px;height:var(--ck-insert-table-dropdown-box-height);margin:var(--ck-insert-table-dropdown-box-margin);width:var(--ck-insert-table-dropdown-box-width)}.ck .ck-insert-table-dropdown-grid-box.ck-on{background:var(--ck-color-focus-outer-shadow);border-color:var(--ck-color-focus-border)}",""]);const l=i},660:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck-content .table{display:table;margin:.9em auto}.ck-content .table table{border:1px double #b3b3b3;border-collapse:collapse;border-spacing:0;height:100%;width:100%}.ck-content .table table td,.ck-content .table table th{border:1px solid #bfbfbf;min-width:2em;padding:.4em}.ck-content .table table th{background:rgba(0,0,0,.05);font-weight:700}.ck-content[dir=rtl] .table th{text-align:right}.ck-content[dir=ltr] .table th{text-align:left}.ck-editor__editable .ck-table-bogus-paragraph{display:inline-block;width:100%}",""]);const l=i},665:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-table-caption-background:#f7f7f7;--ck-color-table-caption-text:#333;--ck-color-table-caption-highlighted-background:#fd0}.ck-content .table>figcaption{background-color:var(--ck-color-table-caption-background);caption-side:top;color:var(--ck-color-table-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;text-align:center;word-break:break-word}.ck.ck-editor__editable .table>figcaption.table__caption_highlighted{animation:ck-table-caption-highlight .6s ease-out}.ck.ck-editor__editable .table>figcaption.ck-placeholder:before{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}@keyframes ck-table-caption-highlight{0%{background-color:var(--ck-color-table-caption-highlighted-background)}to{background-color:var(--ck-color-table-caption-background)}}",""]);const l=i},773:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row{flex-wrap:wrap}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:first-of-type{flex-grow:0.57}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:last-of-type{flex-grow:0.43}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar .ck-button{flex-grow:1}.ck.ck-table-cell-properties-form{width:320px}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__padding-row{align-self:flex-end;padding:0;width:25%}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar{background:none;margin-top:var(--ck-spacing-standard)}",""]);const l=i},975:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-table-column-resizer-hover:var(--ck-color-base-active);--ck-table-column-resizer-width:7px;--ck-table-column-resizer-position-offset:calc(var(--ck-table-column-resizer-width)*-0.5 - 0.5px)}.ck-content .table table{overflow:hidden;table-layout:fixed}.ck-content .table td,.ck-content .table th{position:relative}.ck-content .table .table-column-resizer{bottom:-999999px;cursor:col-resize;position:absolute;right:var(--ck-table-column-resizer-position-offset);top:-999999px;user-select:none;width:var(--ck-table-column-resizer-width);z-index:var(--ck-z-default)}.ck-content .table[draggable] .table-column-resizer{display:none}.ck-content .table .table-column-resizer:hover,.ck-content .table .table-column-resizer__active{background-color:var(--ck-color-table-column-resizer-hover);opacity:.25}.ck-content[dir=rtl] .table .table-column-resizer{left:var(--ck-table-column-resizer-position-offset);right:unset}.ck-content.ck-read-only .table .table-column-resizer{display:none}",""]);const l=i},482:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-table-focused-cell-background:rgba(158,207,250,.3)}.ck-widget.table td.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table td.ck-editor__nested-editable:focus,.ck-widget.table th.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table th.ck-editor__nested-editable:focus{background:var(--ck-color-table-focused-cell-background);border-style:none;outline:1px solid var(--ck-color-focus-border);outline-offset:-1px}",""]);const l=i},686:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,'.ck.ck-table-form .ck-form__row.ck-table-form__background-row,.ck.ck-table-form .ck-form__row.ck-table-form__border-row{flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{align-items:center;flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view{align-items:center;display:flex;flex-direction:column-reverse}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view .ck.ck-dropdown,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{flex-grow:0}.ck.ck-table-form .ck.ck-labeled-field-view{position:relative}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{bottom:calc(var(--ck-table-properties-error-arrow-size)*-1);left:50%;position:absolute;transform:translate(-50%,100%);z-index:1}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{content:"";left:50%;position:absolute;top:calc(var(--ck-table-properties-error-arrow-size)*-1);transform:translateX(-50%)}:root{--ck-table-properties-error-arrow-size:6px;--ck-table-properties-min-error-width:150px}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-labeled-field-view>.ck-label{font-size:var(--ck-font-size-tiny);text-align:center}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-style,.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-width{max-width:80px;min-width:80px;width:80px}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{padding:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__height,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__width{margin:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{align-self:flex-end;display:inline-block;height:var(--ck-ui-component-min-height);line-height:var(--ck-ui-component-min-height);margin:0 var(--ck-spacing-small)}.ck.ck-table-form .ck.ck-labeled-field-view{padding-top:var(--ck-spacing-standard)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{border-radius:0}.ck-rounded-corners .ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status,.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{background:var(--ck-color-base-error);color:var(--ck-color-base-background);min-width:var(--ck-table-properties-min-error-width);padding:var(--ck-spacing-small) var(--ck-spacing-medium);text-align:center}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{border-color:transparent transparent var(--ck-color-base-error) transparent;border-style:solid;border-width:0 var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{animation:ck-table-form-labeled-view-status-appear .15s ease both}.ck.ck-table-form .ck.ck-labeled-field-view .ck-input.ck-error:not(:focus)+.ck.ck-labeled-field-view__status{display:none}@keyframes ck-table-form-labeled-view-status-appear{0%{opacity:0}to{opacity:1}}',""]);const l=i},99:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-content:baseline;flex-basis:0;flex-wrap:wrap}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items{flex-wrap:nowrap}.ck.ck-table-properties-form{width:320px}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-self:flex-end;padding:0}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar{background:none;margin-top:var(--ck-spacing-standard)}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items>*{width:40px}",""]);const l=i},475:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,':root{--ck-table-selected-cell-background:rgba(158,207,250,.3)}.ck.ck-editor__editable .table table td.ck-editor__editable_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected{box-shadow:unset;caret-color:transparent;outline:unset;position:relative}.ck.ck-editor__editable .table table td.ck-editor__editable_selected:after,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:after{background-color:var(--ck-table-selected-cell-background);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.ck.ck-editor__editable .table table td.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table td.ck-editor__editable_selected:focus,.ck.ck-editor__editable .table table th.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:focus{background-color:transparent}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget{outline:unset}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget>.ck-widget__selection-handle,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget>.ck-widget__selection-handle{display:none}',""]);const l=i},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var o=e(t);return t[2]?"@media ".concat(t[2]," {").concat(o,"}"):o})).join("")},t.i=function(e,o,n){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(n)for(var l=0;l<this.length;l++){var r=this[l][0];null!=r&&(i[r]=!0)}for(var s=0;s<e.length;s++){var a=[].concat(e[s]);n&&i[a[0]]||(o&&(a[2]?a[2]="".concat(o," and ").concat(a[2]):a[2]=o),t.push(a))}},t}},62:(e,t,o)=>{"use strict";var n,i=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},l=function(){var e={};return function(t){if(void 0===e[t]){var o=document.querySelector(t);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(e){o=null}e[t]=o}return e[t]}}(),r=[];function s(e){for(var t=-1,o=0;o<r.length;o++)if(r[o].identifier===e){t=o;break}return t}function a(e,t){for(var o={},n=[],i=0;i<e.length;i++){var l=e[i],a=t.base?l[0]+t.base:l[0],c=o[a]||0,d="".concat(a," ").concat(c);o[a]=c+1;var u=s(d),h={css:l[1],media:l[2],sourceMap:l[3]};-1!==u?(r[u].references++,r[u].updater(h)):r.push({identifier:d,updater:p(h,t),references:1}),n.push(d)}return n}function c(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var i=o.nc;i&&(n.nonce=i)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var r=l(e.insert||"head");if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(t)}return t}var d,u=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function h(e,t,o,n){var i=o?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=u(t,i);else{var l=document.createTextNode(i),r=e.childNodes;r[t]&&e.removeChild(r[t]),r.length?e.insertBefore(l,r[t]):e.appendChild(l)}}function b(e,t,o){var n=o.css,i=o.media,l=o.sourceMap;if(i?e.setAttribute("media",i):e.removeAttribute("media"),l&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(l))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var m=null,g=0;function p(e,t){var o,n,i;if(t.singleton){var l=g++;o=m||(m=c(t)),n=h.bind(null,o,l,!1),i=h.bind(null,o,l,!0)}else o=c(t),n=b.bind(null,o,t),i=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(o)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else i()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=i());var o=a(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<o.length;n++){var i=s(o[n]);r[i].references--}for(var l=a(e,t),c=0;c<o.length;c++){var d=s(o[c]);0===r[d].references&&(r[d].updater(),r.splice(d,1))}o=l}}}},704:(e,t,o)=>{e.exports=o(79)("./src/core.js")},492:(e,t,o)=>{e.exports=o(79)("./src/engine.js")},273:(e,t,o)=>{e.exports=o(79)("./src/ui.js")},209:(e,t,o)=>{e.exports=o(79)("./src/utils.js")},995:(e,t,o)=>{e.exports=o(79)("./src/widget.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function o(n){var i=t[n];if(void 0!==i)return i.exports;var l=t[n]={id:n,exports:{}};return e[n](l,l.exports,o),l.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nc=void 0;var n={};(()=>{"use strict";o.r(n),o.d(n,{PlainTableOutput:()=>ze,Table:()=>Be,TableCaption:()=>Xo,TableCaptionEditing:()=>Ko,TableCaptionUI:()=>qo,TableCellProperties:()=>ko,TableCellPropertiesEditing:()=>wo,TableCellPropertiesUI:()=>Qt,TableClipboard:()=>ve,TableColumnResize:()=>fn,TableColumnResizeEditing:()=>mn,TableEditing:()=>ce,TableKeyboard:()=>xe,TableMouse:()=>Re,TableProperties:()=>Mo,TablePropertiesEditing:()=>Po,TablePropertiesUI:()=>Do,TableSelection:()=>ke,TableToolbar:()=>De,TableUI:()=>pe,TableUtils:()=>F});var e=o(704),t=o(995);function i(e,t,o,n,i=1){t>i?n.setAttribute(e,t,o):n.removeAttribute(e,o)}function l(e,t,o={}){const n=e.createElement("tableCell",o);return e.insertElement("paragraph",n),e.insert(n,t),n}function r(e,t){const o=t.parent.parent,n=parseInt(o.getAttribute("headingColumns")||0),{column:i}=e.getCellLocation(t);return!!n&&i<n}var s=o(209);function a(){return e=>{e.on("element:table",((e,t,o)=>{const n=t.viewItem;if(!o.consumable.test(n,{name:!0}))return;const{rows:i,headingRows:r,headingColumns:s}=function(e){const t={headingRows:0,headingColumns:0},o=[],n=[];let i;for(const l of Array.from(e.getChildren()))if("tbody"===l.name||"thead"===l.name||"tfoot"===l.name){"thead"!==l.name||i||(i=l);const e=Array.from(l.getChildren()).filter((e=>e.is("element","tr")));for(const l of e)if("thead"===l.parent.name&&l.parent===i)t.headingRows++,o.push(l);else{n.push(l);const e=d(l);e>t.headingColumns&&(t.headingColumns=e)}}return t.rows=[...o,...n],t}(n),a={};s&&(a.headingColumns=s),r&&(a.headingRows=r);const c=o.writer.createElement("table",a);if(o.safeInsert(c,t.modelCursor)){if(o.consumable.consume(n,{name:!0}),i.forEach((e=>o.convertItem(e,o.writer.createPositionAt(c,"end")))),o.convertChildren(n,o.writer.createPositionAt(c,"end")),c.isEmpty){const e=o.writer.createElement("tableRow");o.writer.insert(e,o.writer.createPositionAt(c,"end")),l(o.writer,o.writer.createPositionAt(e,"end"))}o.updateConversionResult(c,t)}}))}}function c(e){return t=>{t.on(`element:${e}`,((e,t,o)=>{if(t.modelRange&&t.viewItem.isEmpty){const e=t.modelRange.start.nodeAfter,n=o.writer.createPositionAt(e,0);o.writer.insertElement("paragraph",n)}}),{priority:"low"})}}function d(e){let t=0,o=0;const n=Array.from(e.getChildren()).filter((e=>"th"===e.name||"td"===e.name));for(;o<n.length&&"th"===n[o].name;){const e=n[o];t+=parseInt(e.getAttribute("colspan")||1),o++}return t}class u{constructor(e,t={}){this._table=e,this._startRow=void 0!==t.row?t.row:t.startRow||0,this._endRow=void 0!==t.row?t.row:t.endRow,this._startColumn=void 0!==t.column?t.column:t.startColumn||0,this._endColumn=void 0!==t.column?t.column:t.endColumn,this._includeAllSlots=!!t.includeAllSlots,this._skipRows=new Set,this._row=0,this._rowIndex=0,this._column=0,this._cellIndex=0,this._spannedCells=new Map,this._nextCellAtColumn=-1}[Symbol.iterator](){return this}next(){const e=this._table.getChild(this._rowIndex);if(!e||this._isOverEndRow())return{done:!0};if(!e.is("element","tableRow"))return this._rowIndex++,this.next();if(this._isOverEndColumn())return this._advanceToNextRow();let t=null;const o=this._getSpanned();if(o)this._includeAllSlots&&!this._shouldSkipSlot()&&(t=this._formatOutValue(o.cell,o.row,o.column));else{const o=e.getChild(this._cellIndex);if(!o)return this._advanceToNextRow();const n=parseInt(o.getAttribute("colspan")||1),i=parseInt(o.getAttribute("rowspan")||1);(n>1||i>1)&&this._recordSpans(o,i,n),this._shouldSkipSlot()||(t=this._formatOutValue(o)),this._nextCellAtColumn=this._column+n}return this._column++,this._column==this._nextCellAtColumn&&this._cellIndex++,t||this.next()}skipRow(e){this._skipRows.add(e)}_advanceToNextRow(){return this._row++,this._rowIndex++,this._column=0,this._cellIndex=0,this._nextCellAtColumn=-1,this.next()}_isOverEndRow(){return void 0!==this._endRow&&this._row>this._endRow}_isOverEndColumn(){return void 0!==this._endColumn&&this._column>this._endColumn}_formatOutValue(e,t=this._row,o=this._column){return{done:!1,value:new h(this,e,t,o)}}_shouldSkipSlot(){const e=this._skipRows.has(this._row),t=this._row<this._startRow,o=this._column<this._startColumn,n=void 0!==this._endColumn&&this._column>this._endColumn;return e||t||o||n}_getSpanned(){const e=this._spannedCells.get(this._row);return e&&e.get(this._column)||null}_recordSpans(e,t,o){const n={cell:e,row:this._row,column:this._column};for(let e=this._row;e<this._row+t;e++)for(let t=this._column;t<this._column+o;t++)e==this._row&&t==this._column||this._markSpannedCell(e,t,n)}_markSpannedCell(e,t,o){this._spannedCells.has(e)||this._spannedCells.set(e,new Map);this._spannedCells.get(e).set(t,o)}}class h{constructor(e,t,o,n){this.cell=t,this.row=e._row,this.column=e._column,this.cellAnchorRow=o,this.cellAnchorColumn=n,this._cellIndex=e._cellIndex,this._rowIndex=e._rowIndex,this._table=e._table}get isAnchor(){return this.row===this.cellAnchorRow&&this.column===this.cellAnchorColumn}get cellWidth(){return parseInt(this.cell.getAttribute("colspan")||1)}get cellHeight(){return parseInt(this.cell.getAttribute("rowspan")||1)}get rowIndex(){return this._rowIndex}getPositionBefore(){return this._table.root.document.model.createPositionAt(this._table.getChild(this.row),this._cellIndex)}}function b(e,o={}){return(n,{writer:i})=>{const l=n.getAttribute("headingRows")||0,r=[];l>0&&r.push(i.createContainerElement("thead",null,i.createSlot((e=>e.is("element","tableRow")&&e.index<l)))),l<e.getRows(n)&&r.push(i.createContainerElement("tbody",null,i.createSlot((e=>e.is("element","tableRow")&&e.index>=l))));const s=i.createContainerElement("figure",{class:"table"},[i.createContainerElement("table",null,r),i.createSlot((e=>!e.is("element","tableRow")))]);return o.asWidget?function(e,o){return o.setCustomProperty("table",!0,e),(0,t.toWidget)(e,o,{hasSelectionHandle:!0})}(s,i):s}}function m(e={}){return(o,{writer:n})=>{const i=o.parent,l=i.parent,r=l.getChildIndex(i),s=new u(l,{row:r}),a=l.getAttribute("headingRows")||0,c=l.getAttribute("headingColumns")||0;for(const i of s)if(i.cell==o){const o=i.row<a||i.column<c?"th":"td";return e.asWidget?(0,t.toWidgetEditable)(n.createEditableElement(o),n):n.createContainerElement(o)}}}function g(e={}){return(t,{writer:o,consumable:n,mapper:i})=>{if(t.parent.is("element","tableCell")&&p(t))return e.asWidget?o.createContainerElement("span",{class:"ck-table-bogus-paragraph"}):(n.consume(t,"insert"),void i.bindElements(t,i.toViewElement(t.parent)))}}function p(e){return 1==e.parent.childCount&&![...e.getAttributeKeys()].length}class f extends e.Command{refresh(){const e=this.editor.model,t=e.document.selection,o=e.schema;this.isEnabled=function(e,t){const o=e.getFirstPosition().parent,n=o===o.root?o:o.parent;return t.checkChild(n,"table")}(t,o)}execute(e={}){const t=this.editor.model,o=this.editor.plugins.get("TableUtils"),n=this.editor.config.get("table"),i=n.defaultHeadings.rows,l=n.defaultHeadings.columns;void 0===e.headingRows&&i&&(e.headingRows=i),void 0===e.headingColumns&&l&&(e.headingColumns=l),t.change((n=>{const i=o.createTable(n,e);t.insertObject(i,null,null,{findOptimalPosition:"auto"}),n.setSelection(n.createPositionAt(i.getNodeByPath([0,0,0]),0))}))}}class w extends e.Command{constructor(e,t={}){super(e),this.order=t.order||"below"}refresh(){const e=this.editor.model.document.selection,t=!!this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e).length;this.isEnabled=t}execute(){const e=this.editor,t=e.model.document.selection,o=e.plugins.get("TableUtils"),n="above"===this.order,i=o.getSelectionAffectedTableCells(t),l=o.getRowIndexes(i),r=n?l.first:l.last,s=i[0].findAncestor("table");o.insertRows(s,{at:n?r:r+1,copyStructureFromAbove:!n})}}class _ extends e.Command{constructor(e,t={}){super(e),this.order=t.order||"right"}refresh(){const e=this.editor.model.document.selection,t=!!this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e).length;this.isEnabled=t}execute(){const e=this.editor,t=e.model.document.selection,o=e.plugins.get("TableUtils"),n="left"===this.order,i=o.getSelectionAffectedTableCells(t),l=o.getColumnIndexes(i),r=n?l.first:l.last,s=i[0].findAncestor("table");o.insertColumns(s,{columns:1,at:n?r:r+1})}}class k extends e.Command{constructor(e,t={}){super(e),this.direction=t.direction||"horizontally"}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=1===e.length}execute(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection)[0];"horizontally"===this.direction?e.splitCellHorizontally(t,2):e.splitCellVertically(t,2)}}function v(e,t,o){const{startRow:n,startColumn:r,endRow:s,endColumn:a}=t,c=o.createElement("table"),d=s-n+1;for(let e=0;e<d;e++)o.insertElement("tableRow",c,"end");const h=[...new u(e,{startRow:n,endRow:s,startColumn:r,endColumn:a,includeAllSlots:!0})];for(const{row:e,column:t,cell:i,isAnchor:d,cellAnchorRow:u,cellAnchorColumn:b}of h){const h=e-n,m=c.getChild(h);if(d){const n=o.cloneElement(i);o.append(n,m),x(n,e,t,s,a,o)}else(u<n||b<r)&&l(o,o.createPositionAt(m,"end"))}return function(e,t,o,n,l){const r=parseInt(t.getAttribute("headingRows")||0);if(r>0){i("headingRows",r-o,e,l,0)}const s=parseInt(t.getAttribute("headingColumns")||0);if(s>0){i("headingColumns",s-n,e,l,0)}}(c,e,n,r,o),c}function C(e,t,o=0){const n=[],i=new u(e,{startRow:o,endRow:t-1});for(const e of i){const{row:o,cellHeight:i}=e,l=o+i-1;o<t&&t<=l&&n.push(e)}return n}function y(e,t,o){const n=e.parent,r=n.parent,s=n.index,a=t-s,c={},d=parseInt(e.getAttribute("rowspan"))-a;d>1&&(c.rowspan=d);const h=parseInt(e.getAttribute("colspan")||1);h>1&&(c.colspan=h);const b=s+a,m=[...new u(r,{startRow:s,endRow:b,includeAllSlots:!0})];let g,p=null;for(const t of m){const{row:n,column:i,cell:r}=t;r===e&&void 0===g&&(g=i),void 0!==g&&g===i&&n===b&&(p=l(o,t.getPositionBefore(),c))}return i("rowspan",a,e,o),p}function T(e,t){const o=[],n=new u(e);for(const e of n){const{column:n,cellWidth:i}=e,l=n+i-1;n<t&&t<=l&&o.push(e)}return o}function A(e,t,o,n){const r=o-t,s={},a=parseInt(e.getAttribute("colspan"))-r;a>1&&(s.colspan=a);const c=parseInt(e.getAttribute("rowspan")||1);c>1&&(s.rowspan=c);const d=l(n,n.createPositionAfter(e),s);return i("colspan",r,e,n),d}function x(e,t,o,n,l,r){const s=parseInt(e.getAttribute("colspan")||1),a=parseInt(e.getAttribute("rowspan")||1);if(o+s-1>l){i("colspan",l-o+1,e,r,1)}if(t+a-1>n){i("rowspan",n-t+1,e,r,1)}}function V(e,t){const o=t.getColumns(e),n=new Array(o).fill(0);for(const{column:t}of new u(e))n[t]++;const i=n.reduce(((e,t,o)=>t?e:[...e,o]),[]);if(i.length>0){const o=i[i.length-1];return t.removeColumns(e,{at:o}),!0}return!1}function S(e,t){const o=[],n=t.getRows(e);for(let t=0;t<n;t++){e.getChild(t).isEmpty&&o.push(t)}if(o.length>0){const n=o[o.length-1];return t.removeRows(e,{at:n}),!0}return!1}function R(e,t){V(e,t)||S(e,t)}function I(e,t){const o=Array.from(new u(e,{startColumn:t.firstColumn,endColumn:t.lastColumn,row:t.lastRow}));if(o.every((({cellHeight:e})=>1===e)))return t.lastRow;const n=o[0].cellHeight-1;return t.lastRow+n}function P(e,t){const o=Array.from(new u(e,{startRow:t.firstRow,endRow:t.lastRow,column:t.lastColumn}));if(o.every((({cellWidth:e})=>1===e)))return t.lastColumn;const n=o[0].cellWidth-1;return t.lastColumn+n}class E extends e.Command{constructor(e,t){super(e),this.direction=t.direction,this.isHorizontal="right"==this.direction||"left"==this.direction}refresh(){const e=this._getMergeableCell();this.value=e,this.isEnabled=!!e}execute(){const e=this.editor.model,t=e.document,o=this.editor.plugins.get("TableUtils").getTableCellsContainingSelection(t.selection)[0],n=this.value,i=this.direction;e.change((e=>{const t="right"==i||"down"==i,l=t?o:n,r=t?n:o,s=r.parent;!function(e,t,o){B(e)||(B(t)&&o.remove(o.createRangeIn(t)),o.move(o.createRangeIn(e),o.createPositionAt(t,"end")));o.remove(e)}(r,l,e);const a=this.isHorizontal?"colspan":"rowspan",c=parseInt(o.getAttribute(a)||1),d=parseInt(n.getAttribute(a)||1);e.setAttribute(a,c+d,l),e.setSelection(e.createRangeIn(l));const u=this.editor.plugins.get("TableUtils");R(s.findAncestor("table"),u)}))}_getMergeableCell(){const e=this.editor.model.document,t=this.editor.plugins.get("TableUtils"),o=t.getTableCellsContainingSelection(e.selection)[0];if(!o)return;const n=this.isHorizontal?function(e,t,o){const n=e.parent.parent,i="right"==t?e.nextSibling:e.previousSibling,l=(n.getAttribute("headingColumns")||0)>0;if(!i)return;const s="right"==t?e:i,a="right"==t?i:e,{column:c}=o.getCellLocation(s),{column:d}=o.getCellLocation(a),u=parseInt(s.getAttribute("colspan")||1),h=r(o,s),b=r(o,a);if(l&&h!=b)return;return c+u===d?i:void 0}(o,this.direction,t):function(e,t,o){const n=e.parent,i=n.parent,l=i.getChildIndex(n);if("down"==t&&l===o.getRows(i)-1||"up"==t&&0===l)return;const r=parseInt(e.getAttribute("rowspan")||1),s=i.getAttribute("headingRows")||0,a="down"==t&&l+r===s,c="up"==t&&l===s;if(s&&(a||c))return;const d=parseInt(e.getAttribute("rowspan")||1),h="down"==t?l+d:l,b=[...new u(i,{endRow:h})],m=b.find((t=>t.cell===e)).column,g=b.find((({row:e,cellHeight:o,column:n})=>n===m&&("down"==t?e===h:h===e+o)));return g&&g.cell}(o,this.direction,t);if(!n)return;const i=this.isHorizontal?"rowspan":"colspan",l=parseInt(o.getAttribute(i)||1);return parseInt(n.getAttribute(i)||1)===l?n:void 0}}function B(e){return 1==e.childCount&&e.getChild(0).is("element","paragraph")&&e.getChild(0).isEmpty}class z extends e.Command{refresh(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection),o=t[0];if(o){const n=o.findAncestor("table"),i=this.editor.plugins.get("TableUtils").getRows(n)-1,l=e.getRowIndexes(t),r=0===l.first&&l.last===i;this.isEnabled=!r}else this.isEnabled=!1}execute(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=t.getSelectionAffectedTableCells(e.document.selection),n=t.getRowIndexes(o),i=o[0],l=i.findAncestor("table"),r=t.getCellLocation(i).column;e.change((e=>{const o=n.last-n.first+1;t.removeRows(l,{at:n.first,rows:o});const i=function(e,t,o,n){const i=e.getChild(Math.min(t,n-1));let l=i.getChild(0),r=0;for(const e of i.getChildren()){if(r>o)return l;l=e,r+=parseInt(e.getAttribute("colspan")||1)}return l}(l,n.first,r,t.getRows(l));e.setSelection(e.createPositionAt(i,0))}))}}class N extends e.Command{refresh(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection),o=t[0];if(o){const n=o.findAncestor("table"),i=e.getColumns(n),{first:l,last:r}=e.getColumnIndexes(t);this.isEnabled=r-l<i-1}else this.isEnabled=!1}execute(){const e=this.editor.plugins.get("TableUtils"),[t,o]=function(e,t){const o=t.getSelectionAffectedTableCells(e),n=o[0],i=o.pop(),l=[n,i];return n.isBefore(i)?l:l.reverse()}(this.editor.model.document.selection,e),n=t.parent.parent,i=[...new u(n)],l={first:i.find((e=>e.cell===t)).column,last:i.find((e=>e.cell===o)).column},r=function(e,t,o,n){return parseInt(o.getAttribute("colspan")||1)>1?o:t.previousSibling||o.nextSibling?o.nextSibling||t.previousSibling:n.first?e.reverse().find((({column:e})=>e<n.first)).cell:e.reverse().find((({column:e})=>e>n.last)).cell}(i,t,o,l);this.editor.model.change((e=>{const t=l.last-l.first+1;this.editor.plugins.get("TableUtils").removeColumns(n,{at:l.first,columns:t}),e.setSelection(e.createPositionAt(r,0))}))}}class L extends e.Command{refresh(){const e=this.editor.plugins.get("TableUtils"),t=this.editor.model,o=e.getSelectionAffectedTableCells(t.document.selection),n=o.length>0;this.isEnabled=n,this.value=n&&o.every((e=>this._isInHeading(e,e.parent.parent)))}execute(e={}){if(e.forceValue===this.value)return;const t=this.editor.plugins.get("TableUtils"),o=this.editor.model,n=t.getSelectionAffectedTableCells(o.document.selection),l=n[0].findAncestor("table"),{first:r,last:s}=t.getRowIndexes(n),a=this.value?r:s+1,c=l.getAttribute("headingRows")||0;o.change((e=>{if(a){const t=C(l,a,a>c?c:0);for(const{cell:o}of t)y(o,a,e)}i("headingRows",a,l,e,0)}))}_isInHeading(e,t){const o=parseInt(t.getAttribute("headingRows")||0);return!!o&&e.parent.index<o}}class W extends e.Command{refresh(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=t.getSelectionAffectedTableCells(e.document.selection),n=o.length>0;this.isEnabled=n,this.value=n&&o.every((e=>r(t,e)))}execute(e={}){if(e.forceValue===this.value)return;const t=this.editor.plugins.get("TableUtils"),o=this.editor.model,n=t.getSelectionAffectedTableCells(o.document.selection),l=n[0].findAncestor("table"),{first:r,last:s}=t.getColumnIndexes(n),a=this.value?r:s+1;o.change((e=>{if(a){const t=T(l,a);for(const{cell:o,column:n}of t)A(o,n,a,e)}i("headingColumns",a,l,e,0)}))}}class F extends e.Plugin{static get pluginName(){return"TableUtils"}init(){this.decorate("insertColumns"),this.decorate("insertRows")}getCellLocation(e){const t=e.parent,o=t.parent,n=o.getChildIndex(t),i=new u(o,{row:n});for(const{cell:t,row:o,column:n}of i)if(t===e)return{row:o,column:n}}createTable(e,t){const o=e.createElement("table"),n=parseInt(t.rows)||2,l=parseInt(t.columns)||2;return D(e,o,0,n,l),t.headingRows&&i("headingRows",Math.min(t.headingRows,n),o,e,0),t.headingColumns&&i("headingColumns",Math.min(t.headingColumns,l),o,e,0),o}insertRows(e,t={}){const o=this.editor.model,n=t.at||0,r=t.rows||1,a=void 0!==t.copyStructureFromAbove,c=t.copyStructureFromAbove?n-1:n,d=this.getRows(e),h=this.getColumns(e);if(n>d)throw new s.CKEditorError("tableutils-insertrows-insert-out-of-range",this,{options:t});o.change((t=>{const o=e.getAttribute("headingRows")||0;if(o>n&&i("headingRows",o+r,e,t,0),!a&&(0===n||n===d))return void D(t,e,n,r,h);const s=a?Math.max(n,c):n,b=new u(e,{endRow:s}),m=new Array(h).fill(1);for(const{row:e,column:o,cellHeight:i,cellWidth:l,cell:s}of b){const d=e+i-1,u=e<=c&&c<=d;e<n&&n<=d?(t.setAttribute("rowspan",i+r,s),m[o]=-l):a&&u&&(m[o]=l)}for(let o=0;o<r;o++){const o=t.createElement("tableRow");t.insert(o,e,n);for(let e=0;e<m.length;e++){const n=m[e],i=t.createPositionAt(o,"end");n>0&&l(t,i,n>1?{colspan:n}:null),e+=Math.abs(n)-1}}}))}insertColumns(e,t={}){const o=this.editor.model,n=t.at||0,i=t.columns||1;o.change((t=>{const o=e.getAttribute("headingColumns");n<o&&t.setAttribute("headingColumns",o+i,e);const l=this.getColumns(e);if(0===n||l===n){for(const o of e.getChildren())o.is("element","tableRow")&&M(i,t,t.createPositionAt(o,n?"end":0));return}const r=new u(e,{column:n,includeAllSlots:!0});for(const e of r){const{row:o,cell:l,cellAnchorColumn:s,cellAnchorRow:a,cellWidth:c,cellHeight:d}=e;if(s<n){t.setAttribute("colspan",c+i,l);const e=a+d-1;for(let t=o;t<=e;t++)r.skipRow(t)}else M(i,t,e.getPositionBefore())}}))}removeRows(e,t){const o=this.editor.model,n=t.rows||1,l=this.getRows(e),r=t.at,a=r+n-1;if(a>l-1)throw new s.CKEditorError("tableutils-removerows-row-index-out-of-range",this,{table:e,options:t});o.change((t=>{const{cellsToMove:o,cellsToTrim:n}=function(e,t,o){const n=new Map,i=[];for(const{row:l,column:r,cellHeight:s,cell:a}of new u(e,{endRow:o})){const e=l+s-1;if(l>=t&&l<=o&&e>o){const e=s-(o-l+1);n.set(r,{cell:a,rowspan:e})}if(l<t&&e>=t){let n;n=e>=o?o-t+1:e-t+1,i.push({cell:a,rowspan:s-n})}}return{cellsToMove:n,cellsToTrim:i}}(e,r,a);if(o.size){!function(e,t,o,n){const l=[...new u(e,{includeAllSlots:!0,row:t})],r=e.getChild(t);let s;for(const{column:e,cell:t,isAnchor:a}of l)if(o.has(e)){const{cell:t,rowspan:l}=o.get(e),a=s?n.createPositionAfter(s):n.createPositionAt(r,0);n.move(n.createRangeOn(t),a),i("rowspan",l,t,n),s=t}else a&&(s=t)}(e,a+1,o,t)}for(let o=a;o>=r;o--)t.remove(e.getChild(o));for(const{rowspan:e,cell:o}of n)i("rowspan",e,o,t);!function(e,t,o,n){const l=e.getAttribute("headingRows")||0;if(t<l){i("headingRows",o<l?l-(o-t+1):t,e,n,0)}}(e,r,a,t),V(e,this)||S(e,this)}))}removeColumns(e,t){const o=this.editor.model,n=t.at,l=t.columns||1,r=t.at+l-1;o.change((t=>{!function(e,t,o){const n=e.getAttribute("headingColumns")||0;if(n&&t.first<n){const i=Math.min(n-1,t.last)-t.first+1;o.setAttribute("headingColumns",n-i,e)}}(e,{first:n,last:r},t);for(let o=r;o>=n;o--)for(const{cell:n,column:l,cellWidth:r}of[...new u(e)])l<=o&&r>1&&l+r>o?i("colspan",r-1,n,t):l===o&&t.remove(n);S(e,this)||V(e,this)}))}splitCellVertically(e,t=2){const o=this.editor.model,n=e.parent.parent,l=parseInt(e.getAttribute("rowspan")||1),r=parseInt(e.getAttribute("colspan")||1);o.change((o=>{if(r>1){const{newCellsSpan:n,updatedSpan:s}=H(r,t);i("colspan",s,e,o);const a={};n>1&&(a.colspan=n),l>1&&(a.rowspan=l);M(r>t?t-1:r-1,o,o.createPositionAfter(e),a)}if(r<t){const s=t-r,a=[...new u(n)],{column:c}=a.find((({cell:t})=>t===e)),d=a.filter((({cell:t,cellWidth:o,column:n})=>t!==e&&n===c||n<c&&n+o>c));for(const{cell:e,cellWidth:t}of d)o.setAttribute("colspan",t+s,e);const h={};l>1&&(h.rowspan=l),M(s,o,o.createPositionAfter(e),h);const b=n.getAttribute("headingColumns")||0;b>c&&i("headingColumns",b+s,n,o)}}))}splitCellHorizontally(e,t=2){const o=this.editor.model,n=e.parent,l=n.parent,r=l.getChildIndex(n),s=parseInt(e.getAttribute("rowspan")||1),a=parseInt(e.getAttribute("colspan")||1);o.change((o=>{if(s>1){const n=[...new u(l,{startRow:r,endRow:r+s-1,includeAllSlots:!0})],{newCellsSpan:c,updatedSpan:d}=H(s,t);i("rowspan",d,e,o);const{column:h}=n.find((({cell:t})=>t===e)),b={};c>1&&(b.rowspan=c),a>1&&(b.colspan=a);for(const e of n){const{column:t,row:n}=e,i=t===h,l=(n+r+d)%c==0;n>=r+d&&i&&l&&M(1,o,e.getPositionBefore(),b)}}if(s<t){const n=t-s,c=[...new u(l,{startRow:0,endRow:r})];for(const{cell:t,cellHeight:i,row:l}of c)if(t!==e&&l+i>r){const e=i+n;o.setAttribute("rowspan",e,t)}const d={};a>1&&(d.colspan=a),D(o,l,r+1,n,1,d);const h=l.getAttribute("headingRows")||0;h>r&&i("headingRows",h+n,l,o)}}))}getColumns(e){return[...e.getChild(0).getChildren()].reduce(((e,t)=>e+parseInt(t.getAttribute("colspan")||1)),0)}getRows(e){return Array.from(e.getChildren()).reduce(((e,t)=>t.is("element","tableRow")?e+1:e),0)}createTableWalker(e,t={}){return new u(e,t)}getSelectedTableCells(e){const t=[];for(const o of this.sortRanges(e.getRanges())){const e=o.getContainedElement();e&&e.is("element","tableCell")&&t.push(e)}return t}getTableCellsContainingSelection(e){const t=[];for(const o of e.getRanges()){const e=o.start.findAncestor("tableCell");e&&t.push(e)}return t}getSelectionAffectedTableCells(e){const t=this.getSelectedTableCells(e);return t.length?t:this.getTableCellsContainingSelection(e)}getRowIndexes(e){const t=e.map((e=>e.parent.index));return this._getFirstLastIndexesObject(t)}getColumnIndexes(e){const t=e[0].findAncestor("table"),o=[...new u(t)].filter((t=>e.includes(t.cell))).map((e=>e.column));return this._getFirstLastIndexesObject(o)}isSelectionRectangular(e){if(e.length<2||!this._areCellInTheSameTableSection(e))return!1;const t=new Set,o=new Set;let n=0;for(const i of e){const{row:e,column:l}=this.getCellLocation(i),r=parseInt(i.getAttribute("rowspan")||1),s=parseInt(i.getAttribute("colspan")||1);t.add(e),o.add(l),r>1&&t.add(e+r-1),s>1&&o.add(l+s-1),n+=r*s}const i=function(e,t){const o=Array.from(e.values()),n=Array.from(t.values()),i=Math.max(...o),l=Math.min(...o),r=Math.max(...n),s=Math.min(...n);return(i-l+1)*(r-s+1)}(t,o);return i==n}sortRanges(e){return Array.from(e).sort(O)}_getFirstLastIndexesObject(e){const t=e.sort(((e,t)=>e-t));return{first:t[0],last:t[t.length-1]}}_areCellInTheSameTableSection(e){const t=e[0].findAncestor("table"),o=this.getRowIndexes(e),n=parseInt(t.getAttribute("headingRows")||0);if(!this._areIndexesInSameSection(o,n))return!1;const i=parseInt(t.getAttribute("headingColumns")||0),l=this.getColumnIndexes(e);return this._areIndexesInSameSection(l,i)}_areIndexesInSameSection({first:e,last:t},o){return e<o===t<o}}function D(e,t,o,n,i,l={}){for(let r=0;r<n;r++){const n=e.createElement("tableRow");e.insert(n,t,o),M(i,e,e.createPositionAt(n,"end"),l)}}function M(e,t,o,n={}){for(let i=0;i<e;i++)l(t,o,n)}function H(e,t){if(e<t)return{newCellsSpan:1,updatedSpan:1};const o=Math.floor(e/t);return{newCellsSpan:o,updatedSpan:e-o*t+o}}function O(e,t){const o=e.start,n=t.start;return o.isBefore(n)?-1:1}class j extends e.Command{refresh(){const e=this.editor.plugins.get(F),t=e.getSelectedTableCells(this.editor.model.document.selection);this.isEnabled=e.isSelectionRectangular(t,this.editor.plugins.get(F))}execute(){const e=this.editor.model,t=this.editor.plugins.get(F);e.change((o=>{const n=t.getSelectedTableCells(e.document.selection),l=n.shift(),{mergeWidth:r,mergeHeight:s}=function(e,t,o){let n=0,i=0;for(const e of t){const{row:t,column:l}=o.getCellLocation(e);n=$(e,l,n,"colspan"),i=$(e,t,i,"rowspan")}const{row:l,column:r}=o.getCellLocation(e);return{mergeWidth:n-r,mergeHeight:i-l}}(l,n,t);i("colspan",r,l,o),i("rowspan",s,l,o);for(const e of n)U(e,l,o);R(l.findAncestor("table"),t),o.setSelection(l,"in")}))}}function U(e,t,o){Z(e)||(Z(t)&&o.remove(o.createRangeIn(t)),o.move(o.createRangeIn(e),o.createPositionAt(t,"end"))),o.remove(e)}function Z(e){return 1==e.childCount&&e.getChild(0).is("element","paragraph")&&e.getChild(0).isEmpty}function $(e,t,o,n){const i=parseInt(e.getAttribute(n)||1);return Math.max(o,t+i)}class K extends e.Command{constructor(e){super(e),this.affectsData=!1}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=e.length>0}execute(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=t.getSelectionAffectedTableCells(e.document.selection),n=t.getRowIndexes(o),i=o[0].findAncestor("table"),l=[];for(let t=n.first;t<=n.last;t++)for(const o of i.getChild(t).getChildren())l.push(e.createRangeOn(o));e.change((e=>{e.setSelection(l)}))}}class q extends e.Command{constructor(e){super(e),this.affectsData=!1}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=e.length>0}execute(){const e=this.editor.plugins.get("TableUtils"),t=this.editor.model,o=e.getSelectionAffectedTableCells(t.document.selection),n=o[0],i=o.pop(),l=n.findAncestor("table"),r=e.getCellLocation(n),s=e.getCellLocation(i),a=Math.min(r.column,s.column),c=Math.max(r.column,s.column),d=[];for(const e of new u(l,{startColumn:a,endColumn:c}))d.push(t.createRangeOn(e.cell));t.change((e=>{e.setSelection(d)}))}}function G(e){e.document.registerPostFixer((t=>function(e,t){const o=t.document.differ.getChanges();let n=!1;const i=new Set;for(const t of o){let o;"table"==t.name&&"insert"==t.type&&(o=t.position.nodeAfter),"tableRow"!=t.name&&"tableCell"!=t.name||(o=t.position.findAncestor("table")),Y(t)&&(o=t.range.start.findAncestor("table")),o&&!i.has(o)&&(n=J(o,e)||n,n=X(o,e)||n,i.add(o))}return n}(t,e)))}function J(e,t){let o=!1;const n=function(e){const t=parseInt(e.getAttribute("headingRows")||0),o=Array.from(e.getChildren()).reduce(((e,t)=>t.is("element","tableRow")?e+1:e),0),n=[];for(const{row:i,cell:l,cellHeight:r}of new u(e)){if(r<2)continue;const e=i<t?t:o;if(i+r>e){const t=e-i;n.push({cell:l,rowspan:t})}}return n}(e);if(n.length){o=!0;for(const e of n)i("rowspan",e.rowspan,e.cell,t,1)}return o}function X(e,t){let o=!1;const n=function(e){const t=new Array(e.childCount).fill(0);for(const{rowIndex:o}of new u(e,{includeAllSlots:!0}))t[o]++;return t}(e),i=[];for(const[t,o]of n.entries())!o&&e.getChild(t).is("element","tableRow")&&i.push(t);if(i.length){o=!0;for(const o of i.reverse())t.remove(e.getChild(o)),n.splice(o,1)}const r=n.filter(((t,o)=>e.getChild(o).is("element","tableRow"))),s=r[0];if(!r.every((e=>e===s))){const n=r.reduce(((e,t)=>t>e?t:e),0);for(const[i,s]of r.entries()){const r=n-s;if(r){for(let o=0;o<r;o++)l(t,t.createPositionAt(e.getChild(i),"end"));o=!0}}}return o}function Y(e){const t="attribute"===e.type,o=e.attributeKey;return t&&("headingRows"===o||"colspan"===o||"rowspan"===o)}function Q(e){e.document.registerPostFixer((t=>function(e,t){const o=t.document.differ.getChanges();let n=!1;for(const t of o)"insert"==t.type&&"table"==t.name&&(n=ee(t.position.nodeAfter,e)||n),"insert"==t.type&&"tableRow"==t.name&&(n=te(t.position.nodeAfter,e)||n),"insert"==t.type&&"tableCell"==t.name&&(n=oe(t.position.nodeAfter,e)||n),ne(t)&&(n=oe(t.position.parent,e)||n);return n}(t,e)))}function ee(e,t){let o=!1;for(const n of e.getChildren())n.is("element","tableRow")&&(o=te(n,t)||o);return o}function te(e,t){let o=!1;for(const n of e.getChildren())o=oe(n,t)||o;return o}function oe(e,t){if(0==e.childCount)return t.insertElement("paragraph",e),!0;const o=Array.from(e.getChildren()).filter((e=>e.is("$text")));for(const e of o)t.wrap(t.createRangeOn(e),"paragraph");return!!o.length}function ne(e){return!(!e.position||!e.position.parent.is("element","tableCell"))&&("insert"==e.type&&"$text"==e.name||"remove"==e.type)}function ie(e,t){if(!e.is("element","paragraph"))return!1;const o=t.toViewElement(e);return!!o&&p(e)!==o.is("element","span")}var le=o(62),re=o.n(le),se=o(482),ae={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(se.Z,ae);se.Z.locals;class ce extends e.Plugin{static get pluginName(){return"TableEditing"}static get requires(){return[F]}init(){const e=this.editor,t=e.model,o=t.schema,n=e.conversion,i=e.plugins.get(F);o.register("table",{inheritAllFrom:"$blockObject",allowAttributes:["headingRows","headingColumns"]}),o.register("tableRow",{allowIn:"table",isLimit:!0}),o.register("tableCell",{allowContentOf:"$container",allowIn:"tableRow",allowAttributes:["colspan","rowspan"],isLimit:!0,isSelectable:!0}),n.for("upcast").add((e=>{e.on("element:figure",((e,t,o)=>{if(!o.consumable.test(t.viewItem,{name:!0,classes:"table"}))return;const n=function(e){for(const t of e.getChildren())if(t.is("element","table"))return t}(t.viewItem);if(!n||!o.consumable.test(n,{name:!0}))return;o.consumable.consume(t.viewItem,{name:!0,classes:"table"});const i=o.convertItem(n,t.modelCursor),l=(0,s.first)(i.modelRange.getItems());l?(o.convertChildren(t.viewItem,o.writer.createPositionAt(l,"end")),o.updateConversionResult(l,t)):o.consumable.revert(t.viewItem,{name:!0,classes:"table"})}))})),n.for("upcast").add(a()),n.for("editingDowncast").elementToStructure({model:{name:"table",attributes:["headingRows"]},view:b(i,{asWidget:!0})}),n.for("dataDowncast").elementToStructure({model:{name:"table",attributes:["headingRows"]},view:b(i)}),n.for("upcast").elementToElement({model:"tableRow",view:"tr"}),n.for("upcast").add((e=>{e.on("element:tr",((e,t)=>{t.viewItem.isEmpty&&0==t.modelCursor.index&&e.stop()}),{priority:"high"})})),n.for("downcast").elementToElement({model:"tableRow",view:(e,{writer:t})=>e.isEmpty?t.createEmptyElement("tr"):t.createContainerElement("tr")}),n.for("upcast").elementToElement({model:"tableCell",view:"td"}),n.for("upcast").elementToElement({model:"tableCell",view:"th"}),n.for("upcast").add(c("td")),n.for("upcast").add(c("th")),n.for("editingDowncast").elementToElement({model:"tableCell",view:m({asWidget:!0})}),n.for("dataDowncast").elementToElement({model:"tableCell",view:m()}),n.for("editingDowncast").elementToElement({model:"paragraph",view:g({asWidget:!0}),converterPriority:"high"}),n.for("dataDowncast").elementToElement({model:"paragraph",view:g(),converterPriority:"high"}),n.for("downcast").attributeToAttribute({model:"colspan",view:"colspan"}),n.for("upcast").attributeToAttribute({model:{key:"colspan",value:de("colspan")},view:"colspan"}),n.for("downcast").attributeToAttribute({model:"rowspan",view:"rowspan"}),n.for("upcast").attributeToAttribute({model:{key:"rowspan",value:de("rowspan")},view:"rowspan"}),e.data.mapper.on("modelToViewPosition",((e,t)=>{const o=t.modelPosition.parent,n=t.modelPosition.nodeBefore;if(!o.is("element","tableCell"))return;if(!n||!n.is("element","paragraph"))return;const i=t.mapper.toViewElement(n),l=t.mapper.toViewElement(o);i===l&&(t.viewPosition=t.mapper.findPositionIn(l,n.maxOffset))})),e.config.define("table.defaultHeadings.rows",0),e.config.define("table.defaultHeadings.columns",0),e.commands.add("insertTable",new f(e)),e.commands.add("insertTableRowAbove",new w(e,{order:"above"})),e.commands.add("insertTableRowBelow",new w(e,{order:"below"})),e.commands.add("insertTableColumnLeft",new _(e,{order:"left"})),e.commands.add("insertTableColumnRight",new _(e,{order:"right"})),e.commands.add("removeTableRow",new z(e)),e.commands.add("removeTableColumn",new N(e)),e.commands.add("splitTableCellVertically",new k(e,{direction:"vertically"})),e.commands.add("splitTableCellHorizontally",new k(e,{direction:"horizontally"})),e.commands.add("mergeTableCells",new j(e)),e.commands.add("mergeTableCellRight",new E(e,{direction:"right"})),e.commands.add("mergeTableCellLeft",new E(e,{direction:"left"})),e.commands.add("mergeTableCellDown",new E(e,{direction:"down"})),e.commands.add("mergeTableCellUp",new E(e,{direction:"up"})),e.commands.add("setTableColumnHeader",new W(e)),e.commands.add("setTableRowHeader",new L(e)),e.commands.add("selectTableRow",new K(e)),e.commands.add("selectTableColumn",new q(e)),G(t),Q(t),this.listenTo(t.document,"change:data",(()=>{!function(e,t){const o=e.document.differ;for(const e of o.getChanges()){let o,n=!1;if("attribute"==e.type){const t=e.range.start.nodeAfter;if(!t||!t.is("element","table"))continue;if("headingRows"!=e.attributeKey&&"headingColumns"!=e.attributeKey)continue;o=t,n="headingRows"==e.attributeKey}else"tableRow"!=e.name&&"tableCell"!=e.name||(o=e.position.findAncestor("table"),n="tableRow"==e.name);if(!o)continue;const i=o.getAttribute("headingRows")||0,l=o.getAttribute("headingColumns")||0,r=new u(o);for(const e of r){const o=e.row<i||e.column<l?"th":"td",r=t.mapper.toViewElement(e.cell);r&&r.is("element")&&r.name!=o&&t.reconvertItem(n?e.cell.parent:e.cell)}}}(t,e.editing),function(e,t){const o=e.document.differ,n=new Set;for(const e of o.getChanges()){const t="attribute"==e.type?e.range.start.parent:e.position.parent;t.is("element","tableCell")&&n.add(t)}for(const e of n.values()){const o=Array.from(e.getChildren()).filter((e=>ie(e,t.mapper)));for(const e of o)t.reconvertItem(e)}}(t,e.editing)}))}}function de(e){return t=>{const o=parseInt(t.getAttribute(e));return Number.isNaN(o)||o<=0?null:o}}var ue=o(273),he=o(272),be={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(he.Z,be);he.Z.locals;class me extends ue.View{constructor(e){super(e);const t=this.bindTemplate;this.items=this._createGridCollection(),this.set("rows",0),this.set("columns",0),this.bind("label").to(this,"columns",this,"rows",((e,t)=>`${t} × ${e}`)),this.setTemplate({tag:"div",attributes:{class:["ck"]},children:[{tag:"div",attributes:{class:["ck-insert-table-dropdown__grid"]},on:{"mouseover@.ck-insert-table-dropdown-grid-box":t.to("boxover")},children:this.items},{tag:"div",attributes:{class:["ck-insert-table-dropdown__label"]},children:[{text:t.to("label")}]}],on:{mousedown:t.to((e=>{e.preventDefault()})),click:t.to((()=>{this.fire("execute")}))}}),this.on("boxover",((e,t)=>{const{row:o,column:n}=t.target.dataset;this.set({rows:parseInt(o),columns:parseInt(n)})})),this.on("change:columns",(()=>{this._highlightGridBoxes()})),this.on("change:rows",(()=>{this._highlightGridBoxes()}))}focus(){}focusLast(){}_highlightGridBoxes(){const e=this.rows,t=this.columns;this.items.map(((o,n)=>{const i=Math.floor(n/10)<e&&n%10<t;o.set("isOn",i)}))}_createGridCollection(){const e=[];for(let t=0;t<100;t++){const o=Math.floor(t/10),n=t%10;e.push(new ge(this.locale,o+1,n+1))}return this.createCollection(e)}}class ge extends ue.View{constructor(e,t,o){super(e);const n=this.bindTemplate;this.set("isOn",!1),this.setTemplate({tag:"div",attributes:{class:["ck-insert-table-dropdown-grid-box",n.if("isOn","ck-on")],"data-row":t,"data-column":o}})}}class pe extends e.Plugin{static get pluginName(){return"TableUI"}init(){const e=this.editor,t=this.editor.t,o="ltr"===e.locale.contentLanguageDirection;e.ui.componentFactory.add("insertTable",(o=>{const n=e.commands.get("insertTable"),i=(0,ue.createDropdown)(o);let l;return i.bind("isEnabled").to(n),i.buttonView.set({icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 6v3h4V6H3zm0 4v3h4v-3H3zm0 4v3h4v-3H3zm5 3h4v-3H8v3zm5 0h4v-3h-4v3zm4-4v-3h-4v3h4zm0-4V6h-4v3h4zm1.5 8a1.5 1.5 0 0 1-1.5 1.5H3A1.5 1.5 0 0 1 1.5 17V4c.222-.863 1.068-1.5 2-1.5h13c.932 0 1.778.637 2 1.5v13zM12 13v-3H8v3h4zm0-4V6H8v3h4z"/></svg>',label:t("Insert table"),tooltip:!0}),i.on("change:isOpen",(()=>{l||(l=new me(o),i.panelView.children.add(l),l.delegate("execute").to(i),i.buttonView.on("open",(()=>{l.rows=0,l.columns=0})),i.on("execute",(()=>{e.execute("insertTable",{rows:l.rows,columns:l.columns}),e.editing.view.focus()})))})),i})),e.ui.componentFactory.add("tableColumn",(e=>{const n=[{type:"switchbutton",model:{commandName:"setTableColumnHeader",label:t("Header column"),bindIsOn:!0}},{type:"separator"},{type:"button",model:{commandName:o?"insertTableColumnLeft":"insertTableColumnRight",label:t("Insert column left")}},{type:"button",model:{commandName:o?"insertTableColumnRight":"insertTableColumnLeft",label:t("Insert column right")}},{type:"button",model:{commandName:"removeTableColumn",label:t("Delete column")}},{type:"button",model:{commandName:"selectTableColumn",label:t("Select column")}}];return this._prepareDropdown(t("Column"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M18 7v1H2V7h16zm0 5v1H2v-1h16z" opacity=".6"/><path d="M14 1v18a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1zm-2 1H8v4h4V2zm0 6H8v4h4V8zm0 6H8v4h4v-4z"/></svg>',n,e)})),e.ui.componentFactory.add("tableRow",(e=>{const o=[{type:"switchbutton",model:{commandName:"setTableRowHeader",label:t("Header row"),bindIsOn:!0}},{type:"separator"},{type:"button",model:{commandName:"insertTableRowAbove",label:t("Insert row above")}},{type:"button",model:{commandName:"insertTableRowBelow",label:t("Insert row below")}},{type:"button",model:{commandName:"removeTableRow",label:t("Delete row")}},{type:"button",model:{commandName:"selectTableRow",label:t("Select row")}}];return this._prepareDropdown(t("Row"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M7 2h1v16H7V2zm5 0h1v16h-1V2z" opacity=".6"/><path d="M1 6h18a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm1 2v4h4V8H2zm6 0v4h4V8H8zm6 0v4h4V8h-4z"/></svg>',o,e)})),e.ui.componentFactory.add("mergeTableCells",(e=>{const n=[{type:"button",model:{commandName:"mergeTableCellUp",label:t("Merge cell up")}},{type:"button",model:{commandName:o?"mergeTableCellRight":"mergeTableCellLeft",label:t("Merge cell right")}},{type:"button",model:{commandName:"mergeTableCellDown",label:t("Merge cell down")}},{type:"button",model:{commandName:o?"mergeTableCellLeft":"mergeTableCellRight",label:t("Merge cell left")}},{type:"separator"},{type:"button",model:{commandName:"splitTableCellVertically",label:t("Split cell vertically")}},{type:"button",model:{commandName:"splitTableCellHorizontally",label:t("Split cell horizontally")}}];return this._prepareMergeSplitButtonDropdown(t("Merge cells"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M7 2h1v16H7V2zm5 0h1v7h-1V2zm6 5v1H2V7h16zM8 12v1H2v-1h6z" opacity=".6"/><path d="M7 7h12a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1zm1 2v9h10V9H8z"/></svg>',n,e)}))}_prepareDropdown(e,t,o,n){const i=this.editor,l=(0,ue.createDropdown)(n),r=this._fillDropdownWithListOptions(l,o);return l.buttonView.set({label:e,icon:t,tooltip:!0}),l.bind("isEnabled").toMany(r,"isEnabled",((...e)=>e.some((e=>e)))),this.listenTo(l,"execute",(e=>{i.execute(e.source.commandName),e.source instanceof ue.SwitchButtonView||i.editing.view.focus()})),l}_prepareMergeSplitButtonDropdown(e,t,o,n){const i=this.editor,l=(0,ue.createDropdown)(n,ue.SplitButtonView),r="mergeTableCells",s=i.commands.get(r),a=this._fillDropdownWithListOptions(l,o);return l.buttonView.set({label:e,icon:t,tooltip:!0,isEnabled:!0}),l.bind("isEnabled").toMany([s,...a],"isEnabled",((...e)=>e.some((e=>e)))),this.listenTo(l.buttonView,"execute",(()=>{i.execute(r),i.editing.view.focus()})),this.listenTo(l,"execute",(e=>{i.execute(e.source.commandName),i.editing.view.focus()})),l}_fillDropdownWithListOptions(e,t){const o=this.editor,n=[],i=new s.Collection;for(const e of t)fe(e,o,n,i);return(0,ue.addListToDropdown)(e,i,o.ui.componentFactory),n}}function fe(e,t,o,n){const i=e.model=new ue.Model(e.model),{commandName:l,bindIsOn:r}=e.model;if("button"===e.type||"switchbutton"===e.type){const e=t.commands.get(l);o.push(e),i.set({commandName:l}),i.bind("isEnabled").to(e),r&&i.bind("isOn").to(e,"value")}i.set({withText:!0}),n.add(e)}var we=o(475),_e={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(we.Z,_e);we.Z.locals;class ke extends e.Plugin{static get pluginName(){return"TableSelection"}static get requires(){return[F,F]}init(){const e=this.editor.model;this.listenTo(e,"deleteContent",((e,t)=>this._handleDeleteContent(e,t)),{priority:"high"}),this._defineSelectionConverter(),this._enablePluginDisabling()}getSelectedTableCells(){const e=this.editor.plugins.get(F),t=this.editor.model.document.selection,o=e.getSelectedTableCells(t);return 0==o.length?null:o}getSelectionAsFragment(){const e=this.editor.plugins.get(F),t=this.getSelectedTableCells();return t?this.editor.model.change((o=>{const n=o.createDocumentFragment(),{first:i,last:l}=e.getColumnIndexes(t),{first:r,last:s}=e.getRowIndexes(t),a=t[0].findAncestor("table");let c=s,d=l;if(e.isSelectionRectangular(t)){const e={firstColumn:i,lastColumn:l,firstRow:r,lastRow:s};c=I(a,e),d=P(a,e)}const u=v(a,{startRow:r,startColumn:i,endRow:c,endColumn:d},o);return o.insert(u,n,0),n})):null}setCellSelection(e,t){const o=this._getCellsToSelect(e,t);this.editor.model.change((e=>{e.setSelection(o.cells.map((t=>e.createRangeOn(t))),{backward:o.backward})}))}getFocusCell(){const e=[...this.editor.model.document.selection.getRanges()].pop().getContainedElement();return e&&e.is("element","tableCell")?e:null}getAnchorCell(){const e=this.editor.model.document.selection,t=(0,s.first)(e.getRanges()).getContainedElement();return t&&t.is("element","tableCell")?t:null}_defineSelectionConverter(){const e=this.editor,t=new Set;e.conversion.for("editingDowncast").add((e=>e.on("selection",((e,o,n)=>{const i=n.writer;!function(e){for(const o of t)e.removeClass("ck-editor__editable_selected",o);t.clear()}(i);const l=this.getSelectedTableCells();if(!l)return;for(const e of l){const o=n.mapper.toViewElement(e);i.addClass("ck-editor__editable_selected",o),t.add(o)}const r=n.mapper.toViewElement(l[l.length-1]);i.setSelection(r,0)}),{priority:"lowest"})))}_enablePluginDisabling(){const e=this.editor;this.on("change:isEnabled",(()=>{if(!this.isEnabled){const t=this.getSelectedTableCells();if(!t)return;e.model.change((o=>{const n=o.createPositionAt(t[0],0),i=e.model.schema.getNearestSelectionRange(n);o.setSelection(i)}))}}))}_handleDeleteContent(e,t){const o=this.editor.plugins.get(F),[n,i]=t,l=this.editor.model,r=!i||"backward"==i.direction,s=o.getSelectedTableCells(n);s.length&&(e.stop(),l.change((e=>{const t=s[r?s.length-1:0];l.change((e=>{for(const t of s)l.deleteContent(e.createSelection(t,"in"))}));const o=l.schema.getNearestSelectionRange(e.createPositionAt(t,0));n.is("documentSelection")?e.setSelection(o):n.setTo(o)})))}_getCellsToSelect(e,t){const o=this.editor.plugins.get("TableUtils"),n=o.getCellLocation(e),i=o.getCellLocation(t),l=Math.min(n.row,i.row),r=Math.max(n.row,i.row),s=Math.min(n.column,i.column),a=Math.max(n.column,i.column),c=new Array(r-l+1).fill(null).map((()=>[])),d={startRow:l,endRow:r,startColumn:s,endColumn:a};for(const{row:t,cell:o}of new u(e.findAncestor("table"),d))c[t-l].push(o);const h=i.row<n.row,b=i.column<n.column;return h&&c.reverse(),b&&c.forEach((e=>e.reverse())),{cells:c.flat(),backward:h||b}}}class ve extends e.Plugin{static get pluginName(){return"TableClipboard"}static get requires(){return[ke,F]}init(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"copy",((e,t)=>this._onCopyCut(e,t))),this.listenTo(t,"cut",((e,t)=>this._onCopyCut(e,t))),this.listenTo(e.model,"insertContent",((e,t)=>this._onInsertContent(e,...t)),{priority:"high"}),this.decorate("_replaceTableSlotCell")}_onCopyCut(e,t){const o=this.editor.plugins.get(ke);if(!o.getSelectedTableCells())return;if("cut"==e.name&&this.editor.isReadOnly)return;t.preventDefault(),e.stop();const n=this.editor.data,i=this.editor.editing.view.document,l=n.toView(o.getSelectionAsFragment());i.fire("clipboardOutput",{dataTransfer:t.dataTransfer,content:l,method:e.name})}_onInsertContent(e,t,o){if(o&&!o.is("documentSelection"))return;const n=this.editor.model,i=this.editor.plugins.get(F);let l=Ce(t,n);if(!l)return;const r=i.getSelectionAffectedTableCells(n.document.selection);r.length?(e.stop(),n.change((e=>{const t={width:i.getColumns(l),height:i.getRows(l)},o=function(e,t,o,n){const i=e[0].findAncestor("table"),l=n.getColumnIndexes(e),r=n.getRowIndexes(e),s={firstColumn:l.first,lastColumn:l.last,firstRow:r.first,lastRow:r.last},a=1===e.length;a&&(s.lastRow+=t.height-1,s.lastColumn+=t.width-1,function(e,t,o,n){const i=n.getColumns(e),l=n.getRows(e);o>i&&n.insertColumns(e,{at:i,columns:o-i});t>l&&n.insertRows(e,{at:l,rows:t-l})}(i,s.lastRow+1,s.lastColumn+1,n));a||!n.isSelectionRectangular(e)?function(e,t,o){const{firstRow:n,lastRow:i,firstColumn:l,lastColumn:r}=t,s={first:n,last:i},a={first:l,last:r};Te(e,l,s,o),Te(e,r+1,s,o),ye(e,n,a,o),ye(e,i+1,a,o,n)}(i,s,o):(s.lastRow=I(i,s),s.lastColumn=P(i,s));return s}(r,t,e,i),n=o.lastRow-o.firstRow+1,s=o.lastColumn-o.firstColumn+1,a={startRow:0,startColumn:0,endRow:Math.min(n,t.height)-1,endColumn:Math.min(s,t.width)-1};l=v(l,a,e);const c=r[0].findAncestor("table"),d=this._replaceSelectedCellsWithPasted(l,t,c,o,e);if(this.editor.plugins.get("TableSelection").isEnabled){const t=i.sortRanges(d.map((t=>e.createRangeOn(t))));e.setSelection(t)}else e.setSelection(d[0],0)}))):R(l,i)}_replaceSelectedCellsWithPasted(e,t,o,n,i){const{width:l,height:r}=t,s=function(e,t,o){const n=new Array(o).fill(null).map((()=>new Array(t).fill(null)));for(const{column:t,row:o,cell:i}of new u(e))n[o][t]=i;return n}(e,l,r),a=[...new u(o,{startRow:n.firstRow,endRow:n.lastRow,startColumn:n.firstColumn,endColumn:n.lastColumn,includeAllSlots:!0})],c=[];let d;for(const e of a){const{row:t,column:o}=e;o===n.firstColumn&&(d=e.getPositionBefore());const a=t-n.firstRow,u=o-n.firstColumn,h=s[a%r][u%l],b=h?i.cloneElement(h):null,m=this._replaceTableSlotCell(e,b,d,i);m&&(x(m,t,o,n.lastRow,n.lastColumn,i),c.push(m),d=i.createPositionAfter(m))}const h=parseInt(o.getAttribute("headingRows")||0),b=parseInt(o.getAttribute("headingColumns")||0),m=n.firstRow<h&&h<=n.lastRow,g=n.firstColumn<b&&b<=n.lastColumn;if(m){const e=ye(o,h,{first:n.firstColumn,last:n.lastColumn},i,n.firstRow);c.push(...e)}if(g){const e=Te(o,b,{first:n.firstRow,last:n.lastRow},i);c.push(...e)}return c}_replaceTableSlotCell(e,t,o,n){const{cell:i,isAnchor:l}=e;return l&&n.remove(i),t?(n.insert(t,o),t):null}getTableIfOnlyTableInContent(e,t){return Ce(e,t)}}function Ce(e,t){if(!e.is("documentFragment")&&!e.is("element"))return null;if(e.is("element","table"))return e;if(1==e.childCount&&e.getChild(0).is("element","table"))return e.getChild(0);const o=t.createRangeIn(e);for(const e of o.getItems())if(e.is("element","table")){const n=t.createRange(o.start,t.createPositionBefore(e));if(t.hasContent(n,{ignoreWhitespaces:!0}))return null;const i=t.createRange(t.createPositionAfter(e),o.end);return t.hasContent(i,{ignoreWhitespaces:!0})?null:e}return null}function ye(e,t,o,n,i=0){if(t<1)return;return C(e,t,i).filter((({column:e,cellWidth:t})=>Ae(e,t,o))).map((({cell:e})=>y(e,t,n)))}function Te(e,t,o,n){if(t<1)return;return T(e,t).filter((({row:e,cellHeight:t})=>Ae(e,t,o))).map((({cell:e,column:o})=>A(e,o,t,n)))}function Ae(e,t,o){const n=e+t-1,{first:i,last:l}=o;return e>=i&&e<=l||e<i&&n>=i}class xe extends e.Plugin{static get pluginName(){return"TableKeyboard"}static get requires(){return[ke,F]}init(){const e=this.editor.editing.view.document;this.listenTo(e,"arrowKey",((...e)=>this._onArrowKey(...e)),{context:"table"}),this.listenTo(e,"tab",((...e)=>this._handleTabOnSelectedTable(...e)),{context:"figure"}),this.listenTo(e,"tab",((...e)=>this._handleTab(...e)),{context:["th","td"]})}_handleTabOnSelectedTable(e,t){const o=this.editor,n=o.model.document.selection.getSelectedElement();n&&n.is("element","table")&&(t.preventDefault(),t.stopPropagation(),e.stop(),o.model.change((e=>{e.setSelection(e.createRangeIn(n.getChild(0).getChild(0)))})))}_handleTab(e,t){const o=this.editor,n=this.editor.plugins.get(F),i=o.model.document.selection,l=!t.shiftKey;let r=n.getTableCellsContainingSelection(i)[0];if(r||(r=this.editor.plugins.get("TableSelection").getFocusCell()),!r)return;t.preventDefault(),t.stopPropagation(),e.stop();const s=r.parent,a=s.parent,c=a.getChildIndex(s),d=s.getChildIndex(r),u=0===d;if(!l&&u&&0===c)return void o.model.change((e=>{e.setSelection(e.createRangeOn(a))}));const h=d===s.childCount-1,b=c===n.getRows(a)-1;if(l&&b&&h&&(o.execute("insertTableRowBelow"),c===n.getRows(a)-1))return void o.model.change((e=>{e.setSelection(e.createRangeOn(a))}));let m;if(l&&h){const e=a.getChild(c+1);m=e.getChild(0)}else if(!l&&u){const e=a.getChild(c-1);m=e.getChild(e.childCount-1)}else m=s.getChild(d+(l?1:-1));o.model.change((e=>{e.setSelection(e.createRangeIn(m))}))}_onArrowKey(e,t){const o=this.editor,n=t.keyCode,i=(0,s.getLocalizedArrowKeyCodeDirection)(n,o.locale.contentLanguageDirection);this._handleArrowKeys(i,t.shiftKey)&&(t.preventDefault(),t.stopPropagation(),e.stop())}_handleArrowKeys(e,t){const o=this.editor.plugins.get(F),n=this.editor.model,i=n.document.selection,l=["right","down"].includes(e),r=o.getSelectedTableCells(i);if(r.length){let o;return o=t?this.editor.plugins.get("TableSelection").getFocusCell():l?r[r.length-1]:r[0],this._navigateFromCellInDirection(o,e,t),!0}const s=i.focus.findAncestor("tableCell");if(!s)return!1;if(!i.isCollapsed)if(t){if(i.isBackward==l&&!i.containsEntireContent(s))return!1}else{const e=i.getSelectedElement();if(!e||!n.schema.isObject(e))return!1}return!!this._isSelectionAtCellEdge(i,s,l)&&(this._navigateFromCellInDirection(s,e,t),!0)}_isSelectionAtCellEdge(e,t,o){const n=this.editor.model,i=this.editor.model.schema,l=o?e.getLastPosition():e.getFirstPosition();if(!i.getLimitElement(l).is("element","tableCell")){return n.createPositionAt(t,o?"end":0).isTouching(l)}const r=n.createSelection(l);return n.modifySelection(r,{direction:o?"forward":"backward"}),l.isEqual(r.focus)}_navigateFromCellInDirection(e,t,o=!1){const n=this.editor.model,i=e.findAncestor("table"),l=[...new u(i,{includeAllSlots:!0})],{row:r,column:s}=l[l.length-1],a=l.find((({cell:t})=>t==e));let{row:c,column:d}=a;switch(t){case"left":d--;break;case"up":c--;break;case"right":d+=a.cellWidth;break;case"down":c+=a.cellHeight}if(c<0||c>r||d<0&&c<=0||d>s&&c>=r)return void n.change((e=>{e.setSelection(e.createRangeOn(i))}));d<0?(d=o?0:s,c--):d>s&&(d=o?s:0,c++);const h=l.find((e=>e.row==c&&e.column==d)).cell,b=["right","down"].includes(t),m=this.editor.plugins.get("TableSelection");if(o&&m.isEnabled){const t=m.getAnchorCell()||e;m.setCellSelection(t,h)}else{const e=n.createPositionAt(h,b?0:"end");n.change((t=>{t.setSelection(e)}))}}}var Ve=o(492);class Se extends Ve.DomEventObserver{constructor(e){super(e),this.domEventType=["mousemove","mouseleave"]}onDomEvent(e){this.fire(e.type,e)}}class Re extends e.Plugin{static get pluginName(){return"TableMouse"}static get requires(){return[ke,F]}init(){this.editor.editing.view.addObserver(Se),this._enableShiftClickSelection(),this._enableMouseDragSelection()}_enableShiftClickSelection(){const e=this.editor,t=e.plugins.get(F);let o=!1;const n=e.plugins.get(ke);this.listenTo(e.editing.view.document,"mousedown",((i,l)=>{const r=e.model.document.selection;if(!this.isEnabled||!n.isEnabled)return;if(!l.domEvent.shiftKey)return;const s=n.getAnchorCell()||t.getTableCellsContainingSelection(r)[0];if(!s)return;const a=this._getModelTableCellFromDomEvent(l);a&&Ie(s,a)&&(o=!0,n.setCellSelection(s,a),l.preventDefault())})),this.listenTo(e.editing.view.document,"mouseup",(()=>{o=!1})),this.listenTo(e.editing.view.document,"selectionChange",(e=>{o&&e.stop()}),{priority:"highest"})}_enableMouseDragSelection(){const e=this.editor;let t,o,n=!1,i=!1;const l=e.plugins.get(ke);this.listenTo(e.editing.view.document,"mousedown",((e,o)=>{this.isEnabled&&l.isEnabled&&(o.domEvent.shiftKey||o.domEvent.ctrlKey||o.domEvent.altKey||(t=this._getModelTableCellFromDomEvent(o)))})),this.listenTo(e.editing.view.document,"mousemove",((e,r)=>{if(!r.domEvent.buttons)return;if(!t)return;const s=this._getModelTableCellFromDomEvent(r);s&&Ie(t,s)&&(o=s,n||o==t||(n=!0)),n&&(i=!0,l.setCellSelection(t,o),r.preventDefault())})),this.listenTo(e.editing.view.document,"mouseup",(()=>{n=!1,i=!1,t=null,o=null})),this.listenTo(e.editing.view.document,"selectionChange",(e=>{i&&e.stop()}),{priority:"highest"})}_getModelTableCellFromDomEvent(e){const t=e.target,o=this.editor.editing.view.createPositionAt(t,0);return this.editor.editing.mapper.toModelPosition(o).parent.findAncestor("tableCell",{includeSelf:!0})}}function Ie(e,t){return e.parent.parent==t.parent.parent}var Pe=o(660),Ee={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(Pe.Z,Ee);Pe.Z.locals;class Be extends e.Plugin{static get requires(){return[ce,pe,ke,Re,xe,ve,t.Widget]}static get pluginName(){return"Table"}}class ze extends e.Plugin{static get pluginName(){return"PlainTableOutput"}static get requires(){return[Be]}init(){const e=this.editor;e.conversion.for("dataDowncast").elementToStructure({model:"table",view:Ne,converterPriority:"high"}),e.plugins.has("TableCaption")&&e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>{if("table"===e.parent.name)return t.createContainerElement("caption")},converterPriority:"high"}),e.plugins.has("TableProperties")&&function(e){const t={"border-width":"tableBorderWidth","border-color":"tableBorderColor","border-style":"tableBorderStyle","background-color":"tableBackgroundColor"};for(const[o,n]of Object.entries(t))e.conversion.for("dataDowncast").add((e=>e.on(`attribute:${n}:table`,((e,t,n)=>{const{item:i,attributeNewValue:l}=t,{mapper:r,writer:s}=n;if(!n.consumable.consume(i,e.name))return;const a=r.toViewElement(i);l?s.setStyle(o,l,a):s.removeStyle(o,a)}),{priority:"high"})))}(e)}}function Ne(e,{writer:t}){const o=e.getAttribute("headingRows")||0,n=t.createSlot((e=>e.is("element","tableRow")&&e.index<o)),i=t.createSlot((e=>e.is("element","tableRow")&&e.index>=o)),l=t.createSlot((e=>!e.is("element","tableRow"))),r=t.createContainerElement("thead",null,n),s=t.createContainerElement("tbody",null,i),a=[];return o&&a.push(r),o<e.childCount&&a.push(s),t.createContainerElement("table",null,[l,...a])}function Le(e){const t=e.getSelectedElement();return t&&Fe(t)?t:null}function We(e){const t=e.getFirstPosition();if(!t)return null;let o=t.parent;for(;o;){if(o.is("element")&&Fe(o))return o;o=o.parent}return null}function Fe(e){return!!e.getCustomProperty("table")&&(0,t.isWidget)(e)}class De extends e.Plugin{static get requires(){return[t.WidgetToolbarRepository]}static get pluginName(){return"TableToolbar"}afterInit(){const e=this.editor,o=e.t,n=e.plugins.get(t.WidgetToolbarRepository),i=e.config.get("table.contentToolbar"),l=e.config.get("table.tableToolbar");i&&n.register("tableContent",{ariaLabel:o("Table toolbar"),items:i,getRelatedElement:We}),l&&n.register("table",{ariaLabel:o("Table toolbar"),items:l,getRelatedElement:Le})}}var Me=o(252),He={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(Me.Z,He);Me.Z.locals;class Oe extends ue.View{constructor(e,t){super(e);const o=this.bindTemplate;this.set("value",""),this.set("id"),this.set("isReadOnly",!1),this.set("hasError",!1),this.set("isFocused",!1),this.set("isEmpty",!0),this.set("ariaDescribedById"),this.options=t,this._dropdownView=this._createDropdownView(),this._inputView=this._createInputTextView(),this._stillTyping=!1,this.setTemplate({tag:"div",attributes:{class:["ck","ck-input-color",o.if("hasError","ck-error")],id:o.to("id"),"aria-invalid":o.if("hasError",!0),"aria-describedby":o.to("ariaDescribedById")},children:[this._dropdownView,this._inputView]}),this.on("change:value",((e,t,o)=>this._setInputValue(o)))}focus(){this._inputView.focus()}_createDropdownView(){const e=this.locale,t=e.t,o=this.bindTemplate,n=this._createColorGrid(e),i=(0,ue.createDropdown)(e),l=new ue.View,r=this._createRemoveColorButton();return l.setTemplate({tag:"span",attributes:{class:["ck","ck-input-color__button__preview"],style:{backgroundColor:o.to("value")}},children:[{tag:"span",attributes:{class:["ck","ck-input-color__button__preview__no-color-indicator",o.if("value","ck-hidden",(e=>""!=e))]}}]}),i.buttonView.extendTemplate({attributes:{class:"ck-input-color__button"}}),i.buttonView.children.add(l),i.buttonView.label=t("Color picker"),i.buttonView.tooltip=!0,i.panelPosition="rtl"===e.uiLanguageDirection?"se":"sw",i.panelView.children.add(r),i.panelView.children.add(n),i.bind("isEnabled").to(this,"isReadOnly",(e=>!e)),i}_createInputTextView(){const e=this.locale,t=new ue.InputTextView(e);return t.extendTemplate({on:{blur:t.bindTemplate.to("blur")}}),t.value=this.value,t.bind("isReadOnly","hasError").to(this),this.bind("isFocused","isEmpty").to(t),t.on("input",(()=>{const e=t.element.value,o=this.options.colorDefinitions.find((t=>e===t.label));this._stillTyping=!0,this.value=o&&o.color||e})),t.on("blur",(()=>{this._stillTyping=!1,this._setInputValue(t.element.value)})),t.delegate("input").to(this),t}_createRemoveColorButton(){const t=this.locale,o=t.t,n=new ue.ButtonView(t),i=this.options.defaultColorValue||"",l=o(i?"Restore default":"Remove color");return n.class="ck-input-color__remove-color",n.withText=!0,n.icon=e.icons.eraser,n.label=l,n.on("execute",(()=>{this.value=i,this._dropdownView.isOpen=!1,this.fire("input")})),n}_createColorGrid(e){const t=new ue.ColorGridView(e,{colorDefinitions:this.options.colorDefinitions,columns:this.options.columns});return t.on("execute",((e,t)=>{this.value=t.value,this._dropdownView.isOpen=!1,this.fire("input")})),t.bind("selectedColor").to(this,"value"),t}_setInputValue(e){if(!this._stillTyping){const t=je(e),o=this.options.colorDefinitions.find((e=>t===je(e.color)));this._inputView.value=o?o.label:e||""}}}function je(e){return e.replace(/([(,])\s+/g,"$1").replace(/^\s+|\s+(?=[),\s]|$)/g,"").replace(/,|\s/g," ")}const Ue=e=>""===e;function Ze(e){return{none:e("None"),solid:e("Solid"),dotted:e("Dotted"),dashed:e("Dashed"),double:e("Double"),groove:e("Groove"),ridge:e("Ridge"),inset:e("Inset"),outset:e("Outset")}}function $e(e){return e('The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".')}function Ke(e){return e('The value is invalid. Try "10px" or "2em" or simply "2".')}function qe(e){return e=e.trim(),Ue(e)||(0,Ve.isColor)(e)}function Ge(e){return e=e.trim(),Ue(e)||tt(e)||(0,Ve.isLength)(e)||(0,Ve.isPercentage)(e)}function Je(e){return e=e.trim(),Ue(e)||tt(e)||(0,Ve.isLength)(e)}function Xe(e,t){const o=new s.Collection,n=Ze(e.t);for(const i in n){const l={type:"button",model:new ue.Model({_borderStyleValue:i,label:n[i],withText:!0})};"none"===i?l.model.bind("isOn").to(e,"borderStyle",(e=>"none"===t?!e:e===i)):l.model.bind("isOn").to(e,"borderStyle",(e=>e===i)),o.add(l)}return o}function Ye(e){const{view:t,icons:o,toolbar:n,labels:i,propertyName:l,nameToValue:r,defaultValue:s}=e;for(const e in i){const a=new ue.ButtonView(t.locale);a.set({label:i[e],icon:o[e],tooltip:i[e]});const c=r?r(e):e;a.bind("isOn").to(t,l,(e=>{let t=e;return""===e&&s&&(t=s),c===t})),a.on("execute",(()=>{t[l]=c})),n.items.add(a)}}const Qe=[{color:"hsl(0, 0%, 0%)",label:"Black"},{color:"hsl(0, 0%, 30%)",label:"Dim grey"},{color:"hsl(0, 0%, 60%)",label:"Grey"},{color:"hsl(0, 0%, 90%)",label:"Light grey"},{color:"hsl(0, 0%, 100%)",label:"White",hasBorder:!0},{color:"hsl(0, 75%, 60%)",label:"Red"},{color:"hsl(30, 75%, 60%)",label:"Orange"},{color:"hsl(60, 75%, 60%)",label:"Yellow"},{color:"hsl(90, 75%, 60%)",label:"Light green"},{color:"hsl(120, 75%, 60%)",label:"Green"},{color:"hsl(150, 75%, 60%)",label:"Aquamarine"},{color:"hsl(180, 75%, 60%)",label:"Turquoise"},{color:"hsl(210, 75%, 60%)",label:"Light blue"},{color:"hsl(240, 75%, 60%)",label:"Blue"},{color:"hsl(270, 75%, 60%)",label:"Purple"}];function et(e){return(t,o,n)=>{const i=new Oe(t.locale,{colorDefinitions:(l=e.colorConfig,l.map((e=>({color:e.model,label:e.label,options:{hasBorder:e.hasBorder}})))),columns:e.columns,defaultColorValue:e.defaultColorValue});var l;return i.set({id:o,ariaDescribedById:n}),i.bind("isReadOnly").to(t,"isEnabled",(e=>!e)),i.bind("hasError").to(t,"errorText",(e=>!!e)),i.on("input",(()=>{t.errorText=null})),t.bind("isEmpty","isFocused").to(i),i}}function tt(e){const t=parseFloat(e);return!Number.isNaN(t)&&e===String(t)}var ot=o(333),nt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(ot.Z,nt);ot.Z.locals;class it extends ue.View{constructor(e,t={}){super(e);const o=this.bindTemplate;this.set("class",t.class||null),this.children=this.createCollection(),t.children&&t.children.forEach((e=>this.children.add(e))),this.set("_role",null),this.set("_ariaLabelledBy",null),t.labelView&&this.set({_role:"group",_ariaLabelledBy:t.labelView.id}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__row",o.to("class")],role:o.to("_role"),"aria-labelledby":o.to("_ariaLabelledBy")},children:this.children})}}var lt=o(934),rt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(lt.Z,rt);lt.Z.locals;var st=o(686),at={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(st.Z,at);st.Z.locals;var ct=o(773),dt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(ct.Z,dt);ct.Z.locals;const ut={left:e.icons.alignLeft,center:e.icons.alignCenter,right:e.icons.alignRight,justify:e.icons.alignJustify,top:e.icons.alignTop,middle:e.icons.alignMiddle,bottom:e.icons.alignBottom};class ht extends ue.View{constructor(e,t){super(e),this.set({borderStyle:"",borderWidth:"",borderColor:"",padding:"",backgroundColor:"",width:"",height:"",horizontalAlignment:"",verticalAlignment:""}),this.options=t;const{borderStyleDropdown:o,borderWidthInput:n,borderColorInput:i,borderRowLabel:l}=this._createBorderFields(),{backgroundRowLabel:r,backgroundInput:a}=this._createBackgroundFields(),{widthInput:c,operatorLabel:d,heightInput:u,dimensionsLabel:h}=this._createDimensionFields(),{horizontalAlignmentToolbar:b,verticalAlignmentToolbar:m,alignmentLabel:g}=this._createAlignmentFields();this.focusTracker=new s.FocusTracker,this.keystrokes=new s.KeystrokeHandler,this.children=this.createCollection(),this.borderStyleDropdown=o,this.borderWidthInput=n,this.borderColorInput=i,this.backgroundInput=a,this.paddingInput=this._createPaddingField(),this.widthInput=c,this.heightInput=u,this.horizontalAlignmentToolbar=b,this.verticalAlignmentToolbar=m;const{saveButtonView:p,cancelButtonView:f}=this._createActionButtons();this.saveButtonView=p,this.cancelButtonView=f,this._focusables=new ue.ViewCollection,this._focusCycler=new ue.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.add(new ue.FormHeaderView(e,{label:this.t("Cell properties")})),this.children.add(new it(e,{labelView:l,children:[l,o,i,n],class:"ck-table-form__border-row"})),this.children.add(new it(e,{labelView:r,children:[r,a],class:"ck-table-form__background-row"})),this.children.add(new it(e,{children:[new it(e,{labelView:h,children:[h,c,d,u],class:"ck-table-form__dimensions-row"}),new it(e,{children:[this.paddingInput],class:"ck-table-cell-properties-form__padding-row"})]})),this.children.add(new it(e,{labelView:g,children:[g,b,m],class:"ck-table-cell-properties-form__alignment-row"})),this.children.add(new it(e,{children:[this.saveButtonView,this.cancelButtonView],class:"ck-table-form__action-row"})),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-table-form","ck-table-cell-properties-form"],tabindex:"-1"},children:this.children})}render(){super.render(),(0,ue.submitHandler)({view:this}),[this.borderStyleDropdown,this.borderColorInput,this.borderWidthInput,this.backgroundInput,this.widthInput,this.heightInput,this.paddingInput,this.horizontalAlignmentToolbar,this.verticalAlignmentToolbar,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBorderFields(){const e=this.options.defaultTableCellProperties,t={style:e.borderStyle,width:e.borderWidth,color:e.borderColor},o=et({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color}),n=this.locale,i=this.t,l=new ue.LabelView(n);l.text=i("Border");const r=Ze(i),s=new ue.LabeledFieldView(n,ue.createLabeledDropdown);s.set({label:i("Style"),class:"ck-table-form__border-style"}),s.fieldView.buttonView.set({isOn:!1,withText:!0,tooltip:i("Style")}),s.fieldView.buttonView.bind("label").to(this,"borderStyle",(e=>r[e||"none"])),s.fieldView.on("execute",(e=>{this.borderStyle=e.source._borderStyleValue})),s.bind("isEmpty").to(this,"borderStyle",(e=>!e)),(0,ue.addListToDropdown)(s.fieldView,Xe(this,t.style));const a=new ue.LabeledFieldView(n,ue.createLabeledInputText);a.set({label:i("Width"),class:"ck-table-form__border-width"}),a.fieldView.bind("value").to(this,"borderWidth"),a.bind("isEnabled").to(this,"borderStyle",bt),a.fieldView.on("input",(()=>{this.borderWidth=a.fieldView.element.value}));const c=new ue.LabeledFieldView(n,o);return c.set({label:i("Color"),class:"ck-table-form__border-color"}),c.fieldView.bind("value").to(this,"borderColor"),c.bind("isEnabled").to(this,"borderStyle",bt),c.fieldView.on("input",(()=>{this.borderColor=c.fieldView.value})),this.on("change:borderStyle",((e,o,n,i)=>{bt(n)||(this.borderColor="",this.borderWidth=""),bt(i)||(this.borderColor=t.color,this.borderWidth=t.width)})),{borderRowLabel:l,borderStyleDropdown:s,borderColorInput:c,borderWidthInput:a}}_createBackgroundFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Background");const n=et({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableCellProperties.backgroundColor}),i=new ue.LabeledFieldView(e,n);return i.set({label:t("Color"),class:"ck-table-cell-properties-form__background"}),i.fieldView.bind("value").to(this,"backgroundColor"),i.fieldView.on("input",(()=>{this.backgroundColor=i.fieldView.value})),{backgroundRowLabel:o,backgroundInput:i}}_createDimensionFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Dimensions");const n=new ue.LabeledFieldView(e,ue.createLabeledInputText);n.set({label:t("Width"),class:"ck-table-form__dimensions-row__width"}),n.fieldView.bind("value").to(this,"width"),n.fieldView.on("input",(()=>{this.width=n.fieldView.element.value}));const i=new ue.View(e);i.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const l=new ue.LabeledFieldView(e,ue.createLabeledInputText);return l.set({label:t("Height"),class:"ck-table-form__dimensions-row__height"}),l.fieldView.bind("value").to(this,"height"),l.fieldView.on("input",(()=>{this.height=l.fieldView.element.value})),{dimensionsLabel:o,widthInput:n,operatorLabel:i,heightInput:l}}_createPaddingField(){const e=this.locale,t=this.t,o=new ue.LabeledFieldView(e,ue.createLabeledInputText);return o.set({label:t("Padding"),class:"ck-table-cell-properties-form__padding"}),o.fieldView.bind("value").to(this,"padding"),o.fieldView.on("input",(()=>{this.padding=o.fieldView.element.value})),o}_createAlignmentFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Table cell text alignment");const n=new ue.ToolbarView(e),i="rtl"===this.locale.contentLanguageDirection;n.set({isCompact:!0,ariaLabel:t("Horizontal text alignment toolbar")}),Ye({view:this,icons:ut,toolbar:n,labels:this._horizontalAlignmentLabels,propertyName:"horizontalAlignment",nameToValue:e=>{if(i){if("left"===e)return"right";if("right"===e)return"left"}return e},defaultValue:this.options.defaultTableCellProperties.horizontalAlignment});const l=new ue.ToolbarView(e);return l.set({isCompact:!0,ariaLabel:t("Vertical text alignment toolbar")}),Ye({view:this,icons:ut,toolbar:l,labels:this._verticalAlignmentLabels,propertyName:"verticalAlignment",defaultValue:this.options.defaultTableCellProperties.verticalAlignment}),{horizontalAlignmentToolbar:n,verticalAlignmentToolbar:l,alignmentLabel:o}}_createActionButtons(){const t=this.locale,o=this.t,n=new ue.ButtonView(t),i=new ue.ButtonView(t),l=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.paddingInput];return n.set({label:o("Save"),icon:e.icons.check,class:"ck-button-save",type:"submit",withText:!0}),n.bind("isEnabled").toMany(l,"errorText",((...e)=>e.every((e=>!e)))),i.set({label:o("Cancel"),icon:e.icons.cancel,class:"ck-button-cancel",withText:!0}),i.delegate("execute").to(this,"cancel"),{saveButtonView:n,cancelButtonView:i}}get _horizontalAlignmentLabels(){const e=this.locale,t=this.t,o=t("Align cell text to the left"),n=t("Align cell text to the center"),i=t("Align cell text to the right"),l=t("Justify cell text");return"rtl"===e.uiLanguageDirection?{right:i,center:n,left:o,justify:l}:{left:o,center:n,right:i,justify:l}}get _verticalAlignmentLabels(){const e=this.t;return{top:e("Align cell text to the top"),middle:e("Align cell text to the middle"),bottom:e("Align cell text to the bottom")}}}function bt(e){return"none"!==e}const mt=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)};const gt="object"==typeof global&&global&&global.Object===Object&&global;var pt="object"==typeof self&&self&&self.Object===Object&&self;const ft=gt||pt||Function("return this")();const wt=function(){return ft.Date.now()};var _t=/\s/;const kt=function(e){for(var t=e.length;t--&&_t.test(e.charAt(t)););return t};var vt=/^\s+/;const Ct=function(e){return e?e.slice(0,kt(e)+1).replace(vt,""):e};const yt=ft.Symbol;var Tt=Object.prototype,At=Tt.hasOwnProperty,xt=Tt.toString,Vt=yt?yt.toStringTag:void 0;const St=function(e){var t=At.call(e,Vt),o=e[Vt];try{e[Vt]=void 0;var n=!0}catch(e){}var i=xt.call(e);return n&&(t?e[Vt]=o:delete e[Vt]),i};var Rt=Object.prototype.toString;const It=function(e){return Rt.call(e)};var Pt=yt?yt.toStringTag:void 0;const Et=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Pt&&Pt in Object(e)?St(e):It(e)};const Bt=function(e){return null!=e&&"object"==typeof e};const zt=function(e){return"symbol"==typeof e||Bt(e)&&"[object Symbol]"==Et(e)};var Nt=/^[-+]0x[0-9a-f]+$/i,Lt=/^0b[01]+$/i,Wt=/^0o[0-7]+$/i,Ft=parseInt;const Dt=function(e){if("number"==typeof e)return e;if(zt(e))return NaN;if(mt(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=mt(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=Ct(e);var o=Lt.test(e);return o||Wt.test(e)?Ft(e.slice(2),o?2:8):Nt.test(e)?NaN:+e};var Mt=Math.max,Ht=Math.min;const Ot=function(e,t,o){var n,i,l,r,s,a,c=0,d=!1,u=!1,h=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function b(t){var o=n,l=i;return n=i=void 0,c=t,r=e.apply(l,o)}function m(e){return c=e,s=setTimeout(p,t),d?b(e):r}function g(e){var o=e-a;return void 0===a||o>=t||o<0||u&&e-c>=l}function p(){var e=wt();if(g(e))return f(e);s=setTimeout(p,function(e){var o=t-(e-a);return u?Ht(o,l-(e-c)):o}(e))}function f(e){return s=void 0,h&&n?b(e):(n=i=void 0,r)}function w(){var e=wt(),o=g(e);if(n=arguments,i=this,a=e,o){if(void 0===s)return m(a);if(u)return clearTimeout(s),s=setTimeout(p,t),b(a)}return void 0===s&&(s=setTimeout(p,t)),r}return t=Dt(t)||0,mt(o)&&(d=!!o.leading,l=(u="maxWait"in o)?Mt(Dt(o.maxWait)||0,t):l,h="trailing"in o?!!o.trailing:h),w.cancel=function(){void 0!==s&&clearTimeout(s),c=0,n=a=i=s=void 0},w.flush=function(){return void 0===s?r:f(wt())},w},jt=ue.BalloonPanelView.defaultPositions,Ut=[jt.northArrowSouth,jt.northArrowSouthWest,jt.northArrowSouthEast,jt.southArrowNorth,jt.southArrowNorthWest,jt.southArrowNorthEast,jt.viewportStickyNorth];function Zt(e,t){const o=e.plugins.get("ContextualBalloon");if(We(e.editing.view.document.selection)){let n;n="cell"===t?Kt(e):$t(e),o.updatePosition(n)}}function $t(e){const t=e.model.document.selection.getFirstPosition().findAncestor("table"),o=e.editing.mapper.toViewElement(t);return{target:e.editing.view.domConverter.mapViewToDom(o),positions:Ut}}function Kt(e){const t=e.editing.mapper,o=e.editing.view.domConverter,n=e.model.document.selection;if(n.rangeCount>1)return{target:()=>function(e,t){const o=t.editing.mapper,n=t.editing.view.domConverter,i=Array.from(e).map((e=>{const t=qt(e.start),i=o.toViewElement(t);return new s.Rect(n.mapViewToDom(i))}));return s.Rect.getBoundingRect(i)}(n.getRanges(),e),positions:Ut};const i=qt(n.getFirstPosition()),l=t.toViewElement(i);return{target:o.mapViewToDom(l),positions:Ut}}function qt(e){return e.nodeAfter&&e.nodeAfter.is("element","tableCell")?e.nodeAfter:e.findAncestor("tableCell")}function Gt(e){if(!e||!mt(e))return e;const{top:t,right:o,bottom:n,left:i}=e;return t==o&&o==n&&n==i?t:void 0}function Jt(e,t){const o=parseFloat(e);return Number.isNaN(o)||String(o)!==String(e)?e:`${o}${t}`}function Xt(e,t={}){const o=Object.assign({borderStyle:"none",borderWidth:"",borderColor:"",backgroundColor:"",width:"",height:""},e);return t.includeAlignmentProperty&&!o.alignment&&(o.alignment="center"),t.includePaddingProperty&&!o.padding&&(o.padding=""),t.includeVerticalAlignmentProperty&&!o.verticalAlignment&&(o.verticalAlignment="middle"),t.includeHorizontalAlignmentProperty&&!o.horizontalAlignment&&(o.horizontalAlignment=t.isRightToLeftContent?"right":"left"),o}const Yt={borderStyle:"tableCellBorderStyle",borderColor:"tableCellBorderColor",borderWidth:"tableCellBorderWidth",width:"tableCellWidth",height:"tableCellHeight",padding:"tableCellPadding",backgroundColor:"tableCellBackgroundColor",horizontalAlignment:"tableCellHorizontalAlignment",verticalAlignment:"tableCellVerticalAlignment"};class Qt extends e.Plugin{static get requires(){return[ue.ContextualBalloon]}static get pluginName(){return"TableCellPropertiesUI"}constructor(e){super(e),e.config.define("table.tableCellProperties",{borderColors:Qe,backgroundColors:Qe})}init(){const e=this.editor,t=e.t;this._defaultTableCellProperties=Xt(e.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:"rtl"===e.locale.contentLanguageDirection}),this._balloon=e.plugins.get(ue.ContextualBalloon),this.view=this._createPropertiesView(),this._undoStepBatch=null,e.ui.componentFactory.add("tableCellProperties",(o=>{const n=new ue.ButtonView(o);n.set({label:t("Cell properties"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.105 18-.17 1H2.5A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1h15A1.5 1.5 0 0 1 19 2.5v9.975l-.85-.124-.15-.302V8h-5v4h.021l-.172.351-1.916.28-.151.027c-.287.063-.54.182-.755.341L8 13v5h3.105zM2 12h5V8H2v4zm10-4H8v4h4V8zM2 2v5h5V2H2zm0 16h5v-5H2v5zM13 7h5V2h-5v5zM8 2v5h4V2H8z" opacity=".6"/><path d="m15.5 11.5 1.323 2.68 2.957.43-2.14 2.085.505 2.946L15.5 18.25l-2.645 1.39.505-2.945-2.14-2.086 2.957-.43L15.5 11.5zM13 6a1 1 0 0 1 1 1v3.172a2.047 2.047 0 0 0-.293.443l-.858 1.736-1.916.28-.151.027A1.976 1.976 0 0 0 9.315 14H7a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h6zm-1 2H8v4h4V8z"/></svg>',tooltip:!0}),this.listenTo(n,"execute",(()=>this._showView()));const i=Object.values(Yt).map((t=>e.commands.get(t)));return n.bind("isEnabled").toMany(i,"isEnabled",((...e)=>e.some((e=>e)))),n}))}destroy(){super.destroy(),this.view.destroy()}_createPropertiesView(){const e=this.editor,t=e.editing.view.document,o=e.config.get("table.tableCellProperties"),n=(0,ue.normalizeColorOptions)(o.borderColors),i=(0,ue.getLocalizedColorOptions)(e.locale,n),l=(0,ue.normalizeColorOptions)(o.backgroundColors),r=(0,ue.getLocalizedColorOptions)(e.locale,l),s=new ht(e.locale,{borderColors:i,backgroundColors:r,defaultTableCellProperties:this._defaultTableCellProperties}),a=e.t;s.render(),this.listenTo(s,"submit",(()=>{this._hideView()})),this.listenTo(s,"cancel",(()=>{this._undoStepBatch.operations.length&&e.execute("undo",this._undoStepBatch),this._hideView()})),s.keystrokes.set("Esc",((e,t)=>{this._hideView(),t()})),this.listenTo(e.ui,"update",(()=>{We(t.selection)?this._isViewVisible&&Zt(e,"cell"):this._hideView()})),(0,ue.clickOutsideHandler)({emitter:s,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const c=$e(a),d=Ke(a);return s.on("change:borderStyle",this._getPropertyChangeCallback("tableCellBorderStyle",this._defaultTableCellProperties.borderStyle)),s.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:s.borderColorInput,commandName:"tableCellBorderColor",errorText:c,validator:qe,defaultValue:this._defaultTableCellProperties.borderColor})),s.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:s.borderWidthInput,commandName:"tableCellBorderWidth",errorText:d,validator:Je,defaultValue:this._defaultTableCellProperties.borderWidth})),s.on("change:padding",this._getValidatedPropertyChangeCallback({viewField:s.paddingInput,commandName:"tableCellPadding",errorText:d,validator:Ge,defaultValue:this._defaultTableCellProperties.padding})),s.on("change:width",this._getValidatedPropertyChangeCallback({viewField:s.widthInput,commandName:"tableCellWidth",errorText:d,validator:Ge,defaultValue:this._defaultTableCellProperties.width})),s.on("change:height",this._getValidatedPropertyChangeCallback({viewField:s.heightInput,commandName:"tableCellHeight",errorText:d,validator:Ge,defaultValue:this._defaultTableCellProperties.height})),s.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:s.backgroundInput,commandName:"tableCellBackgroundColor",errorText:c,validator:qe,defaultValue:this._defaultTableCellProperties.backgroundColor})),s.on("change:horizontalAlignment",this._getPropertyChangeCallback("tableCellHorizontalAlignment",this._defaultTableCellProperties.horizontalAlignment)),s.on("change:verticalAlignment",this._getPropertyChangeCallback("tableCellVerticalAlignment",this._defaultTableCellProperties.verticalAlignment)),s}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableCellBorderStyle");Object.entries(Yt).map((([t,o])=>{const n=this._defaultTableCellProperties[t]||"";return[t,e.get(o).value||n]})).forEach((([e,o])=>{("borderColor"!==e&&"borderWidth"!==e||"none"!==t.value)&&this.view.set(e,o)}))}_showView(){const e=this.editor;this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:Kt(e)}),this._undoStepBatch=e.model.createBatch(),this.view.focus()}_hideView(){if(!this._isViewInBalloon)return;const e=this.editor;this.stopListening(e.ui,"update"),this.view.saveButtonView.focus(),this._balloon.remove(this.view),this.editor.editing.view.focus()}get _isViewVisible(){return this._balloon.visibleView===this.view}get _isViewInBalloon(){return this._balloon.hasView(this.view)}_getPropertyChangeCallback(e,t){return(o,n,i,l)=>{(l||t!==i)&&this.editor.execute(e,{value:i,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:o,validator:n,errorText:i,defaultValue:l}=e,r=Ot((()=>{o.errorText=i}),500);return(e,i,s,a)=>{r.cancel(),(a||l!==s)&&(n(s)?(this.editor.execute(t,{value:s,batch:this._undoStepBatch}),o.errorText=null):r())}}}function eo(e,t){const{viewElement:o,defaultValue:n,modelAttribute:i,styleName:l,reduceBoxSides:r=!1}=t;e.for("upcast").attributeToAttribute({view:{name:o,styles:{[l]:/[\s\S]+/}},model:{key:i,value:e=>{const t=e.getNormalizedStyle(l),o=r?io(t):t;if(n!==o)return o}}})}function to(e,t,o,n){e.for("upcast").add((e=>e.on("element:"+t,((e,t,i)=>{if(!t.modelRange)return;const l=["border-top-width","border-top-color","border-top-style","border-bottom-width","border-bottom-color","border-bottom-style","border-right-width","border-right-color","border-right-style","border-left-width","border-left-color","border-left-style"].filter((e=>t.viewItem.hasStyle(e)));if(!l.length)return;const r={styles:l};if(!i.consumable.test(t.viewItem,r))return;const s=[...t.modelRange.getItems({shallow:!0})].pop();i.consumable.consume(t.viewItem,r);const a={style:t.viewItem.getNormalizedStyle("border-style"),color:t.viewItem.getNormalizedStyle("border-color"),width:t.viewItem.getNormalizedStyle("border-width")},c={style:io(a.style),color:io(a.color),width:io(a.width)};c.style!==n.style&&i.writer.setAttribute(o.style,c.style,s),c.color!==n.color&&i.writer.setAttribute(o.color,c.color,s),c.width!==n.width&&i.writer.setAttribute(o.width,c.width,s)}))))}function oo(e,{modelElement:t,modelAttribute:o,styleName:n}){e.for("downcast").attributeToAttribute({model:{name:t,key:o},view:e=>({key:"style",value:{[n]:e}})})}function no(e,{modelAttribute:t,styleName:o}){e.for("downcast").add((e=>e.on(`attribute:${t}:table`,((e,t,n)=>{const{item:i,attributeNewValue:l}=t,{mapper:r,writer:s}=n;if(!n.consumable.consume(t.item,e.name))return;const a=[...r.toViewElement(i).getChildren()].find((e=>e.is("element","table")));l?s.setStyle(o,l,a):s.removeStyle(o,a)}))))}function io(e){if(!e)return;return["top","right","bottom","left"].map((t=>e[t])).reduce(((e,t)=>e==t?e:null))||e}class lo extends e.Command{constructor(e,t,o){super(e),this.attributeName=t,this._defaultValue=o}refresh(){const e=this.editor,t=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e.model.document.selection);this.isEnabled=!!t.length,this.value=this._getSingleValue(t)}execute(e={}){const{value:t,batch:o}=e,n=this.editor.model,i=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(n.document.selection),l=this._getValueToSet(t);n.enqueueChange(o,(e=>{l?i.forEach((t=>e.setAttribute(this.attributeName,l,t))):i.forEach((t=>e.removeAttribute(this.attributeName,t)))}))}_getAttribute(e){if(!e)return;const t=e.getAttribute(this.attributeName);return t!==this._defaultValue?t:void 0}_getValueToSet(e){if(e!==this._defaultValue)return e}_getSingleValue(e){const t=this._getAttribute(e[0]);return e.every((e=>this._getAttribute(e)===t))?t:void 0}}class ro extends lo{constructor(e,t){super(e,"tableCellPadding",t)}_getAttribute(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){if((e=Jt(e,"px"))!==this._defaultValue)return e}}class so extends lo{constructor(e,t){super(e,"tableCellWidth",t)}_getValueToSet(e){if((e=Jt(e,"px"))!==this._defaultValue)return e}}class ao extends lo{constructor(e,t){super(e,"tableCellHeight",t)}_getValueToSet(e){return(e=Jt(e,"px"))===this._defaultValue?null:e}}class co extends lo{constructor(e,t){super(e,"tableCellBackgroundColor",t)}}class uo extends lo{constructor(e,t){super(e,"tableCellVerticalAlignment",t)}}class ho extends lo{constructor(e,t){super(e,"tableCellHorizontalAlignment",t)}}class bo extends lo{constructor(e,t){super(e,"tableCellBorderStyle",t)}_getAttribute(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class mo extends lo{constructor(e,t){super(e,"tableCellBorderColor",t)}_getAttribute(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class go extends lo{constructor(e,t){super(e,"tableCellBorderWidth",t)}_getAttribute(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){if((e=Jt(e,"px"))!==this._defaultValue)return e}}const po=/^(top|middle|bottom)$/,fo=/^(left|center|right|justify)$/;class wo extends e.Plugin{static get pluginName(){return"TableCellPropertiesEditing"}static get requires(){return[ce]}init(){const e=this.editor,t=e.model.schema,o=e.conversion;e.config.define("table.tableCellProperties.defaultProperties",{});const n=Xt(e.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:"rtl"===e.locale.contentLanguageDirection});e.data.addStyleProcessorRules(Ve.addBorderRules),function(e,t,o){const n={width:"tableCellBorderWidth",color:"tableCellBorderColor",style:"tableCellBorderStyle"};e.extend("tableCell",{allowAttributes:Object.values(n)}),to(t,"td",n,o),to(t,"th",n,o),oo(t,{modelElement:"tableCell",modelAttribute:n.style,styleName:"border-style"}),oo(t,{modelElement:"tableCell",modelAttribute:n.color,styleName:"border-color"}),oo(t,{modelElement:"tableCell",modelAttribute:n.width,styleName:"border-width"})}(t,o,{color:n.borderColor,style:n.borderStyle,width:n.borderWidth}),e.commands.add("tableCellBorderStyle",new bo(e,n.borderStyle)),e.commands.add("tableCellBorderColor",new mo(e,n.borderColor)),e.commands.add("tableCellBorderWidth",new go(e,n.borderWidth)),_o(t,o,{modelAttribute:"tableCellWidth",styleName:"width",defaultValue:n.width}),e.commands.add("tableCellWidth",new so(e,n.width)),_o(t,o,{modelAttribute:"tableCellHeight",styleName:"height",defaultValue:n.height}),e.commands.add("tableCellHeight",new ao(e,n.height)),e.data.addStyleProcessorRules(Ve.addPaddingRules),_o(t,o,{modelAttribute:"tableCellPadding",styleName:"padding",reduceBoxSides:!0,defaultValue:n.padding}),e.commands.add("tableCellPadding",new ro(e,n.padding)),e.data.addStyleProcessorRules(Ve.addBackgroundRules),_o(t,o,{modelAttribute:"tableCellBackgroundColor",styleName:"background-color",defaultValue:n.backgroundColor}),e.commands.add("tableCellBackgroundColor",new co(e,n.backgroundColor)),function(e,t,o){e.extend("tableCell",{allowAttributes:["tableCellHorizontalAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"tableCellHorizontalAlignment"},view:e=>({key:"style",value:{"text-align":e}})}),t.for("upcast").attributeToAttribute({view:{name:/^(td|th)$/,styles:{"text-align":fo}},model:{key:"tableCellHorizontalAlignment",value:e=>{const t=e.getStyle("text-align");return t===o?null:t}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{align:fo}},model:{key:"tableCellHorizontalAlignment",value:e=>{const t=e.getAttribute("align");return t===o?null:t}}})}(t,o,n.horizontalAlignment),e.commands.add("tableCellHorizontalAlignment",new ho(e,n.horizontalAlignment)),function(e,t,o){e.extend("tableCell",{allowAttributes:["tableCellVerticalAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"tableCellVerticalAlignment"},view:e=>({key:"style",value:{"vertical-align":e}})}),t.for("upcast").attributeToAttribute({view:{name:/^(td|th)$/,styles:{"vertical-align":po}},model:{key:"tableCellVerticalAlignment",value:e=>{const t=e.getStyle("vertical-align");return t===o?null:t}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{valign:po}},model:{key:"tableCellVerticalAlignment",value:e=>{const t=e.getAttribute("valign");return t===o?null:t}}})}(t,o,n.verticalAlignment),e.commands.add("tableCellVerticalAlignment",new uo(e,n.verticalAlignment))}}function _o(e,t,o){const{modelAttribute:n}=o;e.extend("tableCell",{allowAttributes:[n]}),eo(t,{viewElement:/^(td|th)$/,...o}),oo(t,{modelElement:"tableCell",...o})}class ko extends e.Plugin{static get pluginName(){return"TableCellProperties"}static get requires(){return[wo,Qt]}}class vo extends e.Command{constructor(e,t,o){super(e),this.attributeName=t,this._defaultValue=o}refresh(){const e=this.editor.model.document.selection.getFirstPosition().findAncestor("table");this.isEnabled=!!e,this.value=this._getValue(e)}execute(e={}){const t=this.editor.model,o=t.document.selection,{value:n,batch:i}=e,l=o.getFirstPosition().findAncestor("table"),r=this._getValueToSet(n);t.enqueueChange(i,(e=>{r?e.setAttribute(this.attributeName,r,l):e.removeAttribute(this.attributeName,l)}))}_getValue(e){if(!e)return;const t=e.getAttribute(this.attributeName);return t!==this._defaultValue?t:void 0}_getValueToSet(e){if(e!==this._defaultValue)return e}}class Co extends vo{constructor(e,t){super(e,"tableBackgroundColor",t)}}class yo extends vo{constructor(e,t){super(e,"tableBorderColor",t)}_getValue(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class To extends vo{constructor(e,t){super(e,"tableBorderStyle",t)}_getValue(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class Ao extends vo{constructor(e,t){super(e,"tableBorderWidth",t)}_getValue(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){if((e=Jt(e,"px"))!==this._defaultValue)return e}}class xo extends vo{constructor(e,t){super(e,"tableWidth",t)}_getValueToSet(e){if((e=Jt(e,"px"))!==this._defaultValue)return e}}class Vo extends vo{constructor(e,t){super(e,"tableHeight",t)}_getValueToSet(e){return(e=Jt(e,"px"))===this._defaultValue?null:e}}class So extends vo{constructor(e,t){super(e,"tableAlignment",t)}}const Ro=/^(left|center|right)$/,Io=/^(left|none|right)$/;class Po extends e.Plugin{static get pluginName(){return"TablePropertiesEditing"}static get requires(){return[ce]}init(){const e=this.editor,t=e.model.schema,o=e.conversion;e.config.define("table.tableProperties.defaultProperties",{});const n=Xt(e.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0});e.data.addStyleProcessorRules(Ve.addBorderRules),function(e,t,o){const n={width:"tableBorderWidth",color:"tableBorderColor",style:"tableBorderStyle"};e.extend("table",{allowAttributes:Object.values(n)}),to(t,"table",n,o),no(t,{modelAttribute:n.color,styleName:"border-color"}),no(t,{modelAttribute:n.style,styleName:"border-style"}),no(t,{modelAttribute:n.width,styleName:"border-width"})}(t,o,{color:n.borderColor,style:n.borderStyle,width:n.borderWidth}),e.commands.add("tableBorderColor",new yo(e,n.borderColor)),e.commands.add("tableBorderStyle",new To(e,n.borderStyle)),e.commands.add("tableBorderWidth",new Ao(e,n.borderWidth)),function(e,t,o){e.extend("table",{allowAttributes:["tableAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"table",key:"tableAlignment"},view:e=>({key:"style",value:{float:"center"===e?"none":e}}),converterPriority:"high"}),t.for("upcast").attributeToAttribute({view:{name:/^(table|figure)$/,styles:{float:Io}},model:{key:"tableAlignment",value:e=>{let t=e.getStyle("float");return"none"===t&&(t="center"),t===o?null:t}}}).attributeToAttribute({view:{attributes:{align:Ro}},model:{name:"table",key:"tableAlignment",value:e=>{const t=e.getAttribute("align");return t===o?null:t}}})}(t,o,n.alignment),e.commands.add("tableAlignment",new So(e,n.alignment)),Eo(t,o,{modelAttribute:"tableWidth",styleName:"width",defaultValue:n.width}),e.commands.add("tableWidth",new xo(e,n.width)),Eo(t,o,{modelAttribute:"tableHeight",styleName:"height",defaultValue:n.height}),e.commands.add("tableHeight",new Vo(e,n.height)),e.data.addStyleProcessorRules(Ve.addBackgroundRules),function(e,t,o){const{modelAttribute:n}=o;e.extend("table",{allowAttributes:[n]}),eo(t,{viewElement:"table",...o}),no(t,o)}(t,o,{modelAttribute:"tableBackgroundColor",styleName:"background-color",defaultValue:n.backgroundColor}),e.commands.add("tableBackgroundColor",new Co(e,n.backgroundColor))}}function Eo(e,t,o){const{modelAttribute:n}=o;e.extend("table",{allowAttributes:[n]}),eo(t,{viewElement:/^(table|figure)$/,...o}),oo(t,{modelElement:"table",...o})}var Bo=o(99),zo={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(Bo.Z,zo);Bo.Z.locals;const No={left:e.icons.objectLeft,center:e.icons.objectCenter,right:e.icons.objectRight};class Lo extends ue.View{constructor(e,t){super(e),this.set({borderStyle:"",borderWidth:"",borderColor:"",backgroundColor:"",width:"",height:"",alignment:""}),this.options=t;const{borderStyleDropdown:o,borderWidthInput:n,borderColorInput:i,borderRowLabel:l}=this._createBorderFields(),{backgroundRowLabel:r,backgroundInput:a}=this._createBackgroundFields(),{widthInput:c,operatorLabel:d,heightInput:u,dimensionsLabel:h}=this._createDimensionFields(),{alignmentToolbar:b,alignmentLabel:m}=this._createAlignmentFields();this.focusTracker=new s.FocusTracker,this.keystrokes=new s.KeystrokeHandler,this.children=this.createCollection(),this.borderStyleDropdown=o,this.borderWidthInput=n,this.borderColorInput=i,this.backgroundInput=a,this.widthInput=c,this.heightInput=u,this.alignmentToolbar=b;const{saveButtonView:g,cancelButtonView:p}=this._createActionButtons();this.saveButtonView=g,this.cancelButtonView=p,this._focusables=new ue.ViewCollection,this._focusCycler=new ue.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.add(new ue.FormHeaderView(e,{label:this.t("Table properties")})),this.children.add(new it(e,{labelView:l,children:[l,o,i,n],class:"ck-table-form__border-row"})),this.children.add(new it(e,{labelView:r,children:[r,a],class:"ck-table-form__background-row"})),this.children.add(new it(e,{children:[new it(e,{labelView:h,children:[h,c,d,u],class:"ck-table-form__dimensions-row"}),new it(e,{labelView:m,children:[m,b],class:"ck-table-properties-form__alignment-row"})]})),this.children.add(new it(e,{children:[this.saveButtonView,this.cancelButtonView],class:"ck-table-form__action-row"})),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-table-form","ck-table-properties-form"],tabindex:"-1"},children:this.children})}render(){super.render(),(0,ue.submitHandler)({view:this}),[this.borderStyleDropdown,this.borderColorInput,this.borderWidthInput,this.backgroundInput,this.widthInput,this.heightInput,this.alignmentToolbar,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBorderFields(){const e=this.options.defaultTableProperties,t={style:e.borderStyle,width:e.borderWidth,color:e.borderColor},o=et({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color}),n=this.locale,i=this.t,l=new ue.LabelView(n);l.text=i("Border");const r=Ze(this.t),s=new ue.LabeledFieldView(n,ue.createLabeledDropdown);s.set({label:i("Style"),class:"ck-table-form__border-style"}),s.fieldView.buttonView.set({isOn:!1,withText:!0,tooltip:i("Style")}),s.fieldView.buttonView.bind("label").to(this,"borderStyle",(e=>r[e||"none"])),s.fieldView.on("execute",(e=>{this.borderStyle=e.source._borderStyleValue})),s.bind("isEmpty").to(this,"borderStyle",(e=>!e)),(0,ue.addListToDropdown)(s.fieldView,Xe(this,t.style));const a=new ue.LabeledFieldView(n,ue.createLabeledInputText);a.set({label:i("Width"),class:"ck-table-form__border-width"}),a.fieldView.bind("value").to(this,"borderWidth"),a.bind("isEnabled").to(this,"borderStyle",Wo),a.fieldView.on("input",(()=>{this.borderWidth=a.fieldView.element.value}));const c=new ue.LabeledFieldView(n,o);return c.set({label:i("Color"),class:"ck-table-form__border-color"}),c.fieldView.bind("value").to(this,"borderColor"),c.bind("isEnabled").to(this,"borderStyle",Wo),c.fieldView.on("input",(()=>{this.borderColor=c.fieldView.value})),this.on("change:borderStyle",((e,o,n,i)=>{Wo(n)||(this.borderColor="",this.borderWidth=""),Wo(i)||(this.borderColor=t.color,this.borderWidth=t.width)})),{borderRowLabel:l,borderStyleDropdown:s,borderColorInput:c,borderWidthInput:a}}_createBackgroundFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Background");const n=et({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableProperties.backgroundColor}),i=new ue.LabeledFieldView(e,n);return i.set({label:t("Color"),class:"ck-table-properties-form__background"}),i.fieldView.bind("value").to(this,"backgroundColor"),i.fieldView.on("input",(()=>{this.backgroundColor=i.fieldView.value})),{backgroundRowLabel:o,backgroundInput:i}}_createDimensionFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Dimensions");const n=new ue.LabeledFieldView(e,ue.createLabeledInputText);n.set({label:t("Width"),class:"ck-table-form__dimensions-row__width"}),n.fieldView.bind("value").to(this,"width"),n.fieldView.on("input",(()=>{this.width=n.fieldView.element.value}));const i=new ue.View(e);i.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const l=new ue.LabeledFieldView(e,ue.createLabeledInputText);return l.set({label:t("Height"),class:"ck-table-form__dimensions-row__height"}),l.fieldView.bind("value").to(this,"height"),l.fieldView.on("input",(()=>{this.height=l.fieldView.element.value})),{dimensionsLabel:o,widthInput:n,operatorLabel:i,heightInput:l}}_createAlignmentFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Alignment");const n=new ue.ToolbarView(e);return n.set({isCompact:!0,ariaLabel:t("Table alignment toolbar")}),Ye({view:this,icons:No,toolbar:n,labels:this._alignmentLabels,propertyName:"alignment",defaultValue:this.options.defaultTableProperties.alignment}),{alignmentLabel:o,alignmentToolbar:n}}_createActionButtons(){const t=this.locale,o=this.t,n=new ue.ButtonView(t),i=new ue.ButtonView(t),l=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.widthInput,this.heightInput];return n.set({label:o("Save"),icon:e.icons.check,class:"ck-button-save",type:"submit",withText:!0}),n.bind("isEnabled").toMany(l,"errorText",((...e)=>e.every((e=>!e)))),i.set({label:o("Cancel"),icon:e.icons.cancel,class:"ck-button-cancel",withText:!0}),i.delegate("execute").to(this,"cancel"),{saveButtonView:n,cancelButtonView:i}}get _alignmentLabels(){const e=this.locale,t=this.t,o=t("Align table to the left"),n=t("Center table"),i=t("Align table to the right");return"rtl"===e.uiLanguageDirection?{right:i,center:n,left:o}:{left:o,center:n,right:i}}}function Wo(e){return"none"!==e}const Fo={borderStyle:"tableBorderStyle",borderColor:"tableBorderColor",borderWidth:"tableBorderWidth",backgroundColor:"tableBackgroundColor",width:"tableWidth",height:"tableHeight",alignment:"tableAlignment"};class Do extends e.Plugin{static get requires(){return[ue.ContextualBalloon]}static get pluginName(){return"TablePropertiesUI"}constructor(e){super(e),e.config.define("table.tableProperties",{borderColors:Qe,backgroundColors:Qe})}init(){const e=this.editor,t=e.t;this._defaultTableProperties=Xt(e.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0}),this._balloon=e.plugins.get(ue.ContextualBalloon),this.view=this._createPropertiesView(),this._undoStepBatch=null,e.ui.componentFactory.add("tableProperties",(o=>{const n=new ue.ButtonView(o);n.set({label:t("Table properties"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M8 2v5h4V2h1v5h5v1h-5v4h.021l-.172.351-1.916.28-.151.027c-.287.063-.54.182-.755.341L8 13v5H7v-5H2v-1h5V8H2V7h5V2h1zm4 6H8v4h4V8z" opacity=".6"/><path d="m15.5 11.5 1.323 2.68 2.957.43-2.14 2.085.505 2.946L15.5 18.25l-2.645 1.39.505-2.945-2.14-2.086 2.957-.43L15.5 11.5zM17 1a2 2 0 0 1 2 2v9.475l-.85-.124-.857-1.736a2.048 2.048 0 0 0-.292-.44L17 3H3v14h7.808l.402.392L10.935 19H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h14z"/></svg>',tooltip:!0}),this.listenTo(n,"execute",(()=>this._showView()));const i=Object.values(Fo).map((t=>e.commands.get(t)));return n.bind("isEnabled").toMany(i,"isEnabled",((...e)=>e.some((e=>e)))),n}))}destroy(){super.destroy(),this.view.destroy()}_createPropertiesView(){const e=this.editor,t=e.config.get("table.tableProperties"),o=(0,ue.normalizeColorOptions)(t.borderColors),n=(0,ue.getLocalizedColorOptions)(e.locale,o),i=(0,ue.normalizeColorOptions)(t.backgroundColors),l=(0,ue.getLocalizedColorOptions)(e.locale,i),r=new Lo(e.locale,{borderColors:n,backgroundColors:l,defaultTableProperties:this._defaultTableProperties}),s=e.t;r.render(),this.listenTo(r,"submit",(()=>{this._hideView()})),this.listenTo(r,"cancel",(()=>{this._undoStepBatch.operations.length&&e.execute("undo",this._undoStepBatch),this._hideView()})),r.keystrokes.set("Esc",((e,t)=>{this._hideView(),t()})),(0,ue.clickOutsideHandler)({emitter:r,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const a=$e(s),c=Ke(s);return r.on("change:borderStyle",this._getPropertyChangeCallback("tableBorderStyle",this._defaultTableProperties.borderStyle)),r.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:r.borderColorInput,commandName:"tableBorderColor",errorText:a,validator:qe,defaultValue:this._defaultTableProperties.borderColor})),r.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:r.borderWidthInput,commandName:"tableBorderWidth",errorText:c,validator:Je,defaultValue:this._defaultTableProperties.borderWidth})),r.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:r.backgroundInput,commandName:"tableBackgroundColor",errorText:a,validator:qe,defaultValue:this._defaultTableProperties.backgroundColor})),r.on("change:width",this._getValidatedPropertyChangeCallback({viewField:r.widthInput,commandName:"tableWidth",errorText:c,validator:Ge,defaultValue:this._defaultTableProperties.width})),r.on("change:height",this._getValidatedPropertyChangeCallback({viewField:r.heightInput,commandName:"tableHeight",errorText:c,validator:Ge,defaultValue:this._defaultTableProperties.height})),r.on("change:alignment",this._getPropertyChangeCallback("tableAlignment",this._defaultTableProperties.alignment)),r}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableBorderStyle");Object.entries(Fo).map((([t,o])=>{const n=this._defaultTableProperties[t]||"";return[t,e.get(o).value||n]})).forEach((([e,o])=>{("borderColor"!==e&&"borderWidth"!==e||"none"!==t.value)&&this.view.set(e,o)}))}_showView(){const e=this.editor;this.listenTo(e.ui,"update",(()=>{this._updateView()})),this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:$t(e)}),this._undoStepBatch=e.model.createBatch(),this.view.focus()}_hideView(){const e=this.editor;this.stopListening(e.ui,"update"),this.view.saveButtonView.focus(),this._balloon.remove(this.view),this.editor.editing.view.focus()}_updateView(){const e=this.editor;We(e.editing.view.document.selection)?this._isViewVisible&&Zt(e,"table"):this._hideView()}get _isViewVisible(){return this._balloon.visibleView===this.view}get _isViewInBalloon(){return this._balloon.hasView(this.view)}_getPropertyChangeCallback(e,t){return(o,n,i,l)=>{(l||t!==i)&&this.editor.execute(e,{value:i,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:o,validator:n,errorText:i,defaultValue:l}=e,r=Ot((()=>{o.errorText=i}),500);return(e,i,s,a)=>{r.cancel(),(a||l!==s)&&(n(s)?(this.editor.execute(t,{value:s,batch:this._undoStepBatch}),o.errorText=null):r())}}}class Mo extends e.Plugin{static get pluginName(){return"TableProperties"}static get requires(){return[Po,Do]}}function Ho(e){e.document.registerPostFixer((t=>function(e,t){const o=t.document.differ.getChanges();let n=!1;for(const t of o){if("insert"!=t.type)continue;if(t.position.parent.is("element","table")||"table"==t.name){const o="table"==t.name?t.position.nodeAfter:t.position.parent,i=Array.from(o.getChildren()).filter((e=>e.is("element","caption"))),l=i.shift();if(!l)continue;for(const t of i)e.move(e.createRangeIn(t),l,"end"),e.remove(t);l.nextSibling&&(e.move(e.createRangeOn(l),o,"end"),n=!0),n=!!i.length||n}}return n}(t,e)))}function Oo(e){return!!e&&e.is("element","table")}function jo(e){for(const t of e.getChildren())if(t.is("element","caption"))return t;return null}function Uo(e){const t=e.parent;return"figcaption"==e.name&&t&&"figure"==t.name&&t.hasClass("table")||"caption"==e.name&&t&&"table"==t.name?{name:!0}:null}function Zo(e){const t=e.getSelectedElement();return t&&t.is("element","table")?t:e.getFirstPosition().findAncestor("table")}class $o extends e.Command{refresh(){const e=Zo(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled?this.value=!!jo(e):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change((e=>{this.value?this._hideTableCaption(e):this._showTableCaption(e,t)}))}_showTableCaption(e,t){const o=Zo(this.editor.model.document.selection),n=this.editor.plugins.get("TableCaptionEditing")._getSavedCaption(o)||e.createElement("caption");e.append(n,o),t&&e.setSelection(n,"in")}_hideTableCaption(e){const t=Zo(this.editor.model.document.selection),o=this.editor.plugins.get("TableCaptionEditing"),n=jo(t);o._saveCaption(t,n),e.setSelection(e.createRangeIn(t.getChild(0).getChild(0))),e.remove(n)}}class Ko extends e.Plugin{static get pluginName(){return"TableCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,o=e.model.schema,n=e.editing.view,i=e.t;o.isRegistered("caption")?o.extend("caption",{allowIn:"table"}):o.register("caption",{allowIn:"table",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleTableCaption",new $o(this.editor)),e.conversion.for("upcast").elementToElement({view:Uo,model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>Oo(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:o})=>{if(!Oo(e.parent))return null;const l=o.createEditableElement("figcaption");return o.setCustomProperty("tableCaption",!0,l),(0,Ve.enablePlaceholder)({view:n,element:l,text:i("Enter table caption"),keepOnFocus:!0}),(0,t.toWidgetEditable)(l,o)}}),Ho(e.model)}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?Ve.Element.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}class qo extends e.Plugin{static get pluginName(){return"TableCaptionUI"}init(){const t=this.editor,o=t.editing.view,n=t.t;t.ui.componentFactory.add("toggleTableCaption",(i=>{const l=t.commands.get("toggleTableCaption"),r=new ue.ButtonView(i);return r.set({icon:e.icons.caption,tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(l,"value","isEnabled"),r.bind("label").to(l,"value",(e=>n(e?"Toggle caption off":"Toggle caption on"))),this.listenTo(r,"execute",(()=>{if(t.execute("toggleTableCaption",{focusCaptionOnShow:!0}),l.value){const e=function(e){const t=Zo(e);return t?jo(t):null}(t.model.document.selection),n=t.editing.mapper.toViewElement(e);if(!n)return;o.scrollToTheSelection(),o.change((e=>{e.addClass("table__caption_highlighted",n)}))}})),r}))}}var Go=o(665),Jo={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(Go.Z,Jo);Go.Z.locals;class Xo extends e.Plugin{static get pluginName(){return"TableCaption"}static get requires(){return[Ko,qo]}}const Yo=function(e,t,o){var n=!0,i=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return mt(o)&&(n="leading"in o?!!o.leading:n,i="trailing"in o?!!o.trailing:i),Ot(e,t,{leading:n,maxWait:t,trailing:i})};function Qo(e){return parseFloat(s.global.window.getComputedStyle(e).width)}function en(e,t){const o=function(e,t){const o=t.editing.mapper.toViewElement(e);return[...[...o.getChildren()].find((e=>e.is("element","table"))).getChildren()].find((e=>e.is("element","tbody")))}(e,t);return Qo(t.editing.view.domConverter.mapViewToDom(o))}function tn(e,t){const o=en(e,t);return e.getAttribute("columnWidths").split(",").map((e=>e.trim())).map((e=>e.endsWith("px")?parseFloat(e):parseFloat(e)*o/100))}function on(e,t){return 4e3/en(e,t)}function nn(e,t){return t.plugins.get("TableUtils").getColumns(e)}function ln(e,t){return!!function(e,t){const o=t.editing.mapper.toViewElement(e);return[...[...o.getChildren()].find((e=>e.is("element","table"))).getChildren()].find((e=>e.is("element","colgroup")))}(e,t)}function rn(e){const t=Math.pow(10,2),o=parseFloat(e);return Math.round(o*t)/t}function sn(e,t,o){return rn(e<=t?t:e>=o?o:e)}function an(e,t){return Array(e).fill(t)}function cn(e){return e.map((e=>parseFloat(e))).filter((e=>!Number.isNaN(e))).reduce(((e,t)=>e+t),0)}function dn(e){const t=function(e){const t=e.split(",").map((e=>e.trim())),o=t.filter((e=>"auto"===e)).length;if(0===o)return t.map((e=>rn(e)));const n=cn(t),i=Math.max((100-n)/o,5);return t.map((e=>"auto"===e?i:e)).map((e=>rn(e)))}(e),o=cn(t);return 100===o?t:t.map((e=>rn(100*e/o))).map(((e,t,o)=>{if(!(t===o.length-1))return e;return rn(e+100-cn(o))}))}function un(e,t){let o=[...t.getChildren()].find((e=>e.hasClass("table-column-resizer")));o||(o=e.createUIElement("div",{class:"table-column-resizer"}),e.insert(e.createPositionAt(t,"end"),o))}function hn(e,t){const o=[...t.getChildren()].find((e=>e.hasClass("table-column-resizer")));o&&e.remove(o)}function bn(){return e=>e.on("attribute:columnWidths:table",((e,t,o)=>{const n=o.writer,i=t.item,l=[...o.mapper.toViewElement(i).getChildren()].find((e=>e.is("element","table")));t.attributeNewValue?t.attributeNewValue!==t.attributeOldValue&&function(e,t,o){const n=o.split(",");let i=[...t.getChildren()].find((e=>e.is("element","colgroup")));i||(i=e.createContainerElement("colgroup"));for(const t of[...i.getChildren()])e.remove(t);for(const t of Array(n.length).keys()){const o=e.createEmptyElement("col");e.setStyle("width",n[t],o),e.insert(e.createPositionAt(i,"end"),o)}e.insert(e.createPositionAt(t,"start"),i)}(n,l,t.attributeNewValue):function(e,t){const o=[...t.getChildren()].find((e=>e.is("element","colgroup")));if(!o)return;e.remove(o)}(n,l)}))}class mn extends e.Plugin{static get requires(){return[ce]}static get pluginName(){return"TableColumnResizeEditing"}constructor(e){super(e),this._isResizingActive=!1,this._isResizingAllowed=!0,this._resizingData=null,this._columnIndexMap=new Map,this._cellsModified=new Map}init(){this._extendSchema(),this._setupConversion(),this._setupPostFixer(),this._setupColumnResizers(),this._registerColgroupFixer(),this._registerResizerInserter();const e=this.editor,t=e.plugins.get("TableColumnResize");this.bind("_isResizingAllowed").to(e,"isReadOnly",t,"isEnabled",((e,t)=>!e&&t))}_extendSchema(){this.editor.model.schema.extend("table",{allowAttributes:["tableWidth","columnWidths"]})}_setupConversion(){const e=this.editor,t=e.conversion;t.for("upcast").attributeToAttribute({view:{name:"figure",key:"style",value:{width:/[\s\S]+/}},model:{name:"table",key:"tableWidth",value:e=>e.getStyle("width")}}),t.for("downcast").attributeToAttribute({model:{name:"table",key:"tableWidth"},view:e=>({name:"figure",key:"style",value:{width:e}})}),t.for("upcast").add(function(e){return t=>t.on("element:colgroup",((t,o,n)=>{const i=o.modelCursor.findAncestor("table");if(!i)return;const l=n.writer,r=o.viewItem,s=nn(i,e),a=[...Array(s).keys()].map((e=>{const t=r.getChild(e);if(!t||!t.is("element","col"))return"auto";const o=t.getStyle("width");return o&&o.endsWith("%")?o:"auto"})).join(",");l.setAttribute("columnWidths",a,i)}))}(e)),t.for("downcast").add(bn())}_setupPostFixer(){const e=this.editor,t=this._columnIndexMap,o=this._cellsModified;e.model.document.registerPostFixer((n=>{const i=e.model.document.differ.getChanges();let l=!1;for(const r of function(e,t){const o=new Set;for(const n of e){let e=null;switch(n.type){case"insert":case"remove":e=["table","tableRow","tableCell"].includes(n.name)?n.position:null;break;case"attribute":n.range.start.nodeAfter&&(e=["table","tableRow","tableCell"].includes(n.range.start.nodeAfter.name)?n.range.start:null)}const i=[];if(e){const o=e.nodeAfter&&"table"===e.nodeAfter.name?e.nodeAfter:e.findAncestor("table");if(o){const e=t.createRangeOn(o);for(const t of e.getItems())t.is("element")&&"table"===t.name&&i.push(t)}}const l=i;if(l)for(const e of l)o.add(e)}return o}(i,e.model)){if(this.fire("disableResize",r)){if(r.hasAttribute("columnWidths")){n.removeAttribute("columnWidths",r);for(const{cell:e}of new u(r))t.delete(e),o.set(e,"remove");l=!0}continue}const i=nn(r,e);if(!r.hasAttribute("columnWidths")){const e=an(i,"auto").join(",");n.setAttribute("columnWidths",e,r),l=!0}const s=dn(r.getAttribute("columnWidths"));let a=null,c=!1,d=!1;for(const{cell:h,cellWidth:b,column:m}of new u(r)){if(!t.has(h)){t.set(h,m),o.set(h,"insert"),l=!0;continue}const u=t.get(h),g=u>m;if(u<m){if(!c){const o=on(r,e),n=t.get(h.previousSibling)===m?a:an(m-u,o);s.splice(u,0,...n),c=!0}t.set(h,m),o.set(h,"insert"),l=!0}if(g){if(!d){a=s.splice(m,u-m);if(!(h.nextSibling&&t.get(h.nextSibling)===m)){s[m>0?m-1:m]+=cn(a)}d=!0}t.set(h,m),o.set(h,"insert"),l=!0}if(h.hasAttribute("width")){if(1!==b)continue;if(!ln(r,e)){n.removeAttribute("width",h),l=!0;continue}const t=en(r,e),o=tn(r,e),a=on(r,e),c=parseFloat(h.getAttribute("width")),d=h.getAttribute("width").endsWith("px"),u=h.getAttribute("width").endsWith("%");if(!d&&!u)continue;if(!h.nextSibling){const l=Qo(e.editing.view.getDomRoot()),u=i-1,h=o[u];let b;if(d){const e=40,n=l-(t-h);o[u]=sn(c,e,n),b=cn(o);for(let e=0;e<=u;e++)s[e]=rn(100*o[e]/b)}else{const e=a,n=100-100*(t-h)/l;s[u]=sn(c,e,n),b=100*(t-h)/(100-s[u]);for(let e=0;e<=u-1;e++)s[e]=rn(100*o[e]/b)}n.setAttribute("width",`${rn(100*b/l)}%`,r)}else{let e=d?100*c/t:c;e=sn(e,a,100*(o[m]+o[m+1]-40)/t);const n=e-s[m];s[m]+=n,s[m+1]-=n}n.removeAttribute("width",h),l=!0}}const h=i>s.length,b=i<s.length;if(h){const t=on(r,e),o=an(i-s.length,t);s.splice(s.length,0,...o)}if(b){const e=s.splice(i);s[i-1]+=cn(e)}const m=s.map((e=>`${e}%`)).join(",");r.getAttribute("columnWidths")!==m&&(n.setAttribute("columnWidths",m,r),l=!0)}return l}))}_setupColumnResizers(){const e=this.editor.editing.view;e.addObserver(Se),e.document.on("mousedown",this._onMouseDownHandler.bind(this),{priority:"high"});const t=Object.create(s.DomEmitterMixin);t.listenTo(s.global.window.document,"mouseup",this._onMouseUpHandler.bind(this)),t.listenTo(s.global.window.document,"mousemove",Yo(this._onMouseMoveHandler.bind(this),50))}_onMouseDownHandler(e,t){const o=this.editor.editing.view;t.target.hasClass("table-column-resizer")&&this._isResizingAllowed&&(t.preventDefault(),e.stop(),this._isResizingActive=!0,this._resizingData=this._getResizingData(t),o.change((e=>{e.addClass("table-column-resizer__active",this._resizingData.elements.viewResizer)})))}_onMouseUpHandler(){const e=this.editor,t=e.editing.view;if(!this._isResizingActive)return;const{modelTable:o,viewColgroup:n,viewFigure:i,viewResizer:l}=this._resizingData.elements,r=o.getAttribute("columnWidths"),s=[...n.getChildren()].map((e=>e.getStyle("width"))).join(","),a=r!==s,c=o.getAttribute("tableWidth"),d=i.getStyle("width"),u=c!==d;(a||u)&&(this._isResizingAllowed?e.model.change((e=>{a&&e.setAttribute("columnWidths",s,o),u&&e.setAttribute("tableWidth",`${rn(d)}%`,o)})):t.change((e=>{if(a){const t=r.split(",");for(const o of n.getChildren())e.setStyle("width",t.shift(),o)}u&&(c?e.setStyle("width",c,i):e.removeStyle("width",i))}))),t.change((e=>{e.removeClass("table-column-resizer__active",l)})),this._isResizingActive=!1,this._resizingData=null}_onMouseMoveHandler(e,t){const o=this.editor.editing.view;if(!this._isResizingActive)return;if(!this._isResizingAllowed)return void this._onMouseUpHandler();const{columnPosition:n,flags:{isRightEdge:i,isLtrContent:l,isTableCentered:r},widths:{viewFigureParentWidth:s,tableWidth:a,leftColumnWidth:c,rightColumnWidth:d},elements:{viewFigure:u,viewLeftColumn:h,viewRightColumn:b}}=this._resizingData,m=40-c,g=i?s-a:d-40,p=(l?1:-1)*(i&&r?2:1),f=sn((t.clientX-n)*p,Math.min(m,0),Math.max(g,0));0!==f&&o.change((e=>{const t=rn(100*(c+f)/a);if(e.setStyle("width",`${t}%`,h),i){const t=rn(100*(a+f)/s);e.setStyle("width",`${t}%`,u)}else{const t=rn(100*(d-f)/a);e.setStyle("width",`${t}%`,b)}}))}_getResizingData(e){const t=this.editor,o=e.domEvent.clientX,n=e.target,i=n.findAncestor("td")||n.findAncestor("th"),l=t.editing.mapper.toModelElement(i),r=l.findAncestor("table"),s=function(e,t){const o=t.get(e);return{leftEdge:o,rightEdge:o+(e.getAttribute("colspan")||1)-1}}(l,this._columnIndexMap).rightEdge,a=s===nn(r,t)-1,c=!r.hasAttribute("tableAlignment"),d="rtl"!==t.locale.contentLanguageDirection,u=i.findAncestor("table"),h=u.findAncestor("figure"),b=[...u.getChildren()].find((e=>e.is("element","colgroup"))),m=b.getChild(s),g=a?void 0:b.getChild(s+1),p=Qo(t.editing.view.domConverter.mapViewToDom(h.parent)),f=en(r,t),w=tn(r,t);return{columnPosition:o,elements:{modelTable:r,viewFigure:h,viewColgroup:b,viewLeftColumn:m,viewRightColumn:g,viewResizer:n},widths:{viewFigureParentWidth:p,tableWidth:f,leftColumnWidth:w[s],rightColumnWidth:a?void 0:w[s+1]},flags:{isRightEdge:a,isTableCentered:c,isLtrContent:d}}}_registerColgroupFixer(){const e=this.editor;this.listenTo(e.editing.view.document,"layoutChanged",(()=>{const t=e.model.document.selection.getFirstPosition().findAncestor("table"),o=e.editing.view.document.selection.getFirstPosition().getAncestors().reverse().find((e=>"table"===e.name)),n=o&&[...o.getChildren()].find((e=>e.is("element","colgroup")));t&&t.hasAttribute("columnWidths")&&o&&!n&&e.editing.reconvertItem(t)}),{priority:"low"})}_registerResizerInserter(){const e=this.editor,t=e.editing.view,o=this._cellsModified;t.on("render",(()=>{for(const[n,i]of o.entries()){const o=e.editing.mapper.toViewElement(n);t.change((e=>{"insert"===i?un(e,o):"remove"===i&&hn(e,o)}))}o.clear()}),{priority:"lowest"})}}var gn=o(975),pn={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(gn.Z,pn);gn.Z.locals;class fn extends e.Plugin{static get requires(){return[mn]}static get pluginName(){return"TableColumnResize"}}})(),(window.CKEditor5=window.CKEditor5||{}).table=n})(); \ No newline at end of file + */(()=>{var e={252:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-input-color{display:flex;flex-direction:row-reverse;width:100%}.ck.ck-input-color>input.ck.ck-input-text{flex-grow:1;min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown{min-width:auto}.ck.ck-input-color>div.ck.ck-dropdown>.ck-input-color__button .ck-dropdown__arrow{display:none}.ck.ck-input-color .ck.ck-input-color__button{display:flex}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview{overflow:hidden;position:relative}.ck.ck-input-color .ck.ck-input-color__button .ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{display:block;position:absolute}[dir=ltr] .ck.ck-input-color>.ck.ck-input-text{border-bottom-right-radius:0;border-top-right-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-input-text{border-bottom-left-radius:0;border-top-left-radius:0}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{padding:0}[dir=ltr] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-bottom-left-radius:0;border-left-width:0;border-top-left-radius:0}[dir=rtl] .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button{border-bottom-right-radius:0;border-right-width:0;border-top-right-radius:0}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button.ck-disabled{background:var(--ck-color-input-disabled-background)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{border-radius:0}.ck-rounded-corners .ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview,.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview{border:1px solid var(--ck-color-input-border);height:20px;width:20px}.ck.ck-input-color>.ck.ck-dropdown>.ck.ck-button.ck-input-color__button>.ck.ck-input-color__button__preview>.ck.ck-input-color__button__preview__no-color-indicator{background:red;border-radius:2px;height:150%;left:50%;top:-30%;transform:rotate(45deg);transform-origin:50%;width:8%}.ck.ck-input-color .ck.ck-input-color__remove-color{border-bottom:1px solid var(--ck-color-input-border);border-bottom-left-radius:0;border-bottom-right-radius:0;padding:calc(var(--ck-spacing-standard)/2) var(--ck-spacing-standard);width:100%}[dir=ltr] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-right-radius:0}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color{border-top-left-radius:0}.ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-right:var(--ck-spacing-standard)}[dir=rtl] .ck.ck-input-color .ck.ck-input-color__remove-color .ck.ck-icon{margin-left:var(--ck-spacing-standard);margin-right:0}",""]);const l=i},934:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-form{padding:0 0 var(--ck-spacing-large)}.ck.ck-form:focus{outline:none}.ck.ck-form .ck.ck-input-text{min-width:100%;width:0}.ck.ck-form .ck.ck-dropdown{min-width:100%}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button:not(:focus){border:1px solid var(--ck-color-base-border)}.ck.ck-form .ck.ck-dropdown .ck-dropdown__button .ck-button__label{width:100%}",""]);const l=i},333:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-form__row{display:flex;flex-direction:row;flex-wrap:nowrap;justify-content:space-between}.ck.ck-form__row>:not(.ck-label){flex-grow:1}.ck.ck-form__row.ck-table-form__action-row .ck-button-cancel,.ck.ck-form__row.ck-table-form__action-row .ck-button-save{justify-content:center}.ck.ck-form__row{padding:var(--ck-spacing-standard) var(--ck-spacing-large) 0}[dir=ltr] .ck.ck-form__row>:not(.ck-label)+*{margin-left:var(--ck-spacing-large)}[dir=rtl] .ck.ck-form__row>:not(.ck-label)+*{margin-right:var(--ck-spacing-large)}.ck.ck-form__row>.ck-label{min-width:100%;width:100%}.ck.ck-form__row.ck-table-form__action-row{margin-top:var(--ck-spacing-large)}.ck.ck-form__row.ck-table-form__action-row .ck-button .ck-button__label{color:var(--ck-color-text)}",""]);const l=i},272:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck .ck-insert-table-dropdown__grid{display:flex;flex-direction:row;flex-wrap:wrap}:root{--ck-insert-table-dropdown-padding:10px;--ck-insert-table-dropdown-box-height:11px;--ck-insert-table-dropdown-box-width:12px;--ck-insert-table-dropdown-box-margin:1px}.ck .ck-insert-table-dropdown__grid{padding:var(--ck-insert-table-dropdown-padding) var(--ck-insert-table-dropdown-padding) 0;width:calc(var(--ck-insert-table-dropdown-box-width)*10 + var(--ck-insert-table-dropdown-box-margin)*20 + var(--ck-insert-table-dropdown-padding)*2)}.ck .ck-insert-table-dropdown__label{text-align:center}.ck .ck-insert-table-dropdown-grid-box{border:1px solid var(--ck-color-base-border);border-radius:1px;height:var(--ck-insert-table-dropdown-box-height);margin:var(--ck-insert-table-dropdown-box-margin);outline:none;width:var(--ck-insert-table-dropdown-box-width)}.ck .ck-insert-table-dropdown-grid-box.ck-on{background:var(--ck-color-focus-outer-shadow);border-color:var(--ck-color-focus-border)}",""]);const l=i},660:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck-content .table{display:table;margin:.9em auto}.ck-content .table table{border:1px double #b3b3b3;border-collapse:collapse;border-spacing:0;height:100%;width:100%}.ck-content .table table td,.ck-content .table table th{border:1px solid #bfbfbf;min-width:2em;padding:.4em}.ck-content .table table th{background:rgba(0,0,0,.05);font-weight:700}.ck-content[dir=rtl] .table th{text-align:right}.ck-content[dir=ltr] .table th{text-align:left}.ck-editor__editable .ck-table-bogus-paragraph{display:inline-block;width:100%}",""]);const l=i},665:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-table-caption-background:#f7f7f7;--ck-color-table-caption-text:#333;--ck-color-table-caption-highlighted-background:#fd0}.ck-content .table>figcaption{background-color:var(--ck-color-table-caption-background);caption-side:top;color:var(--ck-color-table-caption-text);display:table-caption;font-size:.75em;outline-offset:-1px;padding:.6em;text-align:center;word-break:break-word}.ck.ck-editor__editable .table>figcaption.table__caption_highlighted{animation:ck-table-caption-highlight .6s ease-out}.ck.ck-editor__editable .table>figcaption.ck-placeholder:before{overflow:hidden;padding-left:inherit;padding-right:inherit;text-overflow:ellipsis;white-space:nowrap}@keyframes ck-table-caption-highlight{0%{background-color:var(--ck-color-table-caption-highlighted-background)}to{background-color:var(--ck-color-table-caption-background)}}",""]);const l=i},773:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row{flex-wrap:wrap}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:first-of-type{flex-grow:0.57}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar:last-of-type{flex-grow:0.43}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar .ck-button{flex-grow:1}.ck.ck-table-cell-properties-form{width:320px}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__padding-row{align-self:flex-end;padding:0;width:25%}.ck.ck-table-cell-properties-form .ck-form__row.ck-table-cell-properties-form__alignment-row .ck.ck-toolbar{background:none;margin-top:var(--ck-spacing-standard)}",""]);const l=i},975:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-table-column-resizer-hover:var(--ck-color-base-active);--ck-table-column-resizer-width:7px;--ck-table-column-resizer-position-offset:calc(var(--ck-table-column-resizer-width)*-0.5 - 0.5px)}.ck-content .table .ck-table-resized{table-layout:fixed}.ck-content .table table{overflow:hidden}.ck-content .table td,.ck-content .table th{position:relative}.ck.ck-editor__editable .table .ck-table-column-resizer{bottom:-999999px;cursor:col-resize;position:absolute;right:var(--ck-table-column-resizer-position-offset);top:-999999px;user-select:none;width:var(--ck-table-column-resizer-width);z-index:var(--ck-z-default)}.ck.ck-editor__editable .table[draggable] .ck-table-column-resizer,.ck.ck-editor__editable.ck-column-resize_disabled .table .ck-table-column-resizer{display:none}.ck.ck-editor__editable .table .ck-table-column-resizer:hover,.ck.ck-editor__editable .table .ck-table-column-resizer__active{background-color:var(--ck-color-table-column-resizer-hover);opacity:.25}.ck.ck-editor__editable[dir=rtl] .table .ck-table-column-resizer{left:var(--ck-table-column-resizer-position-offset);right:unset}",""]);const l=i},482:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,":root{--ck-color-table-focused-cell-background:rgba(158,201,250,.3)}.ck-widget.table td.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table td.ck-editor__nested-editable:focus,.ck-widget.table th.ck-editor__nested-editable.ck-editor__nested-editable_focused,.ck-widget.table th.ck-editor__nested-editable:focus{background:var(--ck-color-table-focused-cell-background);border-style:none;outline:1px solid var(--ck-color-focus-border);outline-offset:-1px}",""]);const l=i},686:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,'.ck.ck-table-form .ck-form__row.ck-table-form__background-row,.ck.ck-table-form .ck-form__row.ck-table-form__border-row{flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{align-items:center;flex-wrap:wrap}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view{align-items:center;display:flex;flex-direction:column-reverse}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-labeled-field-view .ck.ck-dropdown,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{flex-grow:0}.ck.ck-table-form .ck.ck-labeled-field-view{position:relative}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{bottom:calc(var(--ck-table-properties-error-arrow-size)*-1);left:50%;position:absolute;transform:translate(-50%,100%);z-index:1}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{content:"";left:50%;position:absolute;top:calc(var(--ck-table-properties-error-arrow-size)*-1);transform:translateX(-50%)}:root{--ck-table-properties-error-arrow-size:6px;--ck-table-properties-min-error-width:150px}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-labeled-field-view>.ck-label{font-size:var(--ck-font-size-tiny);text-align:center}.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-style,.ck.ck-table-form .ck-form__row.ck-table-form__border-row .ck-table-form__border-width{max-width:80px;min-width:80px;width:80px}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row{padding:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__height,.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimensions-row__width{margin:0}.ck.ck-table-form .ck-form__row.ck-table-form__dimensions-row .ck-table-form__dimension-operator{align-self:flex-end;display:inline-block;height:var(--ck-ui-component-min-height);line-height:var(--ck-ui-component-min-height);margin:0 var(--ck-spacing-small)}.ck.ck-table-form .ck.ck-labeled-field-view{padding-top:var(--ck-spacing-standard)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{border-radius:0}.ck-rounded-corners .ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status,.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status.ck-rounded-corners{border-radius:var(--ck-border-radius)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{background:var(--ck-color-base-error);color:var(--ck-color-base-background);min-width:var(--ck-table-properties-min-error-width);padding:var(--ck-spacing-small) var(--ck-spacing-medium);text-align:center}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status:after{border-color:transparent transparent var(--ck-color-base-error) transparent;border-style:solid;border-width:0 var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size) var(--ck-table-properties-error-arrow-size)}.ck.ck-table-form .ck.ck-labeled-field-view .ck.ck-labeled-field-view__status{animation:ck-table-form-labeled-view-status-appear .15s ease both}.ck.ck-table-form .ck.ck-labeled-field-view .ck-input.ck-error:not(:focus)+.ck.ck-labeled-field-view__status{display:none}@keyframes ck-table-form-labeled-view-status-appear{0%{opacity:0}to{opacity:1}}',""]);const l=i},99:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,".ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-content:baseline;flex-basis:0;flex-wrap:wrap}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items{flex-wrap:nowrap}.ck.ck-table-properties-form{width:320px}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row{align-self:flex-end;padding:0}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar{background:none;margin-top:var(--ck-spacing-standard)}.ck.ck-table-properties-form .ck-form__row.ck-table-properties-form__alignment-row .ck.ck-toolbar .ck-toolbar__items>*{width:40px}",""]);const l=i},475:(e,t,o)=>{"use strict";o.d(t,{Z:()=>l});var n=o(609),i=o.n(n)()((function(e){return e[1]}));i.push([e.id,':root{--ck-table-selected-cell-background:rgba(158,207,250,.3)}.ck.ck-editor__editable .table table td.ck-editor__editable_selected,.ck.ck-editor__editable .table table th.ck-editor__editable_selected{box-shadow:unset;caret-color:transparent;outline:unset;position:relative}.ck.ck-editor__editable .table table td.ck-editor__editable_selected:after,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:after{background-color:var(--ck-table-selected-cell-background);bottom:0;content:"";left:0;pointer-events:none;position:absolute;right:0;top:0}.ck.ck-editor__editable .table table td.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table td.ck-editor__editable_selected:focus,.ck.ck-editor__editable .table table th.ck-editor__editable_selected ::selection,.ck.ck-editor__editable .table table th.ck-editor__editable_selected:focus{background-color:transparent}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget{outline:unset}.ck.ck-editor__editable .table table td.ck-editor__editable_selected .ck-widget>.ck-widget__selection-handle,.ck.ck-editor__editable .table table th.ck-editor__editable_selected .ck-widget>.ck-widget__selection-handle{display:none}',""]);const l=i},609:e=>{"use strict";e.exports=function(e){var t=[];return t.toString=function(){return this.map((function(t){var o=e(t);return t[2]?"@media ".concat(t[2]," {").concat(o,"}"):o})).join("")},t.i=function(e,o,n){"string"==typeof e&&(e=[[null,e,""]]);var i={};if(n)for(var l=0;l<this.length;l++){var r=this[l][0];null!=r&&(i[r]=!0)}for(var s=0;s<e.length;s++){var a=[].concat(e[s]);n&&i[a[0]]||(o&&(a[2]?a[2]="".concat(o," and ").concat(a[2]):a[2]=o),t.push(a))}},t}},62:(e,t,o)=>{"use strict";var n,i=function(){return void 0===n&&(n=Boolean(window&&document&&document.all&&!window.atob)),n},l=function(){var e={};return function(t){if(void 0===e[t]){var o=document.querySelector(t);if(window.HTMLIFrameElement&&o instanceof window.HTMLIFrameElement)try{o=o.contentDocument.head}catch(e){o=null}e[t]=o}return e[t]}}(),r=[];function s(e){for(var t=-1,o=0;o<r.length;o++)if(r[o].identifier===e){t=o;break}return t}function a(e,t){for(var o={},n=[],i=0;i<e.length;i++){var l=e[i],a=t.base?l[0]+t.base:l[0],c=o[a]||0,d="".concat(a," ").concat(c);o[a]=c+1;var u=s(d),h={css:l[1],media:l[2],sourceMap:l[3]};-1!==u?(r[u].references++,r[u].updater(h)):r.push({identifier:d,updater:p(h,t),references:1}),n.push(d)}return n}function c(e){var t=document.createElement("style"),n=e.attributes||{};if(void 0===n.nonce){var i=o.nc;i&&(n.nonce=i)}if(Object.keys(n).forEach((function(e){t.setAttribute(e,n[e])})),"function"==typeof e.insert)e.insert(t);else{var r=l(e.insert||"head");if(!r)throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");r.appendChild(t)}return t}var d,u=(d=[],function(e,t){return d[e]=t,d.filter(Boolean).join("\n")});function h(e,t,o,n){var i=o?"":n.media?"@media ".concat(n.media," {").concat(n.css,"}"):n.css;if(e.styleSheet)e.styleSheet.cssText=u(t,i);else{var l=document.createTextNode(i),r=e.childNodes;r[t]&&e.removeChild(r[t]),r.length?e.insertBefore(l,r[t]):e.appendChild(l)}}function b(e,t,o){var n=o.css,i=o.media,l=o.sourceMap;if(i?e.setAttribute("media",i):e.removeAttribute("media"),l&&"undefined"!=typeof btoa&&(n+="\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(l))))," */")),e.styleSheet)e.styleSheet.cssText=n;else{for(;e.firstChild;)e.removeChild(e.firstChild);e.appendChild(document.createTextNode(n))}}var m=null,g=0;function p(e,t){var o,n,i;if(t.singleton){var l=g++;o=m||(m=c(t)),n=h.bind(null,o,l,!1),i=h.bind(null,o,l,!0)}else o=c(t),n=b.bind(null,o,t),i=function(){!function(e){if(null===e.parentNode)return!1;e.parentNode.removeChild(e)}(o)};return n(e),function(t){if(t){if(t.css===e.css&&t.media===e.media&&t.sourceMap===e.sourceMap)return;n(e=t)}else i()}}e.exports=function(e,t){(t=t||{}).singleton||"boolean"==typeof t.singleton||(t.singleton=i());var o=a(e=e||[],t);return function(e){if(e=e||[],"[object Array]"===Object.prototype.toString.call(e)){for(var n=0;n<o.length;n++){var i=s(o[n]);r[i].references--}for(var l=a(e,t),c=0;c<o.length;c++){var d=s(o[c]);0===r[d].references&&(r[d].updater(),r.splice(d,1))}o=l}}}},704:(e,t,o)=>{e.exports=o(79)("./src/core.js")},492:(e,t,o)=>{e.exports=o(79)("./src/engine.js")},273:(e,t,o)=>{e.exports=o(79)("./src/ui.js")},209:(e,t,o)=>{e.exports=o(79)("./src/utils.js")},995:(e,t,o)=>{e.exports=o(79)("./src/widget.js")},79:e=>{"use strict";e.exports=CKEditor5.dll}},t={};function o(n){var i=t[n];if(void 0!==i)return i.exports;var l=t[n]={id:n,exports:{}};return e[n](l,l.exports,o),l.exports}o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var n in t)o.o(t,n)&&!o.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nc=void 0;var n={};(()=>{"use strict";o.r(n),o.d(n,{PlainTableOutput:()=>Be,Table:()=>ze,TableCaption:()=>Xo,TableCaptionEditing:()=>Ko,TableCaptionUI:()=>qo,TableCellProperties:()=>_o,TableCellPropertiesEditing:()=>wo,TableCellPropertiesUI:()=>Qt,TableClipboard:()=>ve,TableColumnResize:()=>gn,TableColumnResizeEditing:()=>hn,TableEditing:()=>ce,TableKeyboard:()=>xe,TableMouse:()=>Re,TableProperties:()=>Ho,TablePropertiesEditing:()=>Po,TablePropertiesUI:()=>Do,TableSelection:()=>_e,TableToolbar:()=>De,TableUI:()=>pe,TableUtils:()=>F});var e=o(704),t=o(995);function i(e,t,o,n,i=1){t>i?n.setAttribute(e,t,o):n.removeAttribute(e,o)}function l(e,t,o={}){const n=e.createElement("tableCell",o);return e.insertElement("paragraph",n),e.insert(n,t),n}function r(e,t){const o=t.parent.parent,n=parseInt(o.getAttribute("headingColumns")||0),{column:i}=e.getCellLocation(t);return!!n&&i<n}var s=o(209);function a(){return e=>{e.on("element:table",((e,t,o)=>{const n=t.viewItem;if(!o.consumable.test(n,{name:!0}))return;const{rows:i,headingRows:r,headingColumns:s}=function(e){const t={headingRows:0,headingColumns:0},o=[],n=[];let i;for(const l of Array.from(e.getChildren()))if("tbody"===l.name||"thead"===l.name||"tfoot"===l.name){"thead"!==l.name||i||(i=l);const e=Array.from(l.getChildren()).filter((e=>e.is("element","tr")));for(const l of e)if("thead"===l.parent.name&&l.parent===i)t.headingRows++,o.push(l);else{n.push(l);const e=d(l);e>t.headingColumns&&(t.headingColumns=e)}}return t.rows=[...o,...n],t}(n),a={};s&&(a.headingColumns=s),r&&(a.headingRows=r);const c=o.writer.createElement("table",a);if(o.safeInsert(c,t.modelCursor)){if(o.consumable.consume(n,{name:!0}),i.forEach((e=>o.convertItem(e,o.writer.createPositionAt(c,"end")))),o.convertChildren(n,o.writer.createPositionAt(c,"end")),c.isEmpty){const e=o.writer.createElement("tableRow");o.writer.insert(e,o.writer.createPositionAt(c,"end")),l(o.writer,o.writer.createPositionAt(e,"end"))}o.updateConversionResult(c,t)}}))}}function c(e){return t=>{t.on(`element:${e}`,((e,t,o)=>{if(t.modelRange&&t.viewItem.isEmpty){const e=t.modelRange.start.nodeAfter,n=o.writer.createPositionAt(e,0);o.writer.insertElement("paragraph",n)}}),{priority:"low"})}}function d(e){let t=0,o=0;const n=Array.from(e.getChildren()).filter((e=>"th"===e.name||"td"===e.name));for(;o<n.length&&"th"===n[o].name;){const e=n[o];t+=parseInt(e.getAttribute("colspan")||1),o++}return t}class u{constructor(e,t={}){this._table=e,this._startRow=void 0!==t.row?t.row:t.startRow||0,this._endRow=void 0!==t.row?t.row:t.endRow,this._startColumn=void 0!==t.column?t.column:t.startColumn||0,this._endColumn=void 0!==t.column?t.column:t.endColumn,this._includeAllSlots=!!t.includeAllSlots,this._skipRows=new Set,this._row=0,this._rowIndex=0,this._column=0,this._cellIndex=0,this._spannedCells=new Map,this._nextCellAtColumn=-1}[Symbol.iterator](){return this}next(){const e=this._table.getChild(this._rowIndex);if(!e||this._isOverEndRow())return{done:!0};if(!e.is("element","tableRow"))return this._rowIndex++,this.next();if(this._isOverEndColumn())return this._advanceToNextRow();let t=null;const o=this._getSpanned();if(o)this._includeAllSlots&&!this._shouldSkipSlot()&&(t=this._formatOutValue(o.cell,o.row,o.column));else{const o=e.getChild(this._cellIndex);if(!o)return this._advanceToNextRow();const n=parseInt(o.getAttribute("colspan")||1),i=parseInt(o.getAttribute("rowspan")||1);(n>1||i>1)&&this._recordSpans(o,i,n),this._shouldSkipSlot()||(t=this._formatOutValue(o)),this._nextCellAtColumn=this._column+n}return this._column++,this._column==this._nextCellAtColumn&&this._cellIndex++,t||this.next()}skipRow(e){this._skipRows.add(e)}_advanceToNextRow(){return this._row++,this._rowIndex++,this._column=0,this._cellIndex=0,this._nextCellAtColumn=-1,this.next()}_isOverEndRow(){return void 0!==this._endRow&&this._row>this._endRow}_isOverEndColumn(){return void 0!==this._endColumn&&this._column>this._endColumn}_formatOutValue(e,t=this._row,o=this._column){return{done:!1,value:new h(this,e,t,o)}}_shouldSkipSlot(){const e=this._skipRows.has(this._row),t=this._row<this._startRow,o=this._column<this._startColumn,n=void 0!==this._endColumn&&this._column>this._endColumn;return e||t||o||n}_getSpanned(){const e=this._spannedCells.get(this._row);return e&&e.get(this._column)||null}_recordSpans(e,t,o){const n={cell:e,row:this._row,column:this._column};for(let e=this._row;e<this._row+t;e++)for(let t=this._column;t<this._column+o;t++)e==this._row&&t==this._column||this._markSpannedCell(e,t,n)}_markSpannedCell(e,t,o){this._spannedCells.has(e)||this._spannedCells.set(e,new Map);this._spannedCells.get(e).set(t,o)}}class h{constructor(e,t,o,n){this.cell=t,this.row=e._row,this.column=e._column,this.cellAnchorRow=o,this.cellAnchorColumn=n,this._cellIndex=e._cellIndex,this._rowIndex=e._rowIndex,this._table=e._table}get isAnchor(){return this.row===this.cellAnchorRow&&this.column===this.cellAnchorColumn}get cellWidth(){return parseInt(this.cell.getAttribute("colspan")||1)}get cellHeight(){return parseInt(this.cell.getAttribute("rowspan")||1)}get rowIndex(){return this._rowIndex}getPositionBefore(){return this._table.root.document.model.createPositionAt(this._table.getChild(this.row),this._cellIndex)}}function b(e,o={}){return(n,{writer:i})=>{const l=n.getAttribute("headingRows")||0,r=[];l>0&&r.push(i.createContainerElement("thead",null,i.createSlot((e=>e.is("element","tableRow")&&e.index<l)))),l<e.getRows(n)&&r.push(i.createContainerElement("tbody",null,i.createSlot((e=>e.is("element","tableRow")&&e.index>=l))));const s=i.createContainerElement("figure",{class:"table"},[i.createContainerElement("table",null,r),i.createSlot((e=>!e.is("element","tableRow")))]);return o.asWidget?function(e,o){return o.setCustomProperty("table",!0,e),(0,t.toWidget)(e,o,{hasSelectionHandle:!0})}(s,i):s}}function m(e={}){return(o,{writer:n})=>{const i=o.parent,l=i.parent,r=l.getChildIndex(i),s=new u(l,{row:r}),a=l.getAttribute("headingRows")||0,c=l.getAttribute("headingColumns")||0;for(const i of s)if(i.cell==o){const o=i.row<a||i.column<c?"th":"td";return e.asWidget?(0,t.toWidgetEditable)(n.createEditableElement(o),n):n.createContainerElement(o)}}}function g(e={}){return(t,{writer:o,consumable:n,mapper:i})=>{if(t.parent.is("element","tableCell")&&p(t))return e.asWidget?o.createContainerElement("span",{class:"ck-table-bogus-paragraph"}):(n.consume(t,"insert"),void i.bindElements(t,i.toViewElement(t.parent)))}}function p(e){return 1==e.parent.childCount&&![...e.getAttributeKeys()].length}class f extends e.Command{refresh(){const e=this.editor.model,t=e.document.selection,o=e.schema;this.isEnabled=function(e,t){const o=e.getFirstPosition().parent,n=o===o.root?o:o.parent;return t.checkChild(n,"table")}(t,o)}execute(e={}){const t=this.editor.model,o=this.editor.plugins.get("TableUtils"),n=this.editor.config.get("table"),i=n.defaultHeadings.rows,l=n.defaultHeadings.columns;void 0===e.headingRows&&i&&(e.headingRows=i),void 0===e.headingColumns&&l&&(e.headingColumns=l),t.change((n=>{const i=o.createTable(n,e);t.insertObject(i,null,null,{findOptimalPosition:"auto"}),n.setSelection(n.createPositionAt(i.getNodeByPath([0,0,0]),0))}))}}class w extends e.Command{constructor(e,t={}){super(e),this.order=t.order||"below"}refresh(){const e=this.editor.model.document.selection,t=!!this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e).length;this.isEnabled=t}execute(){const e=this.editor,t=e.model.document.selection,o=e.plugins.get("TableUtils"),n="above"===this.order,i=o.getSelectionAffectedTableCells(t),l=o.getRowIndexes(i),r=n?l.first:l.last,s=i[0].findAncestor("table");o.insertRows(s,{at:n?r:r+1,copyStructureFromAbove:!n})}}class k extends e.Command{constructor(e,t={}){super(e),this.order=t.order||"right"}refresh(){const e=this.editor.model.document.selection,t=!!this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e).length;this.isEnabled=t}execute(){const e=this.editor,t=e.model.document.selection,o=e.plugins.get("TableUtils"),n="left"===this.order,i=o.getSelectionAffectedTableCells(t),l=o.getColumnIndexes(i),r=n?l.first:l.last,s=i[0].findAncestor("table");o.insertColumns(s,{columns:1,at:n?r:r+1})}}class _ extends e.Command{constructor(e,t={}){super(e),this.direction=t.direction||"horizontally"}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=1===e.length}execute(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection)[0];"horizontally"===this.direction?e.splitCellHorizontally(t,2):e.splitCellVertically(t,2)}}function v(e,t,o){const{startRow:n,startColumn:r,endRow:s,endColumn:a}=t,c=o.createElement("table"),d=s-n+1;for(let e=0;e<d;e++)o.insertElement("tableRow",c,"end");const h=[...new u(e,{startRow:n,endRow:s,startColumn:r,endColumn:a,includeAllSlots:!0})];for(const{row:e,column:t,cell:i,isAnchor:d,cellAnchorRow:u,cellAnchorColumn:b}of h){const h=e-n,m=c.getChild(h);if(d){const n=o.cloneElement(i);o.append(n,m),x(n,e,t,s,a,o)}else(u<n||b<r)&&l(o,o.createPositionAt(m,"end"))}return function(e,t,o,n,l){const r=parseInt(t.getAttribute("headingRows")||0);if(r>0){i("headingRows",r-o,e,l,0)}const s=parseInt(t.getAttribute("headingColumns")||0);if(s>0){i("headingColumns",s-n,e,l,0)}}(c,e,n,r,o),c}function C(e,t,o=0){const n=[],i=new u(e,{startRow:o,endRow:t-1});for(const e of i){const{row:o,cellHeight:i}=e,l=o+i-1;o<t&&t<=l&&n.push(e)}return n}function y(e,t,o){const n=e.parent,r=n.parent,s=n.index,a=t-s,c={},d=parseInt(e.getAttribute("rowspan"))-a;d>1&&(c.rowspan=d);const h=parseInt(e.getAttribute("colspan")||1);h>1&&(c.colspan=h);const b=s+a,m=[...new u(r,{startRow:s,endRow:b,includeAllSlots:!0})];let g,p=null;for(const t of m){const{row:n,column:i,cell:r}=t;r===e&&void 0===g&&(g=i),void 0!==g&&g===i&&n===b&&(p=l(o,t.getPositionBefore(),c))}return i("rowspan",a,e,o),p}function T(e,t){const o=[],n=new u(e);for(const e of n){const{column:n,cellWidth:i}=e,l=n+i-1;n<t&&t<=l&&o.push(e)}return o}function A(e,t,o,n){const r=o-t,s={},a=parseInt(e.getAttribute("colspan"))-r;a>1&&(s.colspan=a);const c=parseInt(e.getAttribute("rowspan")||1);c>1&&(s.rowspan=c);const d=l(n,n.createPositionAfter(e),s);return i("colspan",r,e,n),d}function x(e,t,o,n,l,r){const s=parseInt(e.getAttribute("colspan")||1),a=parseInt(e.getAttribute("rowspan")||1);if(o+s-1>l){i("colspan",l-o+1,e,r,1)}if(t+a-1>n){i("rowspan",n-t+1,e,r,1)}}function V(e,t){const o=t.getColumns(e),n=new Array(o).fill(0);for(const{column:t}of new u(e))n[t]++;const i=n.reduce(((e,t,o)=>t?e:[...e,o]),[]);if(i.length>0){const o=i[i.length-1];return t.removeColumns(e,{at:o}),!0}return!1}function S(e,t){const o=[],n=t.getRows(e);for(let t=0;t<n;t++){e.getChild(t).isEmpty&&o.push(t)}if(o.length>0){const n=o[o.length-1];return t.removeRows(e,{at:n}),!0}return!1}function R(e,t){V(e,t)||S(e,t)}function I(e,t){const o=Array.from(new u(e,{startColumn:t.firstColumn,endColumn:t.lastColumn,row:t.lastRow}));if(o.every((({cellHeight:e})=>1===e)))return t.lastRow;const n=o[0].cellHeight-1;return t.lastRow+n}function P(e,t){const o=Array.from(new u(e,{startRow:t.firstRow,endRow:t.lastRow,column:t.lastColumn}));if(o.every((({cellWidth:e})=>1===e)))return t.lastColumn;const n=o[0].cellWidth-1;return t.lastColumn+n}class E extends e.Command{constructor(e,t){super(e),this.direction=t.direction,this.isHorizontal="right"==this.direction||"left"==this.direction}refresh(){const e=this._getMergeableCell();this.value=e,this.isEnabled=!!e}execute(){const e=this.editor.model,t=e.document,o=this.editor.plugins.get("TableUtils").getTableCellsContainingSelection(t.selection)[0],n=this.value,i=this.direction;e.change((e=>{const t="right"==i||"down"==i,l=t?o:n,r=t?n:o,s=r.parent;!function(e,t,o){z(e)||(z(t)&&o.remove(o.createRangeIn(t)),o.move(o.createRangeIn(e),o.createPositionAt(t,"end")));o.remove(e)}(r,l,e);const a=this.isHorizontal?"colspan":"rowspan",c=parseInt(o.getAttribute(a)||1),d=parseInt(n.getAttribute(a)||1);e.setAttribute(a,c+d,l),e.setSelection(e.createRangeIn(l));const u=this.editor.plugins.get("TableUtils");R(s.findAncestor("table"),u)}))}_getMergeableCell(){const e=this.editor.model.document,t=this.editor.plugins.get("TableUtils"),o=t.getTableCellsContainingSelection(e.selection)[0];if(!o)return;const n=this.isHorizontal?function(e,t,o){const n=e.parent.parent,i="right"==t?e.nextSibling:e.previousSibling,l=(n.getAttribute("headingColumns")||0)>0;if(!i)return;const s="right"==t?e:i,a="right"==t?i:e,{column:c}=o.getCellLocation(s),{column:d}=o.getCellLocation(a),u=parseInt(s.getAttribute("colspan")||1),h=r(o,s),b=r(o,a);if(l&&h!=b)return;return c+u===d?i:void 0}(o,this.direction,t):function(e,t,o){const n=e.parent,i=n.parent,l=i.getChildIndex(n);if("down"==t&&l===o.getRows(i)-1||"up"==t&&0===l)return;const r=parseInt(e.getAttribute("rowspan")||1),s=i.getAttribute("headingRows")||0,a="down"==t&&l+r===s,c="up"==t&&l===s;if(s&&(a||c))return;const d=parseInt(e.getAttribute("rowspan")||1),h="down"==t?l+d:l,b=[...new u(i,{endRow:h})],m=b.find((t=>t.cell===e)).column,g=b.find((({row:e,cellHeight:o,column:n})=>n===m&&("down"==t?e===h:h===e+o)));return g&&g.cell}(o,this.direction,t);if(!n)return;const i=this.isHorizontal?"rowspan":"colspan",l=parseInt(o.getAttribute(i)||1);return parseInt(n.getAttribute(i)||1)===l?n:void 0}}function z(e){return 1==e.childCount&&e.getChild(0).is("element","paragraph")&&e.getChild(0).isEmpty}class B extends e.Command{refresh(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection),o=t[0];if(o){const n=o.findAncestor("table"),i=this.editor.plugins.get("TableUtils").getRows(n)-1,l=e.getRowIndexes(t),r=0===l.first&&l.last===i;this.isEnabled=!r}else this.isEnabled=!1}execute(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=t.getSelectionAffectedTableCells(e.document.selection),n=t.getRowIndexes(o),i=o[0],l=i.findAncestor("table"),r=t.getCellLocation(i).column;e.change((e=>{const o=n.last-n.first+1;t.removeRows(l,{at:n.first,rows:o});const i=function(e,t,o,n){const i=e.getChild(Math.min(t,n-1));let l=i.getChild(0),r=0;for(const e of i.getChildren()){if(r>o)return l;l=e,r+=parseInt(e.getAttribute("colspan")||1)}return l}(l,n.first,r,t.getRows(l));e.setSelection(e.createPositionAt(i,0))}))}}class L extends e.Command{refresh(){const e=this.editor.plugins.get("TableUtils"),t=e.getSelectionAffectedTableCells(this.editor.model.document.selection),o=t[0];if(o){const n=o.findAncestor("table"),i=e.getColumns(n),{first:l,last:r}=e.getColumnIndexes(t);this.isEnabled=r-l<i-1}else this.isEnabled=!1}execute(){const e=this.editor.plugins.get("TableUtils"),[t,o]=function(e,t){const o=t.getSelectionAffectedTableCells(e),n=o[0],i=o.pop(),l=[n,i];return n.isBefore(i)?l:l.reverse()}(this.editor.model.document.selection,e),n=t.parent.parent,i=[...new u(n)],l={first:i.find((e=>e.cell===t)).column,last:i.find((e=>e.cell===o)).column},r=function(e,t,o,n){return parseInt(o.getAttribute("colspan")||1)>1?o:t.previousSibling||o.nextSibling?o.nextSibling||t.previousSibling:n.first?e.reverse().find((({column:e})=>e<n.first)).cell:e.reverse().find((({column:e})=>e>n.last)).cell}(i,t,o,l);this.editor.model.change((e=>{const t=l.last-l.first+1;this.editor.plugins.get("TableUtils").removeColumns(n,{at:l.first,columns:t}),e.setSelection(e.createPositionAt(r,0))}))}}class W extends e.Command{refresh(){const e=this.editor.plugins.get("TableUtils"),t=this.editor.model,o=e.getSelectionAffectedTableCells(t.document.selection),n=o.length>0;this.isEnabled=n,this.value=n&&o.every((e=>this._isInHeading(e,e.parent.parent)))}execute(e={}){if(e.forceValue===this.value)return;const t=this.editor.plugins.get("TableUtils"),o=this.editor.model,n=t.getSelectionAffectedTableCells(o.document.selection),l=n[0].findAncestor("table"),{first:r,last:s}=t.getRowIndexes(n),a=this.value?r:s+1,c=l.getAttribute("headingRows")||0;o.change((e=>{if(a){const t=C(l,a,a>c?c:0);for(const{cell:o}of t)y(o,a,e)}i("headingRows",a,l,e,0)}))}_isInHeading(e,t){const o=parseInt(t.getAttribute("headingRows")||0);return!!o&&e.parent.index<o}}class N extends e.Command{refresh(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=t.getSelectionAffectedTableCells(e.document.selection),n=o.length>0;this.isEnabled=n,this.value=n&&o.every((e=>r(t,e)))}execute(e={}){if(e.forceValue===this.value)return;const t=this.editor.plugins.get("TableUtils"),o=this.editor.model,n=t.getSelectionAffectedTableCells(o.document.selection),l=n[0].findAncestor("table"),{first:r,last:s}=t.getColumnIndexes(n),a=this.value?r:s+1;o.change((e=>{if(a){const t=T(l,a);for(const{cell:o,column:n}of t)A(o,n,a,e)}i("headingColumns",a,l,e,0)}))}}class F extends e.Plugin{static get pluginName(){return"TableUtils"}init(){this.decorate("insertColumns"),this.decorate("insertRows")}getCellLocation(e){const t=e.parent,o=t.parent,n=o.getChildIndex(t),i=new u(o,{row:n});for(const{cell:t,row:o,column:n}of i)if(t===e)return{row:o,column:n}}createTable(e,t){const o=e.createElement("table"),n=parseInt(t.rows)||2,l=parseInt(t.columns)||2;return D(e,o,0,n,l),t.headingRows&&i("headingRows",Math.min(t.headingRows,n),o,e,0),t.headingColumns&&i("headingColumns",Math.min(t.headingColumns,l),o,e,0),o}insertRows(e,t={}){const o=this.editor.model,n=t.at||0,r=t.rows||1,a=void 0!==t.copyStructureFromAbove,c=t.copyStructureFromAbove?n-1:n,d=this.getRows(e),h=this.getColumns(e);if(n>d)throw new s.CKEditorError("tableutils-insertrows-insert-out-of-range",this,{options:t});o.change((t=>{const o=e.getAttribute("headingRows")||0;if(o>n&&i("headingRows",o+r,e,t,0),!a&&(0===n||n===d))return void D(t,e,n,r,h);const s=a?Math.max(n,c):n,b=new u(e,{endRow:s}),m=new Array(h).fill(1);for(const{row:e,column:o,cellHeight:i,cellWidth:l,cell:s}of b){const d=e+i-1,u=e<=c&&c<=d;e<n&&n<=d?(t.setAttribute("rowspan",i+r,s),m[o]=-l):a&&u&&(m[o]=l)}for(let o=0;o<r;o++){const o=t.createElement("tableRow");t.insert(o,e,n);for(let e=0;e<m.length;e++){const n=m[e],i=t.createPositionAt(o,"end");n>0&&l(t,i,n>1?{colspan:n}:null),e+=Math.abs(n)-1}}}))}insertColumns(e,t={}){const o=this.editor.model,n=t.at||0,i=t.columns||1;o.change((t=>{const o=e.getAttribute("headingColumns");n<o&&t.setAttribute("headingColumns",o+i,e);const l=this.getColumns(e);if(0===n||l===n){for(const o of e.getChildren())o.is("element","tableRow")&&H(i,t,t.createPositionAt(o,n?"end":0));return}const r=new u(e,{column:n,includeAllSlots:!0});for(const e of r){const{row:o,cell:l,cellAnchorColumn:s,cellAnchorRow:a,cellWidth:c,cellHeight:d}=e;if(s<n){t.setAttribute("colspan",c+i,l);const e=a+d-1;for(let t=o;t<=e;t++)r.skipRow(t)}else H(i,t,e.getPositionBefore())}}))}removeRows(e,t){const o=this.editor.model,n=t.rows||1,l=this.getRows(e),r=t.at,a=r+n-1;if(a>l-1)throw new s.CKEditorError("tableutils-removerows-row-index-out-of-range",this,{table:e,options:t});o.change((t=>{const{cellsToMove:o,cellsToTrim:n}=function(e,t,o){const n=new Map,i=[];for(const{row:l,column:r,cellHeight:s,cell:a}of new u(e,{endRow:o})){const e=l+s-1;if(l>=t&&l<=o&&e>o){const e=s-(o-l+1);n.set(r,{cell:a,rowspan:e})}if(l<t&&e>=t){let n;n=e>=o?o-t+1:e-t+1,i.push({cell:a,rowspan:s-n})}}return{cellsToMove:n,cellsToTrim:i}}(e,r,a);if(o.size){!function(e,t,o,n){const l=[...new u(e,{includeAllSlots:!0,row:t})],r=e.getChild(t);let s;for(const{column:e,cell:t,isAnchor:a}of l)if(o.has(e)){const{cell:t,rowspan:l}=o.get(e),a=s?n.createPositionAfter(s):n.createPositionAt(r,0);n.move(n.createRangeOn(t),a),i("rowspan",l,t,n),s=t}else a&&(s=t)}(e,a+1,o,t)}for(let o=a;o>=r;o--)t.remove(e.getChild(o));for(const{rowspan:e,cell:o}of n)i("rowspan",e,o,t);!function(e,t,o,n){const l=e.getAttribute("headingRows")||0;if(t<l){i("headingRows",o<l?l-(o-t+1):t,e,n,0)}}(e,r,a,t),V(e,this)||S(e,this)}))}removeColumns(e,t){const o=this.editor.model,n=t.at,l=t.columns||1,r=t.at+l-1;o.change((t=>{!function(e,t,o){const n=e.getAttribute("headingColumns")||0;if(n&&t.first<n){const i=Math.min(n-1,t.last)-t.first+1;o.setAttribute("headingColumns",n-i,e)}}(e,{first:n,last:r},t);for(let o=r;o>=n;o--)for(const{cell:n,column:l,cellWidth:r}of[...new u(e)])l<=o&&r>1&&l+r>o?i("colspan",r-1,n,t):l===o&&t.remove(n);S(e,this)||V(e,this)}))}splitCellVertically(e,t=2){const o=this.editor.model,n=e.parent.parent,l=parseInt(e.getAttribute("rowspan")||1),r=parseInt(e.getAttribute("colspan")||1);o.change((o=>{if(r>1){const{newCellsSpan:n,updatedSpan:s}=M(r,t);i("colspan",s,e,o);const a={};n>1&&(a.colspan=n),l>1&&(a.rowspan=l);H(r>t?t-1:r-1,o,o.createPositionAfter(e),a)}if(r<t){const s=t-r,a=[...new u(n)],{column:c}=a.find((({cell:t})=>t===e)),d=a.filter((({cell:t,cellWidth:o,column:n})=>t!==e&&n===c||n<c&&n+o>c));for(const{cell:e,cellWidth:t}of d)o.setAttribute("colspan",t+s,e);const h={};l>1&&(h.rowspan=l),H(s,o,o.createPositionAfter(e),h);const b=n.getAttribute("headingColumns")||0;b>c&&i("headingColumns",b+s,n,o)}}))}splitCellHorizontally(e,t=2){const o=this.editor.model,n=e.parent,l=n.parent,r=l.getChildIndex(n),s=parseInt(e.getAttribute("rowspan")||1),a=parseInt(e.getAttribute("colspan")||1);o.change((o=>{if(s>1){const n=[...new u(l,{startRow:r,endRow:r+s-1,includeAllSlots:!0})],{newCellsSpan:c,updatedSpan:d}=M(s,t);i("rowspan",d,e,o);const{column:h}=n.find((({cell:t})=>t===e)),b={};c>1&&(b.rowspan=c),a>1&&(b.colspan=a);for(const e of n){const{column:t,row:n}=e,i=t===h,l=(n+r+d)%c==0;n>=r+d&&i&&l&&H(1,o,e.getPositionBefore(),b)}}if(s<t){const n=t-s,c=[...new u(l,{startRow:0,endRow:r})];for(const{cell:t,cellHeight:i,row:l}of c)if(t!==e&&l+i>r){const e=i+n;o.setAttribute("rowspan",e,t)}const d={};a>1&&(d.colspan=a),D(o,l,r+1,n,1,d);const h=l.getAttribute("headingRows")||0;h>r&&i("headingRows",h+n,l,o)}}))}getColumns(e){return[...e.getChild(0).getChildren()].reduce(((e,t)=>e+parseInt(t.getAttribute("colspan")||1)),0)}getRows(e){return Array.from(e.getChildren()).reduce(((e,t)=>t.is("element","tableRow")?e+1:e),0)}createTableWalker(e,t={}){return new u(e,t)}getSelectedTableCells(e){const t=[];for(const o of this.sortRanges(e.getRanges())){const e=o.getContainedElement();e&&e.is("element","tableCell")&&t.push(e)}return t}getTableCellsContainingSelection(e){const t=[];for(const o of e.getRanges()){const e=o.start.findAncestor("tableCell");e&&t.push(e)}return t}getSelectionAffectedTableCells(e){const t=this.getSelectedTableCells(e);return t.length?t:this.getTableCellsContainingSelection(e)}getRowIndexes(e){const t=e.map((e=>e.parent.index));return this._getFirstLastIndexesObject(t)}getColumnIndexes(e){const t=e[0].findAncestor("table"),o=[...new u(t)].filter((t=>e.includes(t.cell))).map((e=>e.column));return this._getFirstLastIndexesObject(o)}isSelectionRectangular(e){if(e.length<2||!this._areCellInTheSameTableSection(e))return!1;const t=new Set,o=new Set;let n=0;for(const i of e){const{row:e,column:l}=this.getCellLocation(i),r=parseInt(i.getAttribute("rowspan")||1),s=parseInt(i.getAttribute("colspan")||1);t.add(e),o.add(l),r>1&&t.add(e+r-1),s>1&&o.add(l+s-1),n+=r*s}const i=function(e,t){const o=Array.from(e.values()),n=Array.from(t.values()),i=Math.max(...o),l=Math.min(...o),r=Math.max(...n),s=Math.min(...n);return(i-l+1)*(r-s+1)}(t,o);return i==n}sortRanges(e){return Array.from(e).sort(O)}_getFirstLastIndexesObject(e){const t=e.sort(((e,t)=>e-t));return{first:t[0],last:t[t.length-1]}}_areCellInTheSameTableSection(e){const t=e[0].findAncestor("table"),o=this.getRowIndexes(e),n=parseInt(t.getAttribute("headingRows")||0);if(!this._areIndexesInSameSection(o,n))return!1;const i=parseInt(t.getAttribute("headingColumns")||0),l=this.getColumnIndexes(e);return this._areIndexesInSameSection(l,i)}_areIndexesInSameSection({first:e,last:t},o){return e<o===t<o}}function D(e,t,o,n,i,l={}){for(let r=0;r<n;r++){const n=e.createElement("tableRow");e.insert(n,t,o),H(i,e,e.createPositionAt(n,"end"),l)}}function H(e,t,o,n={}){for(let i=0;i<e;i++)l(t,o,n)}function M(e,t){if(e<t)return{newCellsSpan:1,updatedSpan:1};const o=Math.floor(e/t);return{newCellsSpan:o,updatedSpan:e-o*t+o}}function O(e,t){const o=e.start,n=t.start;return o.isBefore(n)?-1:1}class j extends e.Command{refresh(){const e=this.editor.plugins.get(F),t=e.getSelectedTableCells(this.editor.model.document.selection);this.isEnabled=e.isSelectionRectangular(t,this.editor.plugins.get(F))}execute(){const e=this.editor.model,t=this.editor.plugins.get(F);e.change((o=>{const n=t.getSelectedTableCells(e.document.selection),l=n.shift(),{mergeWidth:r,mergeHeight:s}=function(e,t,o){let n=0,i=0;for(const e of t){const{row:t,column:l}=o.getCellLocation(e);n=$(e,l,n,"colspan"),i=$(e,t,i,"rowspan")}const{row:l,column:r}=o.getCellLocation(e);return{mergeWidth:n-r,mergeHeight:i-l}}(l,n,t);i("colspan",r,l,o),i("rowspan",s,l,o);for(const e of n)U(e,l,o);R(l.findAncestor("table"),t),o.setSelection(l,"in")}))}}function U(e,t,o){Z(e)||(Z(t)&&o.remove(o.createRangeIn(t)),o.move(o.createRangeIn(e),o.createPositionAt(t,"end"))),o.remove(e)}function Z(e){return 1==e.childCount&&e.getChild(0).is("element","paragraph")&&e.getChild(0).isEmpty}function $(e,t,o,n){const i=parseInt(e.getAttribute(n)||1);return Math.max(o,t+i)}class K extends e.Command{constructor(e){super(e),this.affectsData=!1}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=e.length>0}execute(){const e=this.editor.model,t=this.editor.plugins.get("TableUtils"),o=t.getSelectionAffectedTableCells(e.document.selection),n=t.getRowIndexes(o),i=o[0].findAncestor("table"),l=[];for(let t=n.first;t<=n.last;t++)for(const o of i.getChild(t).getChildren())l.push(e.createRangeOn(o));e.change((e=>{e.setSelection(l)}))}}class q extends e.Command{constructor(e){super(e),this.affectsData=!1}refresh(){const e=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(this.editor.model.document.selection);this.isEnabled=e.length>0}execute(){const e=this.editor.plugins.get("TableUtils"),t=this.editor.model,o=e.getSelectionAffectedTableCells(t.document.selection),n=o[0],i=o.pop(),l=n.findAncestor("table"),r=e.getCellLocation(n),s=e.getCellLocation(i),a=Math.min(r.column,s.column),c=Math.max(r.column,s.column),d=[];for(const e of new u(l,{startColumn:a,endColumn:c}))d.push(t.createRangeOn(e.cell));t.change((e=>{e.setSelection(d)}))}}function G(e){e.document.registerPostFixer((t=>function(e,t){const o=t.document.differ.getChanges();let n=!1;const i=new Set;for(const t of o){let o;"table"==t.name&&"insert"==t.type&&(o=t.position.nodeAfter),"tableRow"!=t.name&&"tableCell"!=t.name||(o=t.position.findAncestor("table")),Y(t)&&(o=t.range.start.findAncestor("table")),o&&!i.has(o)&&(n=J(o,e)||n,n=X(o,e)||n,i.add(o))}return n}(t,e)))}function J(e,t){let o=!1;const n=function(e){const t=parseInt(e.getAttribute("headingRows")||0),o=Array.from(e.getChildren()).reduce(((e,t)=>t.is("element","tableRow")?e+1:e),0),n=[];for(const{row:i,cell:l,cellHeight:r}of new u(e)){if(r<2)continue;const e=i<t?t:o;if(i+r>e){const t=e-i;n.push({cell:l,rowspan:t})}}return n}(e);if(n.length){o=!0;for(const e of n)i("rowspan",e.rowspan,e.cell,t,1)}return o}function X(e,t){let o=!1;const n=function(e){const t=new Array(e.childCount).fill(0);for(const{rowIndex:o}of new u(e,{includeAllSlots:!0}))t[o]++;return t}(e),i=[];for(const[t,o]of n.entries())!o&&e.getChild(t).is("element","tableRow")&&i.push(t);if(i.length){o=!0;for(const o of i.reverse())t.remove(e.getChild(o)),n.splice(o,1)}const r=n.filter(((t,o)=>e.getChild(o).is("element","tableRow"))),s=r[0];if(!r.every((e=>e===s))){const n=r.reduce(((e,t)=>t>e?t:e),0);for(const[i,s]of r.entries()){const r=n-s;if(r){for(let o=0;o<r;o++)l(t,t.createPositionAt(e.getChild(i),"end"));o=!0}}}return o}function Y(e){const t="attribute"===e.type,o=e.attributeKey;return t&&("headingRows"===o||"colspan"===o||"rowspan"===o)}function Q(e){e.document.registerPostFixer((t=>function(e,t){const o=t.document.differ.getChanges();let n=!1;for(const t of o)"insert"==t.type&&"table"==t.name&&(n=ee(t.position.nodeAfter,e)||n),"insert"==t.type&&"tableRow"==t.name&&(n=te(t.position.nodeAfter,e)||n),"insert"==t.type&&"tableCell"==t.name&&(n=oe(t.position.nodeAfter,e)||n),ne(t)&&(n=oe(t.position.parent,e)||n);return n}(t,e)))}function ee(e,t){let o=!1;for(const n of e.getChildren())n.is("element","tableRow")&&(o=te(n,t)||o);return o}function te(e,t){let o=!1;for(const n of e.getChildren())o=oe(n,t)||o;return o}function oe(e,t){if(0==e.childCount)return t.insertElement("paragraph",e),!0;const o=Array.from(e.getChildren()).filter((e=>e.is("$text")));for(const e of o)t.wrap(t.createRangeOn(e),"paragraph");return!!o.length}function ne(e){return!(!e.position||!e.position.parent.is("element","tableCell"))&&("insert"==e.type&&"$text"==e.name||"remove"==e.type)}function ie(e,t){if(!e.is("element","paragraph"))return!1;const o=t.toViewElement(e);return!!o&&p(e)!==o.is("element","span")}var le=o(62),re=o.n(le),se=o(482),ae={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(se.Z,ae);se.Z.locals;class ce extends e.Plugin{static get pluginName(){return"TableEditing"}static get requires(){return[F]}init(){const e=this.editor,t=e.model,o=t.schema,n=e.conversion,i=e.plugins.get(F);o.register("table",{inheritAllFrom:"$blockObject",allowAttributes:["headingRows","headingColumns"]}),o.register("tableRow",{allowIn:"table",isLimit:!0}),o.register("tableCell",{allowContentOf:"$container",allowIn:"tableRow",allowAttributes:["colspan","rowspan"],isLimit:!0,isSelectable:!0}),n.for("upcast").add((e=>{e.on("element:figure",((e,t,o)=>{if(!o.consumable.test(t.viewItem,{name:!0,classes:"table"}))return;const n=function(e){for(const t of e.getChildren())if(t.is("element","table"))return t}(t.viewItem);if(!n||!o.consumable.test(n,{name:!0}))return;o.consumable.consume(t.viewItem,{name:!0,classes:"table"});const i=o.convertItem(n,t.modelCursor),l=(0,s.first)(i.modelRange.getItems());l?(o.convertChildren(t.viewItem,o.writer.createPositionAt(l,"end")),o.updateConversionResult(l,t)):o.consumable.revert(t.viewItem,{name:!0,classes:"table"})}))})),n.for("upcast").add(a()),n.for("editingDowncast").elementToStructure({model:{name:"table",attributes:["headingRows"]},view:b(i,{asWidget:!0})}),n.for("dataDowncast").elementToStructure({model:{name:"table",attributes:["headingRows"]},view:b(i)}),n.for("upcast").elementToElement({model:"tableRow",view:"tr"}),n.for("upcast").add((e=>{e.on("element:tr",((e,t)=>{t.viewItem.isEmpty&&0==t.modelCursor.index&&e.stop()}),{priority:"high"})})),n.for("downcast").elementToElement({model:"tableRow",view:(e,{writer:t})=>e.isEmpty?t.createEmptyElement("tr"):t.createContainerElement("tr")}),n.for("upcast").elementToElement({model:"tableCell",view:"td"}),n.for("upcast").elementToElement({model:"tableCell",view:"th"}),n.for("upcast").add(c("td")),n.for("upcast").add(c("th")),n.for("editingDowncast").elementToElement({model:"tableCell",view:m({asWidget:!0})}),n.for("dataDowncast").elementToElement({model:"tableCell",view:m()}),n.for("editingDowncast").elementToElement({model:"paragraph",view:g({asWidget:!0}),converterPriority:"high"}),n.for("dataDowncast").elementToElement({model:"paragraph",view:g(),converterPriority:"high"}),n.for("downcast").attributeToAttribute({model:"colspan",view:"colspan"}),n.for("upcast").attributeToAttribute({model:{key:"colspan",value:de("colspan")},view:"colspan"}),n.for("downcast").attributeToAttribute({model:"rowspan",view:"rowspan"}),n.for("upcast").attributeToAttribute({model:{key:"rowspan",value:de("rowspan")},view:"rowspan"}),e.data.mapper.on("modelToViewPosition",((e,t)=>{const o=t.modelPosition.parent,n=t.modelPosition.nodeBefore;if(!o.is("element","tableCell"))return;if(!n||!n.is("element","paragraph"))return;const i=t.mapper.toViewElement(n),l=t.mapper.toViewElement(o);i===l&&(t.viewPosition=t.mapper.findPositionIn(l,n.maxOffset))})),e.config.define("table.defaultHeadings.rows",0),e.config.define("table.defaultHeadings.columns",0),e.commands.add("insertTable",new f(e)),e.commands.add("insertTableRowAbove",new w(e,{order:"above"})),e.commands.add("insertTableRowBelow",new w(e,{order:"below"})),e.commands.add("insertTableColumnLeft",new k(e,{order:"left"})),e.commands.add("insertTableColumnRight",new k(e,{order:"right"})),e.commands.add("removeTableRow",new B(e)),e.commands.add("removeTableColumn",new L(e)),e.commands.add("splitTableCellVertically",new _(e,{direction:"vertically"})),e.commands.add("splitTableCellHorizontally",new _(e,{direction:"horizontally"})),e.commands.add("mergeTableCells",new j(e)),e.commands.add("mergeTableCellRight",new E(e,{direction:"right"})),e.commands.add("mergeTableCellLeft",new E(e,{direction:"left"})),e.commands.add("mergeTableCellDown",new E(e,{direction:"down"})),e.commands.add("mergeTableCellUp",new E(e,{direction:"up"})),e.commands.add("setTableColumnHeader",new N(e)),e.commands.add("setTableRowHeader",new W(e)),e.commands.add("selectTableRow",new K(e)),e.commands.add("selectTableColumn",new q(e)),G(t),Q(t),this.listenTo(t.document,"change:data",(()=>{!function(e,t){const o=e.document.differ;for(const e of o.getChanges()){let o,n=!1;if("attribute"==e.type){const t=e.range.start.nodeAfter;if(!t||!t.is("element","table"))continue;if("headingRows"!=e.attributeKey&&"headingColumns"!=e.attributeKey)continue;o=t,n="headingRows"==e.attributeKey}else"tableRow"!=e.name&&"tableCell"!=e.name||(o=e.position.findAncestor("table"),n="tableRow"==e.name);if(!o)continue;const i=o.getAttribute("headingRows")||0,l=o.getAttribute("headingColumns")||0,r=new u(o);for(const e of r){const o=e.row<i||e.column<l?"th":"td",r=t.mapper.toViewElement(e.cell);r&&r.is("element")&&r.name!=o&&t.reconvertItem(n?e.cell.parent:e.cell)}}}(t,e.editing),function(e,t){const o=e.document.differ,n=new Set;for(const e of o.getChanges()){const t="attribute"==e.type?e.range.start.parent:e.position.parent;t.is("element","tableCell")&&n.add(t)}for(const e of n.values()){const o=Array.from(e.getChildren()).filter((e=>ie(e,t.mapper)));for(const e of o)t.reconvertItem(e)}}(t,e.editing)}))}}function de(e){return t=>{const o=parseInt(t.getAttribute(e));return Number.isNaN(o)||o<=0?null:o}}var ue=o(273),he=o(272),be={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(he.Z,be);he.Z.locals;class me extends ue.View{constructor(e){super(e);const t=this.bindTemplate;this._geometryLabelId=`ck-editor__label_${(0,s.uid)()}`,this.items=this._createGridCollection(),this.keystrokes=new s.KeystrokeHandler,this.focusTracker=new s.FocusTracker,this.set("rows",0),this.set("columns",0),this.bind("label").to(this,"columns",this,"rows",((e,t)=>`${t} × ${e}`)),this.setTemplate({tag:"div",attributes:{class:["ck"]},children:[{tag:"div",attributes:{class:["ck-insert-table-dropdown__grid"]},on:{"mouseover@.ck-insert-table-dropdown-grid-box":t.to("boxover")},children:this.items},{tag:"div",attributes:{id:this._geometryLabelId,class:["ck","ck-insert-table-dropdown__label"]},children:[{text:t.to("label")}]}],on:{mousedown:t.to((e=>{e.preventDefault()})),click:t.to((()=>{this.fire("execute")})),keydown:t.to((e=>{"Enter"===e.key&&(this.fire("execute"),e.preventDefault())}))}}),this.on("boxover",((e,t)=>{const{row:o,column:n}=t.target.dataset;this.items.get(10*(o-1)+(n-1)).focus()})),this.focusTracker.on("change:focusedElement",((e,t,o)=>{if(!o)return;const{row:n,column:i}=o.dataset;this.set({rows:parseInt(n),columns:parseInt(i)})})),this.on("change:columns",(()=>this._highlightGridBoxes())),this.on("change:rows",(()=>this._highlightGridBoxes()))}render(){super.render(),(0,ue.addKeyboardHandlingForGrid)({keystrokeHandler:this.keystrokes,focusTracker:this.focusTracker,gridItems:this.items,numberOfColumns:10});for(const e of this.items)this.focusTracker.add(e.element);this.keystrokes.listenTo(this.element)}focus(){this.items.get(0).focus()}focusLast(){this.items.get(0).focus()}_highlightGridBoxes(){const e=this.rows,t=this.columns;this.items.map(((o,n)=>{const i=Math.floor(n/10)<e&&n%10<t;o.set("isOn",i)}))}_createGridCollection(){const e=[];for(let t=0;t<100;t++){const o=Math.floor(t/10),n=t%10;e.push(new ge(this.locale,o+1,n+1,this._geometryLabelId))}return this.createCollection(e)}}class ge extends ue.View{constructor(e,t,o,n){super(e);const i=this.bindTemplate;this.set("isOn",!1),this.setTemplate({tag:"div",attributes:{class:["ck","ck-insert-table-dropdown-grid-box",i.if("isOn","ck-on")],"data-row":t,"data-column":o,tabindex:-1,"aria-labelledby":n}})}focus(){this.element.focus()}}class pe extends e.Plugin{static get pluginName(){return"TableUI"}init(){const e=this.editor,t=this.editor.t,o="ltr"===e.locale.contentLanguageDirection;e.ui.componentFactory.add("insertTable",(o=>{const n=e.commands.get("insertTable"),i=(0,ue.createDropdown)(o);let l;return i.bind("isEnabled").to(n),i.buttonView.set({icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M3 6v3h4V6H3zm0 4v3h4v-3H3zm0 4v3h4v-3H3zm5 3h4v-3H8v3zm5 0h4v-3h-4v3zm4-4v-3h-4v3h4zm0-4V6h-4v3h4zm1.5 8a1.5 1.5 0 0 1-1.5 1.5H3A1.5 1.5 0 0 1 1.5 17V4c.222-.863 1.068-1.5 2-1.5h13c.932 0 1.778.637 2 1.5v13zM12 13v-3H8v3h4zm0-4V6H8v3h4z"/></svg>',label:t("Insert table"),tooltip:!0}),i.on("change:isOpen",(()=>{l||(l=new me(o),i.panelView.children.add(l),l.delegate("execute").to(i),i.on("execute",(()=>{e.execute("insertTable",{rows:l.rows,columns:l.columns}),e.editing.view.focus()})))})),i})),e.ui.componentFactory.add("tableColumn",(e=>{const n=[{type:"switchbutton",model:{commandName:"setTableColumnHeader",label:t("Header column"),bindIsOn:!0}},{type:"separator"},{type:"button",model:{commandName:o?"insertTableColumnLeft":"insertTableColumnRight",label:t("Insert column left")}},{type:"button",model:{commandName:o?"insertTableColumnRight":"insertTableColumnLeft",label:t("Insert column right")}},{type:"button",model:{commandName:"removeTableColumn",label:t("Delete column")}},{type:"button",model:{commandName:"selectTableColumn",label:t("Select column")}}];return this._prepareDropdown(t("Column"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M18 7v1H2V7h16zm0 5v1H2v-1h16z" opacity=".6"/><path d="M14 1v18a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V1a1 1 0 0 1 1-1h6a1 1 0 0 1 1 1zm-2 1H8v4h4V2zm0 6H8v4h4V8zm0 6H8v4h4v-4z"/></svg>',n,e)})),e.ui.componentFactory.add("tableRow",(e=>{const o=[{type:"switchbutton",model:{commandName:"setTableRowHeader",label:t("Header row"),bindIsOn:!0}},{type:"separator"},{type:"button",model:{commandName:"insertTableRowAbove",label:t("Insert row above")}},{type:"button",model:{commandName:"insertTableRowBelow",label:t("Insert row below")}},{type:"button",model:{commandName:"removeTableRow",label:t("Delete row")}},{type:"button",model:{commandName:"selectTableRow",label:t("Select row")}}];return this._prepareDropdown(t("Row"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M7 2h1v16H7V2zm5 0h1v16h-1V2z" opacity=".6"/><path d="M1 6h18a1 1 0 0 1 1 1v6a1 1 0 0 1-1 1H1a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1zm1 2v4h4V8H2zm6 0v4h4V8H8zm6 0v4h4V8h-4z"/></svg>',o,e)})),e.ui.componentFactory.add("mergeTableCells",(e=>{const n=[{type:"button",model:{commandName:"mergeTableCellUp",label:t("Merge cell up")}},{type:"button",model:{commandName:o?"mergeTableCellRight":"mergeTableCellLeft",label:t("Merge cell right")}},{type:"button",model:{commandName:"mergeTableCellDown",label:t("Merge cell down")}},{type:"button",model:{commandName:o?"mergeTableCellLeft":"mergeTableCellRight",label:t("Merge cell left")}},{type:"separator"},{type:"button",model:{commandName:"splitTableCellVertically",label:t("Split cell vertically")}},{type:"button",model:{commandName:"splitTableCellHorizontally",label:t("Split cell horizontally")}}];return this._prepareMergeSplitButtonDropdown(t("Merge cells"),'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M2.5 1h15A1.5 1.5 0 0 1 19 2.5v15a1.5 1.5 0 0 1-1.5 1.5h-15A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1zM2 2v16h16V2H2z" opacity=".6"/><path d="M7 2h1v16H7V2zm5 0h1v7h-1V2zm6 5v1H2V7h16zM8 12v1H2v-1h6z" opacity=".6"/><path d="M7 7h12a1 1 0 0 1 1 1v11a1 1 0 0 1-1 1H7a1 1 0 0 1-1-1V8a1 1 0 0 1 1-1zm1 2v9h10V9H8z"/></svg>',n,e)}))}_prepareDropdown(e,t,o,n){const i=this.editor,l=(0,ue.createDropdown)(n),r=this._fillDropdownWithListOptions(l,o);return l.buttonView.set({label:e,icon:t,tooltip:!0}),l.bind("isEnabled").toMany(r,"isEnabled",((...e)=>e.some((e=>e)))),this.listenTo(l,"execute",(e=>{i.execute(e.source.commandName),e.source instanceof ue.SwitchButtonView||i.editing.view.focus()})),l}_prepareMergeSplitButtonDropdown(e,t,o,n){const i=this.editor,l=(0,ue.createDropdown)(n,ue.SplitButtonView),r="mergeTableCells",s=i.commands.get(r),a=this._fillDropdownWithListOptions(l,o);return l.buttonView.set({label:e,icon:t,tooltip:!0,isEnabled:!0}),l.bind("isEnabled").toMany([s,...a],"isEnabled",((...e)=>e.some((e=>e)))),this.listenTo(l.buttonView,"execute",(()=>{i.execute(r),i.editing.view.focus()})),this.listenTo(l,"execute",(e=>{i.execute(e.source.commandName),i.editing.view.focus()})),l}_fillDropdownWithListOptions(e,t){const o=this.editor,n=[],i=new s.Collection;for(const e of t)fe(e,o,n,i);return(0,ue.addListToDropdown)(e,i,o.ui.componentFactory),n}}function fe(e,t,o,n){const i=e.model=new ue.Model(e.model),{commandName:l,bindIsOn:r}=e.model;if("button"===e.type||"switchbutton"===e.type){const e=t.commands.get(l);o.push(e),i.set({commandName:l}),i.bind("isEnabled").to(e),r&&i.bind("isOn").to(e,"value")}i.set({withText:!0}),n.add(e)}var we=o(475),ke={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(we.Z,ke);we.Z.locals;class _e extends e.Plugin{static get pluginName(){return"TableSelection"}static get requires(){return[F,F]}init(){const e=this.editor.model;this.listenTo(e,"deleteContent",((e,t)=>this._handleDeleteContent(e,t)),{priority:"high"}),this._defineSelectionConverter(),this._enablePluginDisabling()}getSelectedTableCells(){const e=this.editor.plugins.get(F),t=this.editor.model.document.selection,o=e.getSelectedTableCells(t);return 0==o.length?null:o}getSelectionAsFragment(){const e=this.editor.plugins.get(F),t=this.getSelectedTableCells();return t?this.editor.model.change((o=>{const n=o.createDocumentFragment(),{first:i,last:l}=e.getColumnIndexes(t),{first:r,last:s}=e.getRowIndexes(t),a=t[0].findAncestor("table");let c=s,d=l;if(e.isSelectionRectangular(t)){const e={firstColumn:i,lastColumn:l,firstRow:r,lastRow:s};c=I(a,e),d=P(a,e)}const u=v(a,{startRow:r,startColumn:i,endRow:c,endColumn:d},o);return o.insert(u,n,0),n})):null}setCellSelection(e,t){const o=this._getCellsToSelect(e,t);this.editor.model.change((e=>{e.setSelection(o.cells.map((t=>e.createRangeOn(t))),{backward:o.backward})}))}getFocusCell(){const e=[...this.editor.model.document.selection.getRanges()].pop().getContainedElement();return e&&e.is("element","tableCell")?e:null}getAnchorCell(){const e=this.editor.model.document.selection,t=(0,s.first)(e.getRanges()).getContainedElement();return t&&t.is("element","tableCell")?t:null}_defineSelectionConverter(){const e=this.editor,t=new Set;e.conversion.for("editingDowncast").add((e=>e.on("selection",((e,o,n)=>{const i=n.writer;!function(e){for(const o of t)e.removeClass("ck-editor__editable_selected",o);t.clear()}(i);const l=this.getSelectedTableCells();if(!l)return;for(const e of l){const o=n.mapper.toViewElement(e);i.addClass("ck-editor__editable_selected",o),t.add(o)}const r=n.mapper.toViewElement(l[l.length-1]);i.setSelection(r,0)}),{priority:"lowest"})))}_enablePluginDisabling(){const e=this.editor;this.on("change:isEnabled",(()=>{if(!this.isEnabled){const t=this.getSelectedTableCells();if(!t)return;e.model.change((o=>{const n=o.createPositionAt(t[0],0),i=e.model.schema.getNearestSelectionRange(n);o.setSelection(i)}))}}))}_handleDeleteContent(e,t){const o=this.editor.plugins.get(F),[n,i]=t,l=this.editor.model,r=!i||"backward"==i.direction,s=o.getSelectedTableCells(n);s.length&&(e.stop(),l.change((e=>{const t=s[r?s.length-1:0];l.change((e=>{for(const t of s)l.deleteContent(e.createSelection(t,"in"))}));const o=l.schema.getNearestSelectionRange(e.createPositionAt(t,0));n.is("documentSelection")?e.setSelection(o):n.setTo(o)})))}_getCellsToSelect(e,t){const o=this.editor.plugins.get("TableUtils"),n=o.getCellLocation(e),i=o.getCellLocation(t),l=Math.min(n.row,i.row),r=Math.max(n.row,i.row),s=Math.min(n.column,i.column),a=Math.max(n.column,i.column),c=new Array(r-l+1).fill(null).map((()=>[])),d={startRow:l,endRow:r,startColumn:s,endColumn:a};for(const{row:t,cell:o}of new u(e.findAncestor("table"),d))c[t-l].push(o);const h=i.row<n.row,b=i.column<n.column;return h&&c.reverse(),b&&c.forEach((e=>e.reverse())),{cells:c.flat(),backward:h||b}}}class ve extends e.Plugin{static get pluginName(){return"TableClipboard"}static get requires(){return[_e,F]}init(){const e=this.editor,t=e.editing.view.document;this.listenTo(t,"copy",((e,t)=>this._onCopyCut(e,t))),this.listenTo(t,"cut",((e,t)=>this._onCopyCut(e,t))),this.listenTo(e.model,"insertContent",((e,t)=>this._onInsertContent(e,...t)),{priority:"high"}),this.decorate("_replaceTableSlotCell")}_onCopyCut(e,t){const o=this.editor.plugins.get(_e);if(!o.getSelectedTableCells())return;if("cut"==e.name&&this.editor.isReadOnly)return;t.preventDefault(),e.stop();const n=this.editor.data,i=this.editor.editing.view.document,l=n.toView(o.getSelectionAsFragment());i.fire("clipboardOutput",{dataTransfer:t.dataTransfer,content:l,method:e.name})}_onInsertContent(e,t,o){if(o&&!o.is("documentSelection"))return;const n=this.editor.model,i=this.editor.plugins.get(F);let l=Ce(t,n);if(!l)return;const r=i.getSelectionAffectedTableCells(n.document.selection);r.length?(e.stop(),n.change((e=>{const t={width:i.getColumns(l),height:i.getRows(l)},o=function(e,t,o,n){const i=e[0].findAncestor("table"),l=n.getColumnIndexes(e),r=n.getRowIndexes(e),s={firstColumn:l.first,lastColumn:l.last,firstRow:r.first,lastRow:r.last},a=1===e.length;a&&(s.lastRow+=t.height-1,s.lastColumn+=t.width-1,function(e,t,o,n){const i=n.getColumns(e),l=n.getRows(e);o>i&&n.insertColumns(e,{at:i,columns:o-i});t>l&&n.insertRows(e,{at:l,rows:t-l})}(i,s.lastRow+1,s.lastColumn+1,n));a||!n.isSelectionRectangular(e)?function(e,t,o){const{firstRow:n,lastRow:i,firstColumn:l,lastColumn:r}=t,s={first:n,last:i},a={first:l,last:r};Te(e,l,s,o),Te(e,r+1,s,o),ye(e,n,a,o),ye(e,i+1,a,o,n)}(i,s,o):(s.lastRow=I(i,s),s.lastColumn=P(i,s));return s}(r,t,e,i),n=o.lastRow-o.firstRow+1,s=o.lastColumn-o.firstColumn+1,a={startRow:0,startColumn:0,endRow:Math.min(n,t.height)-1,endColumn:Math.min(s,t.width)-1};l=v(l,a,e);const c=r[0].findAncestor("table"),d=this._replaceSelectedCellsWithPasted(l,t,c,o,e);if(this.editor.plugins.get("TableSelection").isEnabled){const t=i.sortRanges(d.map((t=>e.createRangeOn(t))));e.setSelection(t)}else e.setSelection(d[0],0)}))):R(l,i)}_replaceSelectedCellsWithPasted(e,t,o,n,i){const{width:l,height:r}=t,s=function(e,t,o){const n=new Array(o).fill(null).map((()=>new Array(t).fill(null)));for(const{column:t,row:o,cell:i}of new u(e))n[o][t]=i;return n}(e,l,r),a=[...new u(o,{startRow:n.firstRow,endRow:n.lastRow,startColumn:n.firstColumn,endColumn:n.lastColumn,includeAllSlots:!0})],c=[];let d;for(const e of a){const{row:t,column:o}=e;o===n.firstColumn&&(d=e.getPositionBefore());const a=t-n.firstRow,u=o-n.firstColumn,h=s[a%r][u%l],b=h?i.cloneElement(h):null,m=this._replaceTableSlotCell(e,b,d,i);m&&(x(m,t,o,n.lastRow,n.lastColumn,i),c.push(m),d=i.createPositionAfter(m))}const h=parseInt(o.getAttribute("headingRows")||0),b=parseInt(o.getAttribute("headingColumns")||0),m=n.firstRow<h&&h<=n.lastRow,g=n.firstColumn<b&&b<=n.lastColumn;if(m){const e=ye(o,h,{first:n.firstColumn,last:n.lastColumn},i,n.firstRow);c.push(...e)}if(g){const e=Te(o,b,{first:n.firstRow,last:n.lastRow},i);c.push(...e)}return c}_replaceTableSlotCell(e,t,o,n){const{cell:i,isAnchor:l}=e;return l&&n.remove(i),t?(n.insert(t,o),t):null}getTableIfOnlyTableInContent(e,t){return Ce(e,t)}}function Ce(e,t){if(!e.is("documentFragment")&&!e.is("element"))return null;if(e.is("element","table"))return e;if(1==e.childCount&&e.getChild(0).is("element","table"))return e.getChild(0);const o=t.createRangeIn(e);for(const e of o.getItems())if(e.is("element","table")){const n=t.createRange(o.start,t.createPositionBefore(e));if(t.hasContent(n,{ignoreWhitespaces:!0}))return null;const i=t.createRange(t.createPositionAfter(e),o.end);return t.hasContent(i,{ignoreWhitespaces:!0})?null:e}return null}function ye(e,t,o,n,i=0){if(t<1)return;return C(e,t,i).filter((({column:e,cellWidth:t})=>Ae(e,t,o))).map((({cell:e})=>y(e,t,n)))}function Te(e,t,o,n){if(t<1)return;return T(e,t).filter((({row:e,cellHeight:t})=>Ae(e,t,o))).map((({cell:e,column:o})=>A(e,o,t,n)))}function Ae(e,t,o){const n=e+t-1,{first:i,last:l}=o;return e>=i&&e<=l||e<i&&n>=i}class xe extends e.Plugin{static get pluginName(){return"TableKeyboard"}static get requires(){return[_e,F]}init(){const e=this.editor.editing.view.document;this.listenTo(e,"arrowKey",((...e)=>this._onArrowKey(...e)),{context:"table"}),this.listenTo(e,"tab",((...e)=>this._handleTabOnSelectedTable(...e)),{context:"figure"}),this.listenTo(e,"tab",((...e)=>this._handleTab(...e)),{context:["th","td"]})}_handleTabOnSelectedTable(e,t){const o=this.editor,n=o.model.document.selection.getSelectedElement();n&&n.is("element","table")&&(t.preventDefault(),t.stopPropagation(),e.stop(),o.model.change((e=>{e.setSelection(e.createRangeIn(n.getChild(0).getChild(0)))})))}_handleTab(e,t){const o=this.editor,n=this.editor.plugins.get(F),i=o.model.document.selection,l=!t.shiftKey;let r=n.getTableCellsContainingSelection(i)[0];if(r||(r=this.editor.plugins.get("TableSelection").getFocusCell()),!r)return;t.preventDefault(),t.stopPropagation(),e.stop();const s=r.parent,a=s.parent,c=a.getChildIndex(s),d=s.getChildIndex(r),u=0===d;if(!l&&u&&0===c)return void o.model.change((e=>{e.setSelection(e.createRangeOn(a))}));const h=d===s.childCount-1,b=c===n.getRows(a)-1;if(l&&b&&h&&(o.execute("insertTableRowBelow"),c===n.getRows(a)-1))return void o.model.change((e=>{e.setSelection(e.createRangeOn(a))}));let m;if(l&&h){const e=a.getChild(c+1);m=e.getChild(0)}else if(!l&&u){const e=a.getChild(c-1);m=e.getChild(e.childCount-1)}else m=s.getChild(d+(l?1:-1));o.model.change((e=>{e.setSelection(e.createRangeIn(m))}))}_onArrowKey(e,t){const o=this.editor,n=t.keyCode,i=(0,s.getLocalizedArrowKeyCodeDirection)(n,o.locale.contentLanguageDirection);this._handleArrowKeys(i,t.shiftKey)&&(t.preventDefault(),t.stopPropagation(),e.stop())}_handleArrowKeys(e,t){const o=this.editor.plugins.get(F),n=this.editor.model,i=n.document.selection,l=["right","down"].includes(e),r=o.getSelectedTableCells(i);if(r.length){let o;return o=t?this.editor.plugins.get("TableSelection").getFocusCell():l?r[r.length-1]:r[0],this._navigateFromCellInDirection(o,e,t),!0}const s=i.focus.findAncestor("tableCell");if(!s)return!1;if(!i.isCollapsed)if(t){if(i.isBackward==l&&!i.containsEntireContent(s))return!1}else{const e=i.getSelectedElement();if(!e||!n.schema.isObject(e))return!1}return!!this._isSelectionAtCellEdge(i,s,l)&&(this._navigateFromCellInDirection(s,e,t),!0)}_isSelectionAtCellEdge(e,t,o){const n=this.editor.model,i=this.editor.model.schema,l=o?e.getLastPosition():e.getFirstPosition();if(!i.getLimitElement(l).is("element","tableCell")){return n.createPositionAt(t,o?"end":0).isTouching(l)}const r=n.createSelection(l);return n.modifySelection(r,{direction:o?"forward":"backward"}),l.isEqual(r.focus)}_navigateFromCellInDirection(e,t,o=!1){const n=this.editor.model,i=e.findAncestor("table"),l=[...new u(i,{includeAllSlots:!0})],{row:r,column:s}=l[l.length-1],a=l.find((({cell:t})=>t==e));let{row:c,column:d}=a;switch(t){case"left":d--;break;case"up":c--;break;case"right":d+=a.cellWidth;break;case"down":c+=a.cellHeight}if(c<0||c>r||d<0&&c<=0||d>s&&c>=r)return void n.change((e=>{e.setSelection(e.createRangeOn(i))}));d<0?(d=o?0:s,c--):d>s&&(d=o?s:0,c++);const h=l.find((e=>e.row==c&&e.column==d)).cell,b=["right","down"].includes(t),m=this.editor.plugins.get("TableSelection");if(o&&m.isEnabled){const t=m.getAnchorCell()||e;m.setCellSelection(t,h)}else{const e=n.createPositionAt(h,b?0:"end");n.change((t=>{t.setSelection(e)}))}}}var Ve=o(492);class Se extends Ve.DomEventObserver{constructor(e){super(e),this.domEventType=["mousemove","mouseleave"]}onDomEvent(e){this.fire(e.type,e)}}class Re extends e.Plugin{static get pluginName(){return"TableMouse"}static get requires(){return[_e,F]}init(){this.editor.editing.view.addObserver(Se),this._enableShiftClickSelection(),this._enableMouseDragSelection()}_enableShiftClickSelection(){const e=this.editor,t=e.plugins.get(F);let o=!1;const n=e.plugins.get(_e);this.listenTo(e.editing.view.document,"mousedown",((i,l)=>{const r=e.model.document.selection;if(!this.isEnabled||!n.isEnabled)return;if(!l.domEvent.shiftKey)return;const s=n.getAnchorCell()||t.getTableCellsContainingSelection(r)[0];if(!s)return;const a=this._getModelTableCellFromDomEvent(l);a&&Ie(s,a)&&(o=!0,n.setCellSelection(s,a),l.preventDefault())})),this.listenTo(e.editing.view.document,"mouseup",(()=>{o=!1})),this.listenTo(e.editing.view.document,"selectionChange",(e=>{o&&e.stop()}),{priority:"highest"})}_enableMouseDragSelection(){const e=this.editor;let t,o,n=!1,i=!1;const l=e.plugins.get(_e);this.listenTo(e.editing.view.document,"mousedown",((e,o)=>{this.isEnabled&&l.isEnabled&&(o.domEvent.shiftKey||o.domEvent.ctrlKey||o.domEvent.altKey||(t=this._getModelTableCellFromDomEvent(o)))})),this.listenTo(e.editing.view.document,"mousemove",((e,r)=>{if(!r.domEvent.buttons)return;if(!t)return;const s=this._getModelTableCellFromDomEvent(r);s&&Ie(t,s)&&(o=s,n||o==t||(n=!0)),n&&(i=!0,l.setCellSelection(t,o),r.preventDefault())})),this.listenTo(e.editing.view.document,"mouseup",(()=>{n=!1,i=!1,t=null,o=null})),this.listenTo(e.editing.view.document,"selectionChange",(e=>{i&&e.stop()}),{priority:"highest"})}_getModelTableCellFromDomEvent(e){const t=e.target,o=this.editor.editing.view.createPositionAt(t,0);return this.editor.editing.mapper.toModelPosition(o).parent.findAncestor("tableCell",{includeSelf:!0})}}function Ie(e,t){return e.parent.parent==t.parent.parent}var Pe=o(660),Ee={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(Pe.Z,Ee);Pe.Z.locals;class ze extends e.Plugin{static get requires(){return[ce,pe,_e,Re,xe,ve,t.Widget]}static get pluginName(){return"Table"}}class Be extends e.Plugin{static get pluginName(){return"PlainTableOutput"}static get requires(){return[ze]}init(){const e=this.editor;e.conversion.for("dataDowncast").elementToStructure({model:"table",view:Le,converterPriority:"high"}),e.plugins.has("TableCaption")&&e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>{if("table"===e.parent.name)return t.createContainerElement("caption")},converterPriority:"high"}),e.plugins.has("TableProperties")&&function(e){const t={"border-width":"tableBorderWidth","border-color":"tableBorderColor","border-style":"tableBorderStyle","background-color":"tableBackgroundColor"};for(const[o,n]of Object.entries(t))e.conversion.for("dataDowncast").add((e=>e.on(`attribute:${n}:table`,((e,t,n)=>{const{item:i,attributeNewValue:l}=t,{mapper:r,writer:s}=n;if(!n.consumable.consume(i,e.name))return;const a=r.toViewElement(i);l?s.setStyle(o,l,a):s.removeStyle(o,a)}),{priority:"high"})))}(e)}}function Le(e,{writer:t}){const o=e.getAttribute("headingRows")||0,n=t.createSlot((e=>e.is("element","tableRow")&&e.index<o)),i=t.createSlot((e=>e.is("element","tableRow")&&e.index>=o)),l=t.createSlot((e=>!e.is("element","tableRow"))),r=t.createContainerElement("thead",null,n),s=t.createContainerElement("tbody",null,i),a=[];return o&&a.push(r),o<e.childCount&&a.push(s),t.createContainerElement("table",null,[l,...a])}function We(e){const t=e.getSelectedElement();return t&&Fe(t)?t:null}function Ne(e){const t=e.getFirstPosition();if(!t)return null;let o=t.parent;for(;o;){if(o.is("element")&&Fe(o))return o;o=o.parent}return null}function Fe(e){return!!e.getCustomProperty("table")&&(0,t.isWidget)(e)}class De extends e.Plugin{static get requires(){return[t.WidgetToolbarRepository]}static get pluginName(){return"TableToolbar"}afterInit(){const e=this.editor,o=e.t,n=e.plugins.get(t.WidgetToolbarRepository),i=e.config.get("table.contentToolbar"),l=e.config.get("table.tableToolbar");i&&n.register("tableContent",{ariaLabel:o("Table toolbar"),items:i,getRelatedElement:Ne}),l&&n.register("table",{ariaLabel:o("Table toolbar"),items:l,getRelatedElement:We})}}var He=o(252),Me={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(He.Z,Me);He.Z.locals;class Oe extends ue.View{constructor(e,t){super(e);const o=this.bindTemplate;this.set("value",""),this.set("id"),this.set("isReadOnly",!1),this.set("hasError",!1),this.set("isFocused",!1),this.set("isEmpty",!0),this.set("ariaDescribedById"),this.options=t,this._dropdownView=this._createDropdownView(),this._inputView=this._createInputTextView(),this._stillTyping=!1,this.setTemplate({tag:"div",attributes:{class:["ck","ck-input-color",o.if("hasError","ck-error")],id:o.to("id"),"aria-invalid":o.if("hasError",!0),"aria-describedby":o.to("ariaDescribedById")},children:[this._dropdownView,this._inputView]}),this.on("change:value",((e,t,o)=>this._setInputValue(o)))}focus(){this._inputView.focus()}_createDropdownView(){const e=this.locale,t=e.t,o=this.bindTemplate,n=this._createColorGrid(e),i=(0,ue.createDropdown)(e),l=new ue.View,r=this._createRemoveColorButton();return l.setTemplate({tag:"span",attributes:{class:["ck","ck-input-color__button__preview"],style:{backgroundColor:o.to("value")}},children:[{tag:"span",attributes:{class:["ck","ck-input-color__button__preview__no-color-indicator",o.if("value","ck-hidden",(e=>""!=e))]}}]}),i.buttonView.extendTemplate({attributes:{class:"ck-input-color__button"}}),i.buttonView.children.add(l),i.buttonView.label=t("Color picker"),i.buttonView.tooltip=!0,i.panelPosition="rtl"===e.uiLanguageDirection?"se":"sw",i.panelView.children.add(r),i.panelView.children.add(n),i.bind("isEnabled").to(this,"isReadOnly",(e=>!e)),i}_createInputTextView(){const e=this.locale,t=new ue.InputTextView(e);return t.extendTemplate({on:{blur:t.bindTemplate.to("blur")}}),t.value=this.value,t.bind("isReadOnly","hasError").to(this),this.bind("isFocused","isEmpty").to(t),t.on("input",(()=>{const e=t.element.value,o=this.options.colorDefinitions.find((t=>e===t.label));this._stillTyping=!0,this.value=o&&o.color||e})),t.on("blur",(()=>{this._stillTyping=!1,this._setInputValue(t.element.value)})),t.delegate("input").to(this),t}_createRemoveColorButton(){const t=this.locale,o=t.t,n=new ue.ButtonView(t),i=this.options.defaultColorValue||"",l=o(i?"Restore default":"Remove color");return n.class="ck-input-color__remove-color",n.withText=!0,n.icon=e.icons.eraser,n.label=l,n.on("execute",(()=>{this.value=i,this._dropdownView.isOpen=!1,this.fire("input")})),n}_createColorGrid(e){const t=new ue.ColorGridView(e,{colorDefinitions:this.options.colorDefinitions,columns:this.options.columns});return t.on("execute",((e,t)=>{this.value=t.value,this._dropdownView.isOpen=!1,this.fire("input")})),t.bind("selectedColor").to(this,"value"),t}_setInputValue(e){if(!this._stillTyping){const t=je(e),o=this.options.colorDefinitions.find((e=>t===je(e.color)));this._inputView.value=o?o.label:e||""}}}function je(e){return e.replace(/([(,])\s+/g,"$1").replace(/^\s+|\s+(?=[),\s]|$)/g,"").replace(/,|\s/g," ")}const Ue=e=>""===e;function Ze(e){return{none:e("None"),solid:e("Solid"),dotted:e("Dotted"),dashed:e("Dashed"),double:e("Double"),groove:e("Groove"),ridge:e("Ridge"),inset:e("Inset"),outset:e("Outset")}}function $e(e){return e('The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".')}function Ke(e){return e('The value is invalid. Try "10px" or "2em" or simply "2".')}function qe(e){return e=e.trim(),Ue(e)||(0,Ve.isColor)(e)}function Ge(e){return e=e.trim(),Ue(e)||tt(e)||(0,Ve.isLength)(e)||(0,Ve.isPercentage)(e)}function Je(e){return e=e.trim(),Ue(e)||tt(e)||(0,Ve.isLength)(e)}function Xe(e,t){const o=new s.Collection,n=Ze(e.t);for(const i in n){const l={type:"button",model:new ue.Model({_borderStyleValue:i,label:n[i],withText:!0})};"none"===i?l.model.bind("isOn").to(e,"borderStyle",(e=>"none"===t?!e:e===i)):l.model.bind("isOn").to(e,"borderStyle",(e=>e===i)),o.add(l)}return o}function Ye(e){const{view:t,icons:o,toolbar:n,labels:i,propertyName:l,nameToValue:r,defaultValue:s}=e;for(const e in i){const a=new ue.ButtonView(t.locale);a.set({label:i[e],icon:o[e],tooltip:i[e]});const c=r?r(e):e;a.bind("isOn").to(t,l,(e=>{let t=e;return""===e&&s&&(t=s),c===t})),a.on("execute",(()=>{t[l]=c})),n.items.add(a)}}const Qe=[{color:"hsl(0, 0%, 0%)",label:"Black"},{color:"hsl(0, 0%, 30%)",label:"Dim grey"},{color:"hsl(0, 0%, 60%)",label:"Grey"},{color:"hsl(0, 0%, 90%)",label:"Light grey"},{color:"hsl(0, 0%, 100%)",label:"White",hasBorder:!0},{color:"hsl(0, 75%, 60%)",label:"Red"},{color:"hsl(30, 75%, 60%)",label:"Orange"},{color:"hsl(60, 75%, 60%)",label:"Yellow"},{color:"hsl(90, 75%, 60%)",label:"Light green"},{color:"hsl(120, 75%, 60%)",label:"Green"},{color:"hsl(150, 75%, 60%)",label:"Aquamarine"},{color:"hsl(180, 75%, 60%)",label:"Turquoise"},{color:"hsl(210, 75%, 60%)",label:"Light blue"},{color:"hsl(240, 75%, 60%)",label:"Blue"},{color:"hsl(270, 75%, 60%)",label:"Purple"}];function et(e){return(t,o,n)=>{const i=new Oe(t.locale,{colorDefinitions:(l=e.colorConfig,l.map((e=>({color:e.model,label:e.label,options:{hasBorder:e.hasBorder}})))),columns:e.columns,defaultColorValue:e.defaultColorValue});var l;return i.set({id:o,ariaDescribedById:n}),i.bind("isReadOnly").to(t,"isEnabled",(e=>!e)),i.bind("hasError").to(t,"errorText",(e=>!!e)),i.on("input",(()=>{t.errorText=null})),t.bind("isEmpty","isFocused").to(i),i}}function tt(e){const t=parseFloat(e);return!Number.isNaN(t)&&e===String(t)}var ot=o(333),nt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(ot.Z,nt);ot.Z.locals;class it extends ue.View{constructor(e,t={}){super(e);const o=this.bindTemplate;this.set("class",t.class||null),this.children=this.createCollection(),t.children&&t.children.forEach((e=>this.children.add(e))),this.set("_role",null),this.set("_ariaLabelledBy",null),t.labelView&&this.set({_role:"group",_ariaLabelledBy:t.labelView.id}),this.setTemplate({tag:"div",attributes:{class:["ck","ck-form__row",o.to("class")],role:o.to("_role"),"aria-labelledby":o.to("_ariaLabelledBy")},children:this.children})}}var lt=o(934),rt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(lt.Z,rt);lt.Z.locals;var st=o(686),at={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(st.Z,at);st.Z.locals;var ct=o(773),dt={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(ct.Z,dt);ct.Z.locals;const ut={left:e.icons.alignLeft,center:e.icons.alignCenter,right:e.icons.alignRight,justify:e.icons.alignJustify,top:e.icons.alignTop,middle:e.icons.alignMiddle,bottom:e.icons.alignBottom};class ht extends ue.View{constructor(e,t){super(e),this.set({borderStyle:"",borderWidth:"",borderColor:"",padding:"",backgroundColor:"",width:"",height:"",horizontalAlignment:"",verticalAlignment:""}),this.options=t;const{borderStyleDropdown:o,borderWidthInput:n,borderColorInput:i,borderRowLabel:l}=this._createBorderFields(),{backgroundRowLabel:r,backgroundInput:a}=this._createBackgroundFields(),{widthInput:c,operatorLabel:d,heightInput:u,dimensionsLabel:h}=this._createDimensionFields(),{horizontalAlignmentToolbar:b,verticalAlignmentToolbar:m,alignmentLabel:g}=this._createAlignmentFields();this.focusTracker=new s.FocusTracker,this.keystrokes=new s.KeystrokeHandler,this.children=this.createCollection(),this.borderStyleDropdown=o,this.borderWidthInput=n,this.borderColorInput=i,this.backgroundInput=a,this.paddingInput=this._createPaddingField(),this.widthInput=c,this.heightInput=u,this.horizontalAlignmentToolbar=b,this.verticalAlignmentToolbar=m;const{saveButtonView:p,cancelButtonView:f}=this._createActionButtons();this.saveButtonView=p,this.cancelButtonView=f,this._focusables=new ue.ViewCollection,this._focusCycler=new ue.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.add(new ue.FormHeaderView(e,{label:this.t("Cell properties")})),this.children.add(new it(e,{labelView:l,children:[l,o,i,n],class:"ck-table-form__border-row"})),this.children.add(new it(e,{labelView:r,children:[r,a],class:"ck-table-form__background-row"})),this.children.add(new it(e,{children:[new it(e,{labelView:h,children:[h,c,d,u],class:"ck-table-form__dimensions-row"}),new it(e,{children:[this.paddingInput],class:"ck-table-cell-properties-form__padding-row"})]})),this.children.add(new it(e,{labelView:g,children:[g,b,m],class:"ck-table-cell-properties-form__alignment-row"})),this.children.add(new it(e,{children:[this.saveButtonView,this.cancelButtonView],class:"ck-table-form__action-row"})),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-table-form","ck-table-cell-properties-form"],tabindex:"-1"},children:this.children})}render(){super.render(),(0,ue.submitHandler)({view:this}),[this.borderStyleDropdown,this.borderColorInput,this.borderWidthInput,this.backgroundInput,this.widthInput,this.heightInput,this.paddingInput,this.horizontalAlignmentToolbar,this.verticalAlignmentToolbar,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBorderFields(){const e=this.options.defaultTableCellProperties,t={style:e.borderStyle,width:e.borderWidth,color:e.borderColor},o=et({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color}),n=this.locale,i=this.t,l=new ue.LabelView(n);l.text=i("Border");const r=Ze(i),s=new ue.LabeledFieldView(n,ue.createLabeledDropdown);s.set({label:i("Style"),class:"ck-table-form__border-style"}),s.fieldView.buttonView.set({isOn:!1,withText:!0,tooltip:i("Style")}),s.fieldView.buttonView.bind("label").to(this,"borderStyle",(e=>r[e||"none"])),s.fieldView.on("execute",(e=>{this.borderStyle=e.source._borderStyleValue})),s.bind("isEmpty").to(this,"borderStyle",(e=>!e)),(0,ue.addListToDropdown)(s.fieldView,Xe(this,t.style));const a=new ue.LabeledFieldView(n,ue.createLabeledInputText);a.set({label:i("Width"),class:"ck-table-form__border-width"}),a.fieldView.bind("value").to(this,"borderWidth"),a.bind("isEnabled").to(this,"borderStyle",bt),a.fieldView.on("input",(()=>{this.borderWidth=a.fieldView.element.value}));const c=new ue.LabeledFieldView(n,o);return c.set({label:i("Color"),class:"ck-table-form__border-color"}),c.fieldView.bind("value").to(this,"borderColor"),c.bind("isEnabled").to(this,"borderStyle",bt),c.fieldView.on("input",(()=>{this.borderColor=c.fieldView.value})),this.on("change:borderStyle",((e,o,n,i)=>{bt(n)||(this.borderColor="",this.borderWidth=""),bt(i)||(this.borderColor=t.color,this.borderWidth=t.width)})),{borderRowLabel:l,borderStyleDropdown:s,borderColorInput:c,borderWidthInput:a}}_createBackgroundFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Background");const n=et({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableCellProperties.backgroundColor}),i=new ue.LabeledFieldView(e,n);return i.set({label:t("Color"),class:"ck-table-cell-properties-form__background"}),i.fieldView.bind("value").to(this,"backgroundColor"),i.fieldView.on("input",(()=>{this.backgroundColor=i.fieldView.value})),{backgroundRowLabel:o,backgroundInput:i}}_createDimensionFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Dimensions");const n=new ue.LabeledFieldView(e,ue.createLabeledInputText);n.set({label:t("Width"),class:"ck-table-form__dimensions-row__width"}),n.fieldView.bind("value").to(this,"width"),n.fieldView.on("input",(()=>{this.width=n.fieldView.element.value}));const i=new ue.View(e);i.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const l=new ue.LabeledFieldView(e,ue.createLabeledInputText);return l.set({label:t("Height"),class:"ck-table-form__dimensions-row__height"}),l.fieldView.bind("value").to(this,"height"),l.fieldView.on("input",(()=>{this.height=l.fieldView.element.value})),{dimensionsLabel:o,widthInput:n,operatorLabel:i,heightInput:l}}_createPaddingField(){const e=this.locale,t=this.t,o=new ue.LabeledFieldView(e,ue.createLabeledInputText);return o.set({label:t("Padding"),class:"ck-table-cell-properties-form__padding"}),o.fieldView.bind("value").to(this,"padding"),o.fieldView.on("input",(()=>{this.padding=o.fieldView.element.value})),o}_createAlignmentFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Table cell text alignment");const n=new ue.ToolbarView(e),i="rtl"===this.locale.contentLanguageDirection;n.set({isCompact:!0,ariaLabel:t("Horizontal text alignment toolbar")}),Ye({view:this,icons:ut,toolbar:n,labels:this._horizontalAlignmentLabels,propertyName:"horizontalAlignment",nameToValue:e=>{if(i){if("left"===e)return"right";if("right"===e)return"left"}return e},defaultValue:this.options.defaultTableCellProperties.horizontalAlignment});const l=new ue.ToolbarView(e);return l.set({isCompact:!0,ariaLabel:t("Vertical text alignment toolbar")}),Ye({view:this,icons:ut,toolbar:l,labels:this._verticalAlignmentLabels,propertyName:"verticalAlignment",defaultValue:this.options.defaultTableCellProperties.verticalAlignment}),{horizontalAlignmentToolbar:n,verticalAlignmentToolbar:l,alignmentLabel:o}}_createActionButtons(){const t=this.locale,o=this.t,n=new ue.ButtonView(t),i=new ue.ButtonView(t),l=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.paddingInput];return n.set({label:o("Save"),icon:e.icons.check,class:"ck-button-save",type:"submit",withText:!0}),n.bind("isEnabled").toMany(l,"errorText",((...e)=>e.every((e=>!e)))),i.set({label:o("Cancel"),icon:e.icons.cancel,class:"ck-button-cancel",withText:!0}),i.delegate("execute").to(this,"cancel"),{saveButtonView:n,cancelButtonView:i}}get _horizontalAlignmentLabels(){const e=this.locale,t=this.t,o=t("Align cell text to the left"),n=t("Align cell text to the center"),i=t("Align cell text to the right"),l=t("Justify cell text");return"rtl"===e.uiLanguageDirection?{right:i,center:n,left:o,justify:l}:{left:o,center:n,right:i,justify:l}}get _verticalAlignmentLabels(){const e=this.t;return{top:e("Align cell text to the top"),middle:e("Align cell text to the middle"),bottom:e("Align cell text to the bottom")}}}function bt(e){return"none"!==e}const mt=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)};const gt="object"==typeof global&&global&&global.Object===Object&&global;var pt="object"==typeof self&&self&&self.Object===Object&&self;const ft=gt||pt||Function("return this")();const wt=function(){return ft.Date.now()};var kt=/\s/;const _t=function(e){for(var t=e.length;t--&&kt.test(e.charAt(t)););return t};var vt=/^\s+/;const Ct=function(e){return e?e.slice(0,_t(e)+1).replace(vt,""):e};const yt=ft.Symbol;var Tt=Object.prototype,At=Tt.hasOwnProperty,xt=Tt.toString,Vt=yt?yt.toStringTag:void 0;const St=function(e){var t=At.call(e,Vt),o=e[Vt];try{e[Vt]=void 0;var n=!0}catch(e){}var i=xt.call(e);return n&&(t?e[Vt]=o:delete e[Vt]),i};var Rt=Object.prototype.toString;const It=function(e){return Rt.call(e)};var Pt=yt?yt.toStringTag:void 0;const Et=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":Pt&&Pt in Object(e)?St(e):It(e)};const zt=function(e){return null!=e&&"object"==typeof e};const Bt=function(e){return"symbol"==typeof e||zt(e)&&"[object Symbol]"==Et(e)};var Lt=/^[-+]0x[0-9a-f]+$/i,Wt=/^0b[01]+$/i,Nt=/^0o[0-7]+$/i,Ft=parseInt;const Dt=function(e){if("number"==typeof e)return e;if(Bt(e))return NaN;if(mt(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=mt(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=Ct(e);var o=Wt.test(e);return o||Nt.test(e)?Ft(e.slice(2),o?2:8):Lt.test(e)?NaN:+e};var Ht=Math.max,Mt=Math.min;const Ot=function(e,t,o){var n,i,l,r,s,a,c=0,d=!1,u=!1,h=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function b(t){var o=n,l=i;return n=i=void 0,c=t,r=e.apply(l,o)}function m(e){return c=e,s=setTimeout(p,t),d?b(e):r}function g(e){var o=e-a;return void 0===a||o>=t||o<0||u&&e-c>=l}function p(){var e=wt();if(g(e))return f(e);s=setTimeout(p,function(e){var o=t-(e-a);return u?Mt(o,l-(e-c)):o}(e))}function f(e){return s=void 0,h&&n?b(e):(n=i=void 0,r)}function w(){var e=wt(),o=g(e);if(n=arguments,i=this,a=e,o){if(void 0===s)return m(a);if(u)return clearTimeout(s),s=setTimeout(p,t),b(a)}return void 0===s&&(s=setTimeout(p,t)),r}return t=Dt(t)||0,mt(o)&&(d=!!o.leading,l=(u="maxWait"in o)?Ht(Dt(o.maxWait)||0,t):l,h="trailing"in o?!!o.trailing:h),w.cancel=function(){void 0!==s&&clearTimeout(s),c=0,n=a=i=s=void 0},w.flush=function(){return void 0===s?r:f(wt())},w},jt=ue.BalloonPanelView.defaultPositions,Ut=[jt.northArrowSouth,jt.northArrowSouthWest,jt.northArrowSouthEast,jt.southArrowNorth,jt.southArrowNorthWest,jt.southArrowNorthEast,jt.viewportStickyNorth];function Zt(e,t){const o=e.plugins.get("ContextualBalloon");if(Ne(e.editing.view.document.selection)){let n;n="cell"===t?Kt(e):$t(e),o.updatePosition(n)}}function $t(e){const t=e.model.document.selection.getFirstPosition().findAncestor("table"),o=e.editing.mapper.toViewElement(t);return{target:e.editing.view.domConverter.mapViewToDom(o),positions:Ut}}function Kt(e){const t=e.editing.mapper,o=e.editing.view.domConverter,n=e.model.document.selection;if(n.rangeCount>1)return{target:()=>function(e,t){const o=t.editing.mapper,n=t.editing.view.domConverter,i=Array.from(e).map((e=>{const t=qt(e.start),i=o.toViewElement(t);return new s.Rect(n.mapViewToDom(i))}));return s.Rect.getBoundingRect(i)}(n.getRanges(),e),positions:Ut};const i=qt(n.getFirstPosition()),l=t.toViewElement(i);return{target:o.mapViewToDom(l),positions:Ut}}function qt(e){return e.nodeAfter&&e.nodeAfter.is("element","tableCell")?e.nodeAfter:e.findAncestor("tableCell")}function Gt(e){if(!e||!mt(e))return e;const{top:t,right:o,bottom:n,left:i}=e;return t==o&&o==n&&n==i?t:void 0}function Jt(e,t){const o=parseFloat(e);return Number.isNaN(o)||String(o)!==String(e)?e:`${o}${t}`}function Xt(e,t={}){const o=Object.assign({borderStyle:"none",borderWidth:"",borderColor:"",backgroundColor:"",width:"",height:""},e);return t.includeAlignmentProperty&&!o.alignment&&(o.alignment="center"),t.includePaddingProperty&&!o.padding&&(o.padding=""),t.includeVerticalAlignmentProperty&&!o.verticalAlignment&&(o.verticalAlignment="middle"),t.includeHorizontalAlignmentProperty&&!o.horizontalAlignment&&(o.horizontalAlignment=t.isRightToLeftContent?"right":"left"),o}const Yt={borderStyle:"tableCellBorderStyle",borderColor:"tableCellBorderColor",borderWidth:"tableCellBorderWidth",width:"tableCellWidth",height:"tableCellHeight",padding:"tableCellPadding",backgroundColor:"tableCellBackgroundColor",horizontalAlignment:"tableCellHorizontalAlignment",verticalAlignment:"tableCellVerticalAlignment"};class Qt extends e.Plugin{static get requires(){return[ue.ContextualBalloon]}static get pluginName(){return"TableCellPropertiesUI"}constructor(e){super(e),e.config.define("table.tableCellProperties",{borderColors:Qe,backgroundColors:Qe})}init(){const e=this.editor,t=e.t;this._defaultTableCellProperties=Xt(e.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:"rtl"===e.locale.contentLanguageDirection}),this._balloon=e.plugins.get(ue.ContextualBalloon),this.view=this._createPropertiesView(),this._undoStepBatch=null,e.ui.componentFactory.add("tableCellProperties",(o=>{const n=new ue.ButtonView(o);n.set({label:t("Cell properties"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.105 18-.17 1H2.5A1.5 1.5 0 0 1 1 17.5v-15A1.5 1.5 0 0 1 2.5 1h15A1.5 1.5 0 0 1 19 2.5v9.975l-.85-.124-.15-.302V8h-5v4h.021l-.172.351-1.916.28-.151.027c-.287.063-.54.182-.755.341L8 13v5h3.105zM2 12h5V8H2v4zm10-4H8v4h4V8zM2 2v5h5V2H2zm0 16h5v-5H2v5zM13 7h5V2h-5v5zM8 2v5h4V2H8z" opacity=".6"/><path d="m15.5 11.5 1.323 2.68 2.957.43-2.14 2.085.505 2.946L15.5 18.25l-2.645 1.39.505-2.945-2.14-2.086 2.957-.43L15.5 11.5zM13 6a1 1 0 0 1 1 1v3.172a2.047 2.047 0 0 0-.293.443l-.858 1.736-1.916.28-.151.027A1.976 1.976 0 0 0 9.315 14H7a1 1 0 0 1-1-1V7a1 1 0 0 1 1-1h6zm-1 2H8v4h4V8z"/></svg>',tooltip:!0}),this.listenTo(n,"execute",(()=>this._showView()));const i=Object.values(Yt).map((t=>e.commands.get(t)));return n.bind("isEnabled").toMany(i,"isEnabled",((...e)=>e.some((e=>e)))),n}))}destroy(){super.destroy(),this.view.destroy()}_createPropertiesView(){const e=this.editor,t=e.editing.view.document,o=e.config.get("table.tableCellProperties"),n=(0,ue.normalizeColorOptions)(o.borderColors),i=(0,ue.getLocalizedColorOptions)(e.locale,n),l=(0,ue.normalizeColorOptions)(o.backgroundColors),r=(0,ue.getLocalizedColorOptions)(e.locale,l),s=new ht(e.locale,{borderColors:i,backgroundColors:r,defaultTableCellProperties:this._defaultTableCellProperties}),a=e.t;s.render(),this.listenTo(s,"submit",(()=>{this._hideView()})),this.listenTo(s,"cancel",(()=>{this._undoStepBatch.operations.length&&e.execute("undo",this._undoStepBatch),this._hideView()})),s.keystrokes.set("Esc",((e,t)=>{this._hideView(),t()})),this.listenTo(e.ui,"update",(()=>{Ne(t.selection)?this._isViewVisible&&Zt(e,"cell"):this._hideView()})),(0,ue.clickOutsideHandler)({emitter:s,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const c=$e(a),d=Ke(a);return s.on("change:borderStyle",this._getPropertyChangeCallback("tableCellBorderStyle",this._defaultTableCellProperties.borderStyle)),s.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:s.borderColorInput,commandName:"tableCellBorderColor",errorText:c,validator:qe,defaultValue:this._defaultTableCellProperties.borderColor})),s.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:s.borderWidthInput,commandName:"tableCellBorderWidth",errorText:d,validator:Je,defaultValue:this._defaultTableCellProperties.borderWidth})),s.on("change:padding",this._getValidatedPropertyChangeCallback({viewField:s.paddingInput,commandName:"tableCellPadding",errorText:d,validator:Ge,defaultValue:this._defaultTableCellProperties.padding})),s.on("change:width",this._getValidatedPropertyChangeCallback({viewField:s.widthInput,commandName:"tableCellWidth",errorText:d,validator:Ge,defaultValue:this._defaultTableCellProperties.width})),s.on("change:height",this._getValidatedPropertyChangeCallback({viewField:s.heightInput,commandName:"tableCellHeight",errorText:d,validator:Ge,defaultValue:this._defaultTableCellProperties.height})),s.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:s.backgroundInput,commandName:"tableCellBackgroundColor",errorText:c,validator:qe,defaultValue:this._defaultTableCellProperties.backgroundColor})),s.on("change:horizontalAlignment",this._getPropertyChangeCallback("tableCellHorizontalAlignment",this._defaultTableCellProperties.horizontalAlignment)),s.on("change:verticalAlignment",this._getPropertyChangeCallback("tableCellVerticalAlignment",this._defaultTableCellProperties.verticalAlignment)),s}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableCellBorderStyle");Object.entries(Yt).map((([t,o])=>{const n=this._defaultTableCellProperties[t]||"";return[t,e.get(o).value||n]})).forEach((([e,o])=>{("borderColor"!==e&&"borderWidth"!==e||"none"!==t.value)&&this.view.set(e,o)}))}_showView(){const e=this.editor;this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:Kt(e)}),this._undoStepBatch=e.model.createBatch(),this.view.focus()}_hideView(){if(!this._isViewInBalloon)return;const e=this.editor;this.stopListening(e.ui,"update"),this.view.saveButtonView.focus(),this._balloon.remove(this.view),this.editor.editing.view.focus()}get _isViewVisible(){return this._balloon.visibleView===this.view}get _isViewInBalloon(){return this._balloon.hasView(this.view)}_getPropertyChangeCallback(e,t){return(o,n,i,l)=>{(l||t!==i)&&this.editor.execute(e,{value:i,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:o,validator:n,errorText:i,defaultValue:l}=e,r=Ot((()=>{o.errorText=i}),500);return(e,i,s,a)=>{r.cancel(),(a||l!==s)&&(n(s)?(this.editor.execute(t,{value:s,batch:this._undoStepBatch}),o.errorText=null):r())}}}function eo(e,t){const{viewElement:o,defaultValue:n,modelAttribute:i,styleName:l,reduceBoxSides:r=!1}=t;e.for("upcast").attributeToAttribute({view:{name:o,styles:{[l]:/[\s\S]+/}},model:{key:i,value:e=>{const t=e.getNormalizedStyle(l),o=r?io(t):t;if(n!==o)return o}}})}function to(e,t,o,n){e.for("upcast").add((e=>e.on("element:"+t,((e,t,i)=>{if(!t.modelRange)return;const l=["border-top-width","border-top-color","border-top-style","border-bottom-width","border-bottom-color","border-bottom-style","border-right-width","border-right-color","border-right-style","border-left-width","border-left-color","border-left-style"].filter((e=>t.viewItem.hasStyle(e)));if(!l.length)return;const r={styles:l};if(!i.consumable.test(t.viewItem,r))return;const s=[...t.modelRange.getItems({shallow:!0})].pop();i.consumable.consume(t.viewItem,r);const a={style:t.viewItem.getNormalizedStyle("border-style"),color:t.viewItem.getNormalizedStyle("border-color"),width:t.viewItem.getNormalizedStyle("border-width")},c={style:io(a.style),color:io(a.color),width:io(a.width)};c.style!==n.style&&i.writer.setAttribute(o.style,c.style,s),c.color!==n.color&&i.writer.setAttribute(o.color,c.color,s),c.width!==n.width&&i.writer.setAttribute(o.width,c.width,s)}))))}function oo(e,{modelElement:t,modelAttribute:o,styleName:n}){e.for("downcast").attributeToAttribute({model:{name:t,key:o},view:e=>({key:"style",value:{[n]:e}})})}function no(e,{modelAttribute:t,styleName:o}){e.for("downcast").add((e=>e.on(`attribute:${t}:table`,((e,t,n)=>{const{item:i,attributeNewValue:l}=t,{mapper:r,writer:s}=n;if(!n.consumable.consume(t.item,e.name))return;const a=[...r.toViewElement(i).getChildren()].find((e=>e.is("element","table")));l?s.setStyle(o,l,a):s.removeStyle(o,a)}))))}function io(e){if(!e)return;return["top","right","bottom","left"].map((t=>e[t])).reduce(((e,t)=>e==t?e:null))||e}class lo extends e.Command{constructor(e,t,o){super(e),this.attributeName=t,this._defaultValue=o}refresh(){const e=this.editor,t=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(e.model.document.selection);this.isEnabled=!!t.length,this.value=this._getSingleValue(t)}execute(e={}){const{value:t,batch:o}=e,n=this.editor.model,i=this.editor.plugins.get("TableUtils").getSelectionAffectedTableCells(n.document.selection),l=this._getValueToSet(t);n.enqueueChange(o,(e=>{l?i.forEach((t=>e.setAttribute(this.attributeName,l,t))):i.forEach((t=>e.removeAttribute(this.attributeName,t)))}))}_getAttribute(e){if(!e)return;const t=e.getAttribute(this.attributeName);return t!==this._defaultValue?t:void 0}_getValueToSet(e){if(e!==this._defaultValue)return e}_getSingleValue(e){const t=this._getAttribute(e[0]);return e.every((e=>this._getAttribute(e)===t))?t:void 0}}class ro extends lo{constructor(e,t){super(e,"tableCellPadding",t)}_getAttribute(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){if((e=Jt(e,"px"))!==this._defaultValue)return e}}class so extends lo{constructor(e,t){super(e,"tableCellWidth",t)}_getValueToSet(e){if((e=Jt(e,"px"))!==this._defaultValue)return e}}class ao extends lo{constructor(e,t){super(e,"tableCellHeight",t)}_getValueToSet(e){return(e=Jt(e,"px"))===this._defaultValue?null:e}}class co extends lo{constructor(e,t){super(e,"tableCellBackgroundColor",t)}}class uo extends lo{constructor(e,t){super(e,"tableCellVerticalAlignment",t)}}class ho extends lo{constructor(e,t){super(e,"tableCellHorizontalAlignment",t)}}class bo extends lo{constructor(e,t){super(e,"tableCellBorderStyle",t)}_getAttribute(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class mo extends lo{constructor(e,t){super(e,"tableCellBorderColor",t)}_getAttribute(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class go extends lo{constructor(e,t){super(e,"tableCellBorderWidth",t)}_getAttribute(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){if((e=Jt(e,"px"))!==this._defaultValue)return e}}const po=/^(top|middle|bottom)$/,fo=/^(left|center|right|justify)$/;class wo extends e.Plugin{static get pluginName(){return"TableCellPropertiesEditing"}static get requires(){return[ce]}init(){const e=this.editor,t=e.model.schema,o=e.conversion;e.config.define("table.tableCellProperties.defaultProperties",{});const n=Xt(e.config.get("table.tableCellProperties.defaultProperties"),{includeVerticalAlignmentProperty:!0,includeHorizontalAlignmentProperty:!0,includePaddingProperty:!0,isRightToLeftContent:"rtl"===e.locale.contentLanguageDirection});e.data.addStyleProcessorRules(Ve.addBorderRules),function(e,t,o){const n={width:"tableCellBorderWidth",color:"tableCellBorderColor",style:"tableCellBorderStyle"};e.extend("tableCell",{allowAttributes:Object.values(n)}),to(t,"td",n,o),to(t,"th",n,o),oo(t,{modelElement:"tableCell",modelAttribute:n.style,styleName:"border-style"}),oo(t,{modelElement:"tableCell",modelAttribute:n.color,styleName:"border-color"}),oo(t,{modelElement:"tableCell",modelAttribute:n.width,styleName:"border-width"})}(t,o,{color:n.borderColor,style:n.borderStyle,width:n.borderWidth}),e.commands.add("tableCellBorderStyle",new bo(e,n.borderStyle)),e.commands.add("tableCellBorderColor",new mo(e,n.borderColor)),e.commands.add("tableCellBorderWidth",new go(e,n.borderWidth)),ko(t,o,{modelAttribute:"tableCellWidth",styleName:"width",defaultValue:n.width}),e.commands.add("tableCellWidth",new so(e,n.width)),ko(t,o,{modelAttribute:"tableCellHeight",styleName:"height",defaultValue:n.height}),e.commands.add("tableCellHeight",new ao(e,n.height)),e.data.addStyleProcessorRules(Ve.addPaddingRules),ko(t,o,{modelAttribute:"tableCellPadding",styleName:"padding",reduceBoxSides:!0,defaultValue:n.padding}),e.commands.add("tableCellPadding",new ro(e,n.padding)),e.data.addStyleProcessorRules(Ve.addBackgroundRules),ko(t,o,{modelAttribute:"tableCellBackgroundColor",styleName:"background-color",defaultValue:n.backgroundColor}),e.commands.add("tableCellBackgroundColor",new co(e,n.backgroundColor)),function(e,t,o){e.extend("tableCell",{allowAttributes:["tableCellHorizontalAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"tableCellHorizontalAlignment"},view:e=>({key:"style",value:{"text-align":e}})}),t.for("upcast").attributeToAttribute({view:{name:/^(td|th)$/,styles:{"text-align":fo}},model:{key:"tableCellHorizontalAlignment",value:e=>{const t=e.getStyle("text-align");return t===o?null:t}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{align:fo}},model:{key:"tableCellHorizontalAlignment",value:e=>{const t=e.getAttribute("align");return t===o?null:t}}})}(t,o,n.horizontalAlignment),e.commands.add("tableCellHorizontalAlignment",new ho(e,n.horizontalAlignment)),function(e,t,o){e.extend("tableCell",{allowAttributes:["tableCellVerticalAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"tableCell",key:"tableCellVerticalAlignment"},view:e=>({key:"style",value:{"vertical-align":e}})}),t.for("upcast").attributeToAttribute({view:{name:/^(td|th)$/,styles:{"vertical-align":po}},model:{key:"tableCellVerticalAlignment",value:e=>{const t=e.getStyle("vertical-align");return t===o?null:t}}}).attributeToAttribute({view:{name:/^(td|th)$/,attributes:{valign:po}},model:{key:"tableCellVerticalAlignment",value:e=>{const t=e.getAttribute("valign");return t===o?null:t}}})}(t,o,n.verticalAlignment),e.commands.add("tableCellVerticalAlignment",new uo(e,n.verticalAlignment))}}function ko(e,t,o){const{modelAttribute:n}=o;e.extend("tableCell",{allowAttributes:[n]}),eo(t,{viewElement:/^(td|th)$/,...o}),oo(t,{modelElement:"tableCell",...o})}class _o extends e.Plugin{static get pluginName(){return"TableCellProperties"}static get requires(){return[wo,Qt]}}class vo extends e.Command{constructor(e,t,o){super(e),this.attributeName=t,this._defaultValue=o}refresh(){const e=this.editor.model.document.selection.getFirstPosition().findAncestor("table");this.isEnabled=!!e,this.value=this._getValue(e)}execute(e={}){const t=this.editor.model,o=t.document.selection,{value:n,batch:i}=e,l=o.getFirstPosition().findAncestor("table"),r=this._getValueToSet(n);t.enqueueChange(i,(e=>{r?e.setAttribute(this.attributeName,r,l):e.removeAttribute(this.attributeName,l)}))}_getValue(e){if(!e)return;const t=e.getAttribute(this.attributeName);return t!==this._defaultValue?t:void 0}_getValueToSet(e){if(e!==this._defaultValue)return e}}class Co extends vo{constructor(e,t){super(e,"tableBackgroundColor",t)}}class yo extends vo{constructor(e,t){super(e,"tableBorderColor",t)}_getValue(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class To extends vo{constructor(e,t){super(e,"tableBorderStyle",t)}_getValue(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}}class Ao extends vo{constructor(e,t){super(e,"tableBorderWidth",t)}_getValue(e){if(!e)return;const t=Gt(e.getAttribute(this.attributeName));return t!==this._defaultValue?t:void 0}_getValueToSet(e){if((e=Jt(e,"px"))!==this._defaultValue)return e}}class xo extends vo{constructor(e,t){super(e,"tableWidth",t)}_getValueToSet(e){if((e=Jt(e,"px"))!==this._defaultValue)return e}}class Vo extends vo{constructor(e,t){super(e,"tableHeight",t)}_getValueToSet(e){return(e=Jt(e,"px"))===this._defaultValue?null:e}}class So extends vo{constructor(e,t){super(e,"tableAlignment",t)}}const Ro=/^(left|center|right)$/,Io=/^(left|none|right)$/;class Po extends e.Plugin{static get pluginName(){return"TablePropertiesEditing"}static get requires(){return[ce]}init(){const e=this.editor,t=e.model.schema,o=e.conversion;e.config.define("table.tableProperties.defaultProperties",{});const n=Xt(e.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0});e.data.addStyleProcessorRules(Ve.addBorderRules),function(e,t,o){const n={width:"tableBorderWidth",color:"tableBorderColor",style:"tableBorderStyle"};e.extend("table",{allowAttributes:Object.values(n)}),to(t,"table",n,o),no(t,{modelAttribute:n.color,styleName:"border-color"}),no(t,{modelAttribute:n.style,styleName:"border-style"}),no(t,{modelAttribute:n.width,styleName:"border-width"})}(t,o,{color:n.borderColor,style:n.borderStyle,width:n.borderWidth}),e.commands.add("tableBorderColor",new yo(e,n.borderColor)),e.commands.add("tableBorderStyle",new To(e,n.borderStyle)),e.commands.add("tableBorderWidth",new Ao(e,n.borderWidth)),function(e,t,o){e.extend("table",{allowAttributes:["tableAlignment"]}),t.for("downcast").attributeToAttribute({model:{name:"table",key:"tableAlignment"},view:e=>({key:"style",value:{float:"center"===e?"none":e}}),converterPriority:"high"}),t.for("upcast").attributeToAttribute({view:{name:/^(table|figure)$/,styles:{float:Io}},model:{key:"tableAlignment",value:e=>{let t=e.getStyle("float");return"none"===t&&(t="center"),t===o?null:t}}}).attributeToAttribute({view:{attributes:{align:Ro}},model:{name:"table",key:"tableAlignment",value:e=>{const t=e.getAttribute("align");return t===o?null:t}}})}(t,o,n.alignment),e.commands.add("tableAlignment",new So(e,n.alignment)),Eo(t,o,{modelAttribute:"tableWidth",styleName:"width",defaultValue:n.width}),e.commands.add("tableWidth",new xo(e,n.width)),Eo(t,o,{modelAttribute:"tableHeight",styleName:"height",defaultValue:n.height}),e.commands.add("tableHeight",new Vo(e,n.height)),e.data.addStyleProcessorRules(Ve.addBackgroundRules),function(e,t,o){const{modelAttribute:n}=o;e.extend("table",{allowAttributes:[n]}),eo(t,{viewElement:"table",...o}),no(t,o)}(t,o,{modelAttribute:"tableBackgroundColor",styleName:"background-color",defaultValue:n.backgroundColor}),e.commands.add("tableBackgroundColor",new Co(e,n.backgroundColor))}}function Eo(e,t,o){const{modelAttribute:n}=o;e.extend("table",{allowAttributes:[n]}),eo(t,{viewElement:/^(table|figure)$/,...o}),oo(t,{modelElement:"table",...o})}var zo=o(99),Bo={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(zo.Z,Bo);zo.Z.locals;const Lo={left:e.icons.objectLeft,center:e.icons.objectCenter,right:e.icons.objectRight};class Wo extends ue.View{constructor(e,t){super(e),this.set({borderStyle:"",borderWidth:"",borderColor:"",backgroundColor:"",width:"",height:"",alignment:""}),this.options=t;const{borderStyleDropdown:o,borderWidthInput:n,borderColorInput:i,borderRowLabel:l}=this._createBorderFields(),{backgroundRowLabel:r,backgroundInput:a}=this._createBackgroundFields(),{widthInput:c,operatorLabel:d,heightInput:u,dimensionsLabel:h}=this._createDimensionFields(),{alignmentToolbar:b,alignmentLabel:m}=this._createAlignmentFields();this.focusTracker=new s.FocusTracker,this.keystrokes=new s.KeystrokeHandler,this.children=this.createCollection(),this.borderStyleDropdown=o,this.borderWidthInput=n,this.borderColorInput=i,this.backgroundInput=a,this.widthInput=c,this.heightInput=u,this.alignmentToolbar=b;const{saveButtonView:g,cancelButtonView:p}=this._createActionButtons();this.saveButtonView=g,this.cancelButtonView=p,this._focusables=new ue.ViewCollection,this._focusCycler=new ue.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.children.add(new ue.FormHeaderView(e,{label:this.t("Table properties")})),this.children.add(new it(e,{labelView:l,children:[l,o,i,n],class:"ck-table-form__border-row"})),this.children.add(new it(e,{labelView:r,children:[r,a],class:"ck-table-form__background-row"})),this.children.add(new it(e,{children:[new it(e,{labelView:h,children:[h,c,d,u],class:"ck-table-form__dimensions-row"}),new it(e,{labelView:m,children:[m,b],class:"ck-table-properties-form__alignment-row"})]})),this.children.add(new it(e,{children:[this.saveButtonView,this.cancelButtonView],class:"ck-table-form__action-row"})),this.setTemplate({tag:"form",attributes:{class:["ck","ck-form","ck-table-form","ck-table-properties-form"],tabindex:"-1"},children:this.children})}render(){super.render(),(0,ue.submitHandler)({view:this}),[this.borderStyleDropdown,this.borderColorInput,this.borderWidthInput,this.backgroundInput,this.widthInput,this.heightInput,this.alignmentToolbar,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)})),this.keystrokes.listenTo(this.element)}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}focus(){this._focusCycler.focusFirst()}_createBorderFields(){const e=this.options.defaultTableProperties,t={style:e.borderStyle,width:e.borderWidth,color:e.borderColor},o=et({colorConfig:this.options.borderColors,columns:5,defaultColorValue:t.color}),n=this.locale,i=this.t,l=new ue.LabelView(n);l.text=i("Border");const r=Ze(this.t),s=new ue.LabeledFieldView(n,ue.createLabeledDropdown);s.set({label:i("Style"),class:"ck-table-form__border-style"}),s.fieldView.buttonView.set({isOn:!1,withText:!0,tooltip:i("Style")}),s.fieldView.buttonView.bind("label").to(this,"borderStyle",(e=>r[e||"none"])),s.fieldView.on("execute",(e=>{this.borderStyle=e.source._borderStyleValue})),s.bind("isEmpty").to(this,"borderStyle",(e=>!e)),(0,ue.addListToDropdown)(s.fieldView,Xe(this,t.style));const a=new ue.LabeledFieldView(n,ue.createLabeledInputText);a.set({label:i("Width"),class:"ck-table-form__border-width"}),a.fieldView.bind("value").to(this,"borderWidth"),a.bind("isEnabled").to(this,"borderStyle",No),a.fieldView.on("input",(()=>{this.borderWidth=a.fieldView.element.value}));const c=new ue.LabeledFieldView(n,o);return c.set({label:i("Color"),class:"ck-table-form__border-color"}),c.fieldView.bind("value").to(this,"borderColor"),c.bind("isEnabled").to(this,"borderStyle",No),c.fieldView.on("input",(()=>{this.borderColor=c.fieldView.value})),this.on("change:borderStyle",((e,o,n,i)=>{No(n)||(this.borderColor="",this.borderWidth=""),No(i)||(this.borderColor=t.color,this.borderWidth=t.width)})),{borderRowLabel:l,borderStyleDropdown:s,borderColorInput:c,borderWidthInput:a}}_createBackgroundFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Background");const n=et({colorConfig:this.options.backgroundColors,columns:5,defaultColorValue:this.options.defaultTableProperties.backgroundColor}),i=new ue.LabeledFieldView(e,n);return i.set({label:t("Color"),class:"ck-table-properties-form__background"}),i.fieldView.bind("value").to(this,"backgroundColor"),i.fieldView.on("input",(()=>{this.backgroundColor=i.fieldView.value})),{backgroundRowLabel:o,backgroundInput:i}}_createDimensionFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Dimensions");const n=new ue.LabeledFieldView(e,ue.createLabeledInputText);n.set({label:t("Width"),class:"ck-table-form__dimensions-row__width"}),n.fieldView.bind("value").to(this,"width"),n.fieldView.on("input",(()=>{this.width=n.fieldView.element.value}));const i=new ue.View(e);i.setTemplate({tag:"span",attributes:{class:["ck-table-form__dimension-operator"]},children:[{text:"×"}]});const l=new ue.LabeledFieldView(e,ue.createLabeledInputText);return l.set({label:t("Height"),class:"ck-table-form__dimensions-row__height"}),l.fieldView.bind("value").to(this,"height"),l.fieldView.on("input",(()=>{this.height=l.fieldView.element.value})),{dimensionsLabel:o,widthInput:n,operatorLabel:i,heightInput:l}}_createAlignmentFields(){const e=this.locale,t=this.t,o=new ue.LabelView(e);o.text=t("Alignment");const n=new ue.ToolbarView(e);return n.set({isCompact:!0,ariaLabel:t("Table alignment toolbar")}),Ye({view:this,icons:Lo,toolbar:n,labels:this._alignmentLabels,propertyName:"alignment",defaultValue:this.options.defaultTableProperties.alignment}),{alignmentLabel:o,alignmentToolbar:n}}_createActionButtons(){const t=this.locale,o=this.t,n=new ue.ButtonView(t),i=new ue.ButtonView(t),l=[this.borderWidthInput,this.borderColorInput,this.backgroundInput,this.widthInput,this.heightInput];return n.set({label:o("Save"),icon:e.icons.check,class:"ck-button-save",type:"submit",withText:!0}),n.bind("isEnabled").toMany(l,"errorText",((...e)=>e.every((e=>!e)))),i.set({label:o("Cancel"),icon:e.icons.cancel,class:"ck-button-cancel",withText:!0}),i.delegate("execute").to(this,"cancel"),{saveButtonView:n,cancelButtonView:i}}get _alignmentLabels(){const e=this.locale,t=this.t,o=t("Align table to the left"),n=t("Center table"),i=t("Align table to the right");return"rtl"===e.uiLanguageDirection?{right:i,center:n,left:o}:{left:o,center:n,right:i}}}function No(e){return"none"!==e}const Fo={borderStyle:"tableBorderStyle",borderColor:"tableBorderColor",borderWidth:"tableBorderWidth",backgroundColor:"tableBackgroundColor",width:"tableWidth",height:"tableHeight",alignment:"tableAlignment"};class Do extends e.Plugin{static get requires(){return[ue.ContextualBalloon]}static get pluginName(){return"TablePropertiesUI"}constructor(e){super(e),e.config.define("table.tableProperties",{borderColors:Qe,backgroundColors:Qe})}init(){const e=this.editor,t=e.t;this._defaultTableProperties=Xt(e.config.get("table.tableProperties.defaultProperties"),{includeAlignmentProperty:!0}),this._balloon=e.plugins.get(ue.ContextualBalloon),this.view=this._createPropertiesView(),this._undoStepBatch=null,e.ui.componentFactory.add("tableProperties",(o=>{const n=new ue.ButtonView(o);n.set({label:t("Table properties"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="M8 2v5h4V2h1v5h5v1h-5v4h.021l-.172.351-1.916.28-.151.027c-.287.063-.54.182-.755.341L8 13v5H7v-5H2v-1h5V8H2V7h5V2h1zm4 6H8v4h4V8z" opacity=".6"/><path d="m15.5 11.5 1.323 2.68 2.957.43-2.14 2.085.505 2.946L15.5 18.25l-2.645 1.39.505-2.945-2.14-2.086 2.957-.43L15.5 11.5zM17 1a2 2 0 0 1 2 2v9.475l-.85-.124-.857-1.736a2.048 2.048 0 0 0-.292-.44L17 3H3v14h7.808l.402.392L10.935 19H3a2 2 0 0 1-2-2V3a2 2 0 0 1 2-2h14z"/></svg>',tooltip:!0}),this.listenTo(n,"execute",(()=>this._showView()));const i=Object.values(Fo).map((t=>e.commands.get(t)));return n.bind("isEnabled").toMany(i,"isEnabled",((...e)=>e.some((e=>e)))),n}))}destroy(){super.destroy(),this.view.destroy()}_createPropertiesView(){const e=this.editor,t=e.config.get("table.tableProperties"),o=(0,ue.normalizeColorOptions)(t.borderColors),n=(0,ue.getLocalizedColorOptions)(e.locale,o),i=(0,ue.normalizeColorOptions)(t.backgroundColors),l=(0,ue.getLocalizedColorOptions)(e.locale,i),r=new Wo(e.locale,{borderColors:n,backgroundColors:l,defaultTableProperties:this._defaultTableProperties}),s=e.t;r.render(),this.listenTo(r,"submit",(()=>{this._hideView()})),this.listenTo(r,"cancel",(()=>{this._undoStepBatch.operations.length&&e.execute("undo",this._undoStepBatch),this._hideView()})),r.keystrokes.set("Esc",((e,t)=>{this._hideView(),t()})),(0,ue.clickOutsideHandler)({emitter:r,activator:()=>this._isViewInBalloon,contextElements:[this._balloon.view.element],callback:()=>this._hideView()});const a=$e(s),c=Ke(s);return r.on("change:borderStyle",this._getPropertyChangeCallback("tableBorderStyle",this._defaultTableProperties.borderStyle)),r.on("change:borderColor",this._getValidatedPropertyChangeCallback({viewField:r.borderColorInput,commandName:"tableBorderColor",errorText:a,validator:qe,defaultValue:this._defaultTableProperties.borderColor})),r.on("change:borderWidth",this._getValidatedPropertyChangeCallback({viewField:r.borderWidthInput,commandName:"tableBorderWidth",errorText:c,validator:Je,defaultValue:this._defaultTableProperties.borderWidth})),r.on("change:backgroundColor",this._getValidatedPropertyChangeCallback({viewField:r.backgroundInput,commandName:"tableBackgroundColor",errorText:a,validator:qe,defaultValue:this._defaultTableProperties.backgroundColor})),r.on("change:width",this._getValidatedPropertyChangeCallback({viewField:r.widthInput,commandName:"tableWidth",errorText:c,validator:Ge,defaultValue:this._defaultTableProperties.width})),r.on("change:height",this._getValidatedPropertyChangeCallback({viewField:r.heightInput,commandName:"tableHeight",errorText:c,validator:Ge,defaultValue:this._defaultTableProperties.height})),r.on("change:alignment",this._getPropertyChangeCallback("tableAlignment",this._defaultTableProperties.alignment)),r}_fillViewFormFromCommandValues(){const e=this.editor.commands,t=e.get("tableBorderStyle");Object.entries(Fo).map((([t,o])=>{const n=this._defaultTableProperties[t]||"";return[t,e.get(o).value||n]})).forEach((([e,o])=>{("borderColor"!==e&&"borderWidth"!==e||"none"!==t.value)&&this.view.set(e,o)}))}_showView(){const e=this.editor;this.listenTo(e.ui,"update",(()=>{this._updateView()})),this._fillViewFormFromCommandValues(),this._balloon.add({view:this.view,position:$t(e)}),this._undoStepBatch=e.model.createBatch(),this.view.focus()}_hideView(){const e=this.editor;this.stopListening(e.ui,"update"),this.view.saveButtonView.focus(),this._balloon.remove(this.view),this.editor.editing.view.focus()}_updateView(){const e=this.editor;Ne(e.editing.view.document.selection)?this._isViewVisible&&Zt(e,"table"):this._hideView()}get _isViewVisible(){return this._balloon.visibleView===this.view}get _isViewInBalloon(){return this._balloon.hasView(this.view)}_getPropertyChangeCallback(e,t){return(o,n,i,l)=>{(l||t!==i)&&this.editor.execute(e,{value:i,batch:this._undoStepBatch})}}_getValidatedPropertyChangeCallback(e){const{commandName:t,viewField:o,validator:n,errorText:i,defaultValue:l}=e,r=Ot((()=>{o.errorText=i}),500);return(e,i,s,a)=>{r.cancel(),(a||l!==s)&&(n(s)?(this.editor.execute(t,{value:s,batch:this._undoStepBatch}),o.errorText=null):r())}}}class Ho extends e.Plugin{static get pluginName(){return"TableProperties"}static get requires(){return[Po,Do]}}function Mo(e){e.document.registerPostFixer((t=>function(e,t){const o=t.document.differ.getChanges();let n=!1;for(const t of o){if("insert"!=t.type)continue;if(t.position.parent.is("element","table")||"table"==t.name){const o="table"==t.name?t.position.nodeAfter:t.position.parent,i=Array.from(o.getChildren()).filter((e=>e.is("element","caption"))),l=i.shift();if(!l)continue;for(const t of i)e.move(e.createRangeIn(t),l,"end"),e.remove(t);l.nextSibling&&(e.move(e.createRangeOn(l),o,"end"),n=!0),n=!!i.length||n}}return n}(t,e)))}function Oo(e){return!!e&&e.is("element","table")}function jo(e){for(const t of e.getChildren())if(t.is("element","caption"))return t;return null}function Uo(e){const t=e.parent;return"figcaption"==e.name&&t&&"figure"==t.name&&t.hasClass("table")||"caption"==e.name&&t&&"table"==t.name?{name:!0}:null}function Zo(e){const t=e.getSelectedElement();return t&&t.is("element","table")?t:e.getFirstPosition().findAncestor("table")}class $o extends e.Command{refresh(){const e=Zo(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled?this.value=!!jo(e):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change((e=>{this.value?this._hideTableCaption(e):this._showTableCaption(e,t)}))}_showTableCaption(e,t){const o=Zo(this.editor.model.document.selection),n=this.editor.plugins.get("TableCaptionEditing")._getSavedCaption(o)||e.createElement("caption");e.append(n,o),t&&e.setSelection(n,"in")}_hideTableCaption(e){const t=Zo(this.editor.model.document.selection),o=this.editor.plugins.get("TableCaptionEditing"),n=jo(t);o._saveCaption(t,n),e.setSelection(e.createRangeIn(t.getChild(0).getChild(0))),e.remove(n)}}class Ko extends e.Plugin{static get pluginName(){return"TableCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,o=e.model.schema,n=e.editing.view,i=e.t;o.isRegistered("caption")?o.extend("caption",{allowIn:"table"}):o.register("caption",{allowIn:"table",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleTableCaption",new $o(this.editor)),e.conversion.for("upcast").elementToElement({view:Uo,model:"caption"}),e.conversion.for("dataDowncast").elementToElement({model:"caption",view:(e,{writer:t})=>Oo(e.parent)?t.createContainerElement("figcaption"):null}),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:o})=>{if(!Oo(e.parent))return null;const l=o.createEditableElement("figcaption");return o.setCustomProperty("tableCaption",!0,l),(0,Ve.enablePlaceholder)({view:n,element:l,text:i("Enter table caption"),keepOnFocus:!0}),(0,t.toWidgetEditable)(l,o)}}),Mo(e.model)}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?Ve.Element.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}class qo extends e.Plugin{static get pluginName(){return"TableCaptionUI"}init(){const t=this.editor,o=t.editing.view,n=t.t;t.ui.componentFactory.add("toggleTableCaption",(i=>{const l=t.commands.get("toggleTableCaption"),r=new ue.ButtonView(i);return r.set({icon:e.icons.caption,tooltip:!0,isToggleable:!0}),r.bind("isOn","isEnabled").to(l,"value","isEnabled"),r.bind("label").to(l,"value",(e=>n(e?"Toggle caption off":"Toggle caption on"))),this.listenTo(r,"execute",(()=>{if(t.execute("toggleTableCaption",{focusCaptionOnShow:!0}),l.value){const e=function(e){const t=Zo(e);return t?jo(t):null}(t.model.document.selection),n=t.editing.mapper.toViewElement(e);if(!n)return;o.scrollToTheSelection(),o.change((e=>{e.addClass("table__caption_highlighted",n)}))}t.editing.view.focus()})),r}))}}var Go=o(665),Jo={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(Go.Z,Jo);Go.Z.locals;class Xo extends e.Plugin{static get pluginName(){return"TableCaption"}static get requires(){return[Ko,qo]}}const Yo=function(e,t,o){var n=!0,i=!0;if("function"!=typeof e)throw new TypeError("Expected a function");return mt(o)&&(n="leading"in o?!!o.leading:n,i="trailing"in o?!!o.trailing:i),Ot(e,t,{leading:n,maxWait:t,trailing:i})};class Qo extends vo{constructor(e,t){super(e,"tableWidth",t)}refresh(){this.isEnabled=!0}execute(e={}){const t=this.editor.model,o=e.table||t.document.selection.getSelectedElement(),{tableWidth:n,columnWidths:i}=e;t.change((e=>{n?(e.setAttribute(this.attributeName,n,o),e.setAttribute("columnWidths",i,o)):e.removeAttribute(this.attributeName,o)}))}}class en extends vo{constructor(e,t){super(e,"columnWidths",t)}refresh(){this.isEnabled=!0}execute(e={}){const t=this.editor.model,o=e.table||t.document.selection.getSelectedElement(),{columnWidths:n}=e;t.change((e=>{n?e.setAttribute(this.attributeName,n,o):e.removeAttribute(this.attributeName,o)}))}}function tn(e,t){return 4e3/on(e,t)}function on(e,t){const o=nn(e,"tbody",t)||nn(e,"thead",t);return ln(t.editing.view.domConverter.mapViewToDom(o))}function nn(e,t,o){return[...[...o.editing.mapper.toViewElement(e).getChildren()].find((e=>e.is("element","table"))).getChildren()].find((e=>e.is("element",t)))}function ln(e){const t=s.global.window.getComputedStyle(e);return"border-box"===t.boxSizing?parseFloat(t.width)-parseFloat(t.paddingLeft)-parseFloat(t.paddingRight)-parseFloat(t.borderLeftWidth)-parseFloat(t.borderRightWidth):parseFloat(t.width)}function rn(e){const t=Math.pow(10,2),o=parseFloat(e);return Math.round(o*t)/t}function sn(e){return e.map((e=>parseFloat(e))).filter((e=>!Number.isNaN(e))).reduce(((e,t)=>e+t),0)}function an(e){e=function(e){const t=e.filter((e=>"auto"===e)).length;if(0===t)return e.map((e=>rn(e)));const o=sn(e),n=Math.max((100-o)/t,5);return e.map((e=>"auto"===e?n:e)).map((e=>rn(e)))}(e);const t=sn(e);return 100===t?e:e.map((e=>rn(100*e/t))).map(((e,t,o)=>{if(!(t===o.length-1))return e;return rn(e+100-sn(o))}))}function cn(e,t){let o=[...t.getChildren()].find((e=>e.hasClass("ck-table-column-resizer")));o||(o=e.createUIElement("div",{class:"ck-table-column-resizer"}),e.insert(e.createPositionAt(t,"end"),o))}function dn(e){const t=s.global.window.getComputedStyle(e);return"border-box"===t.boxSizing?parseInt(t.width):parseFloat(t.width)+parseFloat(t.paddingLeft)+parseFloat(t.paddingRight)+parseFloat(t.borderWidth)}function un(){return e=>e.on("attribute:columnWidths:table",((e,t,o)=>{const n=o.writer,i=t.item,l=[...o.mapper.toViewElement(i).getChildren()].find((e=>e.is("element","table")));t.attributeNewValue?(!function(e,t,o){const n=o.split(",");let i=[...t.getChildren()].find((e=>e.is("element","colgroup")));if(i)for(const t of[...i.getChildren()])e.remove(t);else i=e.createContainerElement("colgroup");for(const t of Array(n.length).keys()){const o=e.createEmptyElement("col");e.setStyle("width",n[t],o),e.insert(e.createPositionAt(i,"end"),o)}e.insert(e.createPositionAt(t,"start"),i)}(n,l,t.attributeNewValue),n.addClass("ck-table-resized",l)):(!function(e,t){const o=[...t.getChildren()].find((e=>e.is("element","colgroup")));e.remove(o)}(n,l),n.removeClass("ck-table-resized",l))}))}class hn extends e.Plugin{static get requires(){return[ce,F]}static get pluginName(){return"TableColumnResizeEditing"}constructor(e){super(e),this._isResizingActive=!1,this.set("_isResizingAllowed",!0),this._resizingData=null,this._domEmitter=Object.create(s.DomEmitterMixin),this._tableUtilsPlugin=e.plugins.get("TableUtils"),this.on("change:_isResizingAllowed",((t,o,n)=>{e.editing.view.change((t=>{t[n?"removeClass":"addClass"]("ck-column-resize_disabled",e.editing.view.document.getRoot())}))}))}init(){this._extendSchema(),this._registerPostFixer(),this._registerConverters(),this._registerResizingListeners(),this._registerColgroupFixer(),this._registerResizerInserter();const e=this.editor,t=e.plugins.get("TableColumnResize");e.commands.add("resizeTableWidth",new Qo(e)),e.commands.add("resizeColumnWidths",new en(e));const o=e.commands.get("resizeTableWidth"),n=e.commands.get("resizeColumnWidths");this.bind("_isResizingAllowed").to(e,"isReadOnly",t,"isEnabled",o,"isEnabled",n,"isEnabled",((e,t,o,n)=>!e&&t&&o&&n))}destroy(){this._domEmitter.stopListening(),super.destroy()}_extendSchema(){this.editor.model.schema.extend("table",{allowAttributes:["tableWidth","columnWidths"]})}_registerPostFixer(){const e=this.editor.model;function t(e,t,o){const n=o._tableUtilsPlugin.getColumns(t);if(0===n-e.length)return;const i=function(e,t){const o=new Set;for(const n of e.getChanges())if("insert"==n.type&&n.position.nodeAfter&&"tableCell"==n.position.nodeAfter.name&&n.position.nodeAfter.getAncestors().includes(t))o.add(n.position.nodeAfter);else if("remove"==n.type){const e=n.position.nodeBefore||n.position.nodeAfter;"tableCell"==e.name&&e.getAncestors().includes(t)&&o.add(e)}return o}(o.editor.model.document.differ,t);for(const r of i){const i=n-e.length;if(0===i)continue;const s=i>0,a=o._tableUtilsPlugin.getCellLocation(r).column;if(s){const n=tn(t,o.editor),r=(l=n,Array(i).fill(l));e.splice(a,0,...r)}else{const t=e.splice(a,Math.abs(i));e[a]+=sn(t)}}var l}e.document.registerPostFixer((o=>{let n=!1;for(const i of function(e){const t=new Set;for(const o of e.document.differ.getChanges()){let n=null;switch(o.type){case"insert":n=["table","tableRow","tableCell"].includes(o.name)?o.position:null;break;case"remove":n=["tableRow","tableCell"].includes(o.name)?o.position:null;break;case"attribute":o.range.start.nodeAfter&&(n=["table","tableRow","tableCell"].includes(o.range.start.nodeAfter.name)?o.range.start:null)}if(!n)continue;const i=n.nodeAfter&&"table"===n.nodeAfter.name?n.nodeAfter:n.findAncestor("table");for(const o of e.createRangeOn(i).getItems())o.is("element")&&"table"===o.name&&o.hasAttribute("columnWidths")&&t.add(o)}return t}(e)){const e=an(i.getAttribute("columnWidths").split(","));t(e,i,this);const l=e.map((e=>`${e}%`)).join(",");i.getAttribute("columnWidths")!==l&&(o.setAttribute("columnWidths",l,i),n=!0)}return n}))}_registerConverters(){const e=this.editor.conversion;var t;e.for("upcast").attributeToAttribute({view:{name:"figure",key:"style",value:{width:/[\s\S]+/}},model:{name:"table",key:"tableWidth",value:e=>e.getStyle("width")}}),e.for("upcast").add((t=this._tableUtilsPlugin,e=>e.on("element:colgroup",((e,o,n)=>{const i=o.viewItem;if(!n.consumable.test(i,{name:!0}))return;n.consumable.consume(i,{name:!0});const l=o.modelCursor.findAncestor("table"),r=t.getColumns(l);let s=[...Array(r).keys()].map((e=>{const t=i.getChild(e);if(!t||!t.is("element","col"))return"auto";const o=t.getStyle("width");return o&&o.endsWith("%")?o:"auto"}));s.includes("auto")&&(s=an(s).map((e=>e+"%"))),n.writer.setAttribute("columnWidths",s.join(","),l)})))),e.for("downcast").attributeToAttribute({model:{name:"table",key:"tableWidth"},view:e=>({name:"figure",key:"style",value:{width:e}})}),e.for("downcast").add(un())}_registerResizingListeners(){const e=this.editor.editing.view;e.addObserver(Se),e.document.on("mousedown",this._onMouseDownHandler.bind(this),{priority:"high"}),this._domEmitter.listenTo(s.global.window.document,"mousemove",Yo(this._onMouseMoveHandler.bind(this),50)),this._domEmitter.listenTo(s.global.window.document,"mouseup",this._onMouseUpHandler.bind(this))}_onMouseDownHandler(e,t){const o=t.target;if(!o.hasClass("ck-table-column-resizer"))return;if(!this._isResizingAllowed)return;t.preventDefault(),e.stop();const n=this.editor,i=function(e,t,o){const n=Array(t.getColumns(e)),i=new u(e);for(const e of i){const t=o.editing.mapper.toViewElement(e.cell),i=dn(o.editing.view.domConverter.mapViewToDom(t));(!n[e.column]||i<n[e.column])&&(n[e.column]=rn(i))}return n}(n.editing.mapper.toModelElement(o.findAncestor("figure")),this._tableUtilsPlugin,n),l=o.findAncestor("table"),r=n.editing.view;[...l.getChildren()].find((e=>e.is("element","colgroup")))||r.change((e=>{!function(e,t,o){const n=e.createContainerElement("colgroup");for(let o=0;o<t.length;o++){const i=e.createEmptyElement("col"),l=`${rn(t[o]/sn(t)*100)}%`;e.setStyle("width",l,i),e.insert(e.createPositionAt(n,"end"),i)}e.insert(e.createPositionAt(o,"start"),n)}(e,i,l)})),this._isResizingActive=!0,this._resizingData=this._getResizingData(t,i),r.change((e=>function(e,t,o){const n=o.widths.viewFigureWidth/o.widths.viewFigureParentWidth;e.addClass("ck-table-resized",t),e.addClass("ck-table-column-resizer__active",o.elements.viewResizer),e.setStyle("width",`${rn(100*n)}%`,t.findAncestor("figure"))}(e,l,this._resizingData)))}_onMouseMoveHandler(e,t){if(!this._isResizingActive)return;if(!this._isResizingAllowed)return void this._onMouseUpHandler();const{columnPosition:o,flags:{isRightEdge:n,isTableCentered:i,isLtrContent:l},elements:{viewFigure:r,viewLeftColumn:s,viewRightColumn:a},widths:{viewFigureParentWidth:c,tableWidth:d,leftColumnWidth:u,rightColumnWidth:h}}=this._resizingData,b=40-u,m=n?c-d:h-40,g=(l?1:-1)*(n&&i?2:1),p=(f=(t.clientX-o)*g,w=Math.min(b,0),k=Math.max(m,0),rn(f<=w?w:f>=k?k:f));var f,w,k;0!==p&&this.editor.editing.view.change((e=>{const t=rn(100*(u+p)/d);if(e.setStyle("width",`${t}%`,s),n){const t=rn(100*(d+p)/c);e.setStyle("width",`${t}%`,r)}else{const t=rn(100*(h-p)/d);e.setStyle("width",`${t}%`,a)}}))}_onMouseUpHandler(){if(!this._isResizingActive)return;const{viewResizer:e,modelTable:t,viewFigure:o,viewColgroup:n}=this._resizingData.elements,i=this.editor,l=i.editing.view,r=t.getAttribute("columnWidths"),s=[...n.getChildren()].map((e=>e.getStyle("width"))).join(","),a=r!==s,c=t.getAttribute("tableWidth"),d=o.getStyle("width"),u=c!==d;(a||u)&&(this._isResizingAllowed?u?i.execute("resizeTableWidth",{table:t,tableWidth:`${rn(d)}%`,columnWidths:s}):i.execute("resizeColumnWidths",{columnWidths:s,table:t}):l.change((e=>{if(r){const t=r.split(",");for(const o of n.getChildren())e.setStyle("width",t.shift(),o)}else e.remove(n);u&&(c?e.setStyle("width",c,o):e.removeStyle("width",o)),r||c||e.removeClass("ck-table-resized",[...o.getChildren()].find((e=>"table"===e.name)))}))),l.change((t=>{t.removeClass("ck-table-column-resizer__active",e)})),this._isResizingActive=!1,this._resizingData=null}_getResizingData(e,t){const o=this.editor,n=e.domEvent.clientX,i=e.target,l=i.findAncestor("td")||i.findAncestor("th"),r=o.editing.mapper.toModelElement(l),s=r.findAncestor("table"),a=function(e,t){const o=t.getCellLocation(e).column;return{leftEdge:o,rightEdge:o+(e.getAttribute("colspan")||1)-1}}(r,this._tableUtilsPlugin).rightEdge,c=a===this._tableUtilsPlugin.getColumns(s)-1,d=!s.hasAttribute("tableAlignment"),u="rtl"!==o.locale.contentLanguageDirection,h=l.findAncestor("table"),b=h.findAncestor("figure"),m=[...h.getChildren()].find((e=>e.is("element","colgroup"))),g=m.getChild(a),p=c?void 0:m.getChild(a+1);return{columnPosition:n,flags:{isRightEdge:c,isTableCentered:d,isLtrContent:u},elements:{viewResizer:i,modelTable:s,viewFigure:b,viewColgroup:m,viewLeftColumn:g,viewRightColumn:p},widths:{viewFigureParentWidth:ln(o.editing.view.domConverter.mapViewToDom(b.parent)),viewFigureWidth:ln(o.editing.view.domConverter.mapViewToDom(b)),tableWidth:on(s,o),leftColumnWidth:t[a],rightColumnWidth:c?void 0:t[a+1]}}}_registerColgroupFixer(){const e=this.editor;this.listenTo(e.editing.view.document,"layoutChanged",(()=>{const t=e.editing.view.document.selection.getFirstPosition().getAncestors().reverse().find((e=>"table"===e.name)),o=t&&[...t.getChildren()].find((e=>e.is("element","colgroup"))),n=e.model.document.selection.getFirstPosition().findAncestor("table");n&&n.hasAttribute("columnWidths")&&t&&!o&&e.editing.reconvertItem(n)}),{priority:"low"})}_registerResizerInserter(){const e=this.editor.editing.view;e.on("render",(()=>{for(const t of e.createRangeIn(e.document.getRoot()))["td","th"].includes(t.item.name)&&e.change((e=>{cn(e,t.item)}))}),{priority:"lowest"})}}var bn=o(975),mn={injectType:"singletonStyleTag",attributes:{"data-cke":!0},insert:"head",singleton:!0};re()(bn.Z,mn);bn.Z.locals;class gn extends e.Plugin{static get requires(){return[hn]}static get pluginName(){return"TableColumnResize"}}})(),(window.CKEditor5=window.CKEditor5||{}).table=n})(); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/table/translations/tt.js b/web/core/assets/vendor/ckeditor5/table/translations/tt.js new file mode 100644 index 0000000000000000000000000000000000000000..74fd954ce0fd6a98d0a479ad2996cb2034398252 --- /dev/null +++ b/web/core/assets/vendor/ckeditor5/table/translations/tt.js @@ -0,0 +1 @@ +!function(e){const t=e.tt=e.tt||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"Төс","Color picker":"",Column:"",Dashed:"","Delete column":"","Delete row":"",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"","Header row":"",Height:"","Horizontal text alignment toolbar":"","Insert column left":"","Insert column right":"","Insert row above":"","Insert row below":"","Insert table":"",Inset:"","Justify cell text":"","Merge cell down":"","Merge cell left":"","Merge cell right":"","Merge cell up":"","Merge cells":"",None:"",Outset:"",Padding:"",Ridge:"",Row:"","Select column":"","Select row":"",Solid:"","Split cell horizontally":"","Split cell vertically":"",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/assets/vendor/ckeditor5/table/translations/ur.js b/web/core/assets/vendor/ckeditor5/table/translations/ur.js index edae19bb9b16fa366f58be9e126ae897c7451c3f..fea7ab0e447a98acc4ccd4872e1d91d019057bd0 100644 --- a/web/core/assets/vendor/ckeditor5/table/translations/ur.js +++ b/web/core/assets/vendor/ckeditor5/table/translations/ur.js @@ -1 +1 @@ -!function(e){const t=e.ur=e.ur||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"","Cell properties":"","Center table":"",Color:"","Color picker":"",Column:"ستون",Dashed:"","Delete column":"ستون حذف کریں","Delete row":"قطار حذف کریں",Dimensions:"",Dotted:"",Double:"","Enter table caption":"",Groove:"","Header column":"سر ستون","Header row":"سر قطار",Height:"","Horizontal text alignment toolbar":"","Insert column left":"","Insert column right":"","Insert row above":"قطار بالا نصب کریں","Insert row below":"قطار زیریں نصب کریں","Insert table":"جدول داخل کریں",Inset:"","Justify cell text":"","Merge cell down":"سیل نچلی طرف یکجا کریں","Merge cell left":"سیل بائیں طرف یکجا کریں","Merge cell right":"سیل دائیں طرف یکجا کریں","Merge cell up":"سیل اوپر یکجا کریں","Merge cells":"سیل یکجا کریں",None:"",Outset:"",Padding:"",Ridge:"",Row:"قطار","Select column":"","Select row":"",Solid:"","Split cell horizontally":"سیل کی افقی تقسیم","Split cell vertically":"سیل کی عمودی تقسیم",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"آلہ جات برائے جدول",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:""})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file +!function(e){const t=e.ur=e.ur||{};t.dictionary=Object.assign(t.dictionary||{},{"Align cell text to the bottom":"","Align cell text to the center":"","Align cell text to the left":"","Align cell text to the middle":"","Align cell text to the right":"","Align cell text to the top":"","Align table to the left":"","Align table to the right":"",Alignment:"",Background:"",Border:"حاشیہ","Cell properties":"","Center table":"",Color:"رنگ","Color picker":"",Column:"ستون",Dashed:"قطعہ دار","Delete column":"ستون حذف کریں","Delete row":"قطار حذف کریں",Dimensions:"",Dotted:"نقطہ دار",Double:"دو گنا","Enter table caption":"",Groove:"","Header column":"سر ستون","Header row":"سر قطار",Height:"اونچائی","Horizontal text alignment toolbar":"","Insert column left":"بائیں جانب کالم بنائیں","Insert column right":"دائیں جانب کالم بنائیں","Insert row above":"قطار بالا نصب کریں","Insert row below":"قطار زیریں نصب کریں","Insert table":"جدول داخل کریں",Inset:"","Justify cell text":"","Merge cell down":"سیل نچلی طرف یکجا کریں","Merge cell left":"سیل بائیں طرف یکجا کریں","Merge cell right":"سیل دائیں طرف یکجا کریں","Merge cell up":"سیل اوپر یکجا کریں","Merge cells":"سیل یکجا کریں",None:"",Outset:"",Padding:"",Ridge:"",Row:"قطار","Select column":"","Select row":"",Solid:"","Split cell horizontally":"سیل کی افقی تقسیم","Split cell vertically":"سیل کی عمودی تقسیم",Style:"","Table alignment toolbar":"","Table cell text alignment":"","Table properties":"","Table toolbar":"آلہ جات برائے جدول",'The color is invalid. Try "#FF0000" or "rgb(255,0,0)" or "red".':"",'The value is invalid. Try "10px" or "2em" or simply "2".':"","Toggle caption off":"","Toggle caption on":"","Vertical text alignment toolbar":"",Width:"چوڑائی"})}(window.CKEDITOR_TRANSLATIONS||(window.CKEDITOR_TRANSLATIONS={})); \ No newline at end of file diff --git a/web/core/core.libraries.yml b/web/core/core.libraries.yml index ec3ac762f4619a88aa8166fc54b18397f4984e3c..debc34b042b50cc6571d21c1c80e5da180900a5f 100644 --- a/web/core/core.libraries.yml +++ b/web/core/core.libraries.yml @@ -42,10 +42,10 @@ ckeditor: ckeditor5: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: # This file is not aggregated to force the creation of a new aggregate file @@ -59,10 +59,10 @@ ckeditor5: ckeditor5.editorClassic: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/editor-classic/editor-classic.js: { minified: true } @@ -71,10 +71,10 @@ ckeditor5.editorClassic: ckeditor5.editorDecoupled: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/editor-decoupled/editor-decoupled.js: { minified: true } @@ -84,10 +84,10 @@ ckeditor5.editorDecoupled: ckeditor5.internal: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/essentials/essentials.js: { minified: true } @@ -97,10 +97,10 @@ ckeditor5.internal: ckeditor5.heading: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/heading/heading.js: { minified: true } @@ -110,10 +110,10 @@ ckeditor5.heading: ckeditor5.basic: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/basic-styles/basic-styles.js: { minified: true } @@ -123,10 +123,10 @@ ckeditor5.basic: ckeditor5.specialCharacters: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/special-characters/special-characters.js: { minified: true } @@ -136,10 +136,10 @@ ckeditor5.specialCharacters: ckeditor5.blockquote: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/block-quote/block-quote.js: { minified: true } @@ -149,10 +149,10 @@ ckeditor5.blockquote: ckeditor5.image: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/image/image.js: { minified: true } @@ -162,10 +162,10 @@ ckeditor5.image: ckeditor5.link: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/link/link.js: { minified: true } @@ -175,10 +175,10 @@ ckeditor5.link: ckeditor5.list: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/list/list.js: { minified: true } @@ -188,10 +188,10 @@ ckeditor5.list: ckeditor5.horizontalLine: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/horizontal-line/horizontal-line.js: { minified: true } @@ -201,10 +201,10 @@ ckeditor5.horizontalLine: ckeditor5.htmlSupport: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/html-support/html-support.js: { minified: true } @@ -214,10 +214,10 @@ ckeditor5.htmlSupport: ckeditor5.alignment: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/alignment/alignment.js: { minified: true } @@ -227,10 +227,10 @@ ckeditor5.alignment: ckeditor5.removeFormat: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/remove-format/remove-format.js: { minified: true } @@ -240,10 +240,10 @@ ckeditor5.removeFormat: ckeditor5.pasteFromOffice: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/paste-from-office/paste-from-office.js: { minified: true } @@ -252,10 +252,10 @@ ckeditor5.pasteFromOffice: ckeditor5.indent: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/indent/indent.js: { minified: true } @@ -265,10 +265,10 @@ ckeditor5.indent: ckeditor5.sourceEditing: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/source-editing/source-editing.js: { minified: true } @@ -278,10 +278,10 @@ ckeditor5.sourceEditing: ckeditor5.table: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/table/table.js: { minified: true } @@ -291,10 +291,10 @@ ckeditor5.table: ckeditor5.language: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/language/language.js: { minified: true } @@ -304,10 +304,10 @@ ckeditor5.language: ckeditor5.codeBlock: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/code-block/code-block.js: { minified: true } @@ -317,10 +317,10 @@ ckeditor5.codeBlock: ckeditor5.style: remote: https://github.com/ckeditor/ckeditor5 - version: "35.0.1" + version: "35.1.0" license: name: GNU-GPL-2.0-or-later - url: https://github.com/ckeditor/ckeditor5/blob/v35.0.1/LICENSE.md + url: https://github.com/ckeditor/ckeditor5/blob/v35.1.0/LICENSE.md gpl-compatible: true js: assets/vendor/ckeditor5/style/style.js: { minified: true } diff --git a/web/core/drupalci.yml b/web/core/drupalci.yml index 94aa2ad22ff0d89cb183017ae876556a2c744e7a..cd92d8102d7207a114bb46ecbcebabaf2fd80301 100644 --- a/web/core/drupalci.yml +++ b/web/core/drupalci.yml @@ -1,6 +1,11 @@ # This is the DrupalCI testbot build file for Drupal core. # Learn to make one for your own drupal.org project: # https://www.drupal.org/drupalorg/docs/drupal-ci/customizing-drupalci-testing +_phpunit_testgroups_to_execute: &testgroups + # Default: all of Drupal core's test suite runs. + testgroups: '--all' + # Alternative: run only the tests for one particular module. + # testgroups: '--module ckeditor5' build: assessment: testing: @@ -15,32 +20,32 @@ build: # deprecated code. run_tests.phpunit: types: 'PHPUnit-Unit' - testgroups: '--all' suppress-deprecations: false halt-on-fail: false + <<: *testgroups run_tests.kernel: types: 'PHPUnit-Kernel' - testgroups: '--all' suppress-deprecations: false halt-on-fail: false + <<: *testgroups run_tests.build: # Limit concurrency due to disk space concerns. concurrency: 15 types: 'PHPUnit-Build' - testgroups: '--all' suppress-deprecations: false halt-on-fail: false + <<: *testgroups run_tests.functional: types: 'PHPUnit-Functional' - testgroups: '--all' suppress-deprecations: false halt-on-fail: false + <<: *testgroups run_tests.javascript: concurrency: 15 types: 'PHPUnit-FunctionalJavascript' - testgroups: '--all' suppress-deprecations: false halt-on-fail: false + <<: *testgroups # Run nightwatch testing. # @see https://www.drupal.org/project/drupal/issues/2869825 nightwatchjs: {} diff --git a/web/core/lib/Drupal.php b/web/core/lib/Drupal.php index 14f6dded0acbc3808d6eac271f543d939df8cd00..9f02e3eca441922a4046a0458f615530ac081975 100644 --- a/web/core/lib/Drupal.php +++ b/web/core/lib/Drupal.php @@ -75,7 +75,7 @@ class Drupal { /** * The current system version. */ - const VERSION = '9.4.7'; + const VERSION = '9.4.8'; /** * Core API compatibility. diff --git a/web/core/lib/Drupal/Core/Cache/CacheableDependencyInterface.php b/web/core/lib/Drupal/Core/Cache/CacheableDependencyInterface.php index cbce6aac6a44ae380503e872d58862757c646690..e19ad24f30aae28e3a288233e7fea2c846d20910 100644 --- a/web/core/lib/Drupal/Core/Cache/CacheableDependencyInterface.php +++ b/web/core/lib/Drupal/Core/Cache/CacheableDependencyInterface.php @@ -46,6 +46,8 @@ public function getCacheTags(); * * @return int * The maximum time in seconds that this object may be cached. + * An object may be cached permanently by returning + * \Drupal\Core\Cache\Cache::PERMANENT. */ public function getCacheMaxAge(); diff --git a/web/core/lib/Drupal/Core/Config/ConfigImporter.php b/web/core/lib/Drupal/Core/Config/ConfigImporter.php index 58cc8b9844c5395190946eb073dd2d63737f0e85..dbe6ad994e92e941df26becc4ca878e994607720 100644 --- a/web/core/lib/Drupal/Core/Config/ConfigImporter.php +++ b/web/core/lib/Drupal/Core/Config/ConfigImporter.php @@ -379,6 +379,9 @@ protected function createExtensionChangelist() { return; } + // Reset the module list in case a stale cache item has been set by another + // process during deployment. + $this->moduleExtensionList->reset(); // Get a list of modules with dependency weights as values. $module_data = $this->moduleExtensionList->getList(); // Set the actual module weights. diff --git a/web/core/lib/Drupal/Core/Database/Database.php b/web/core/lib/Drupal/Core/Database/Database.php index 6439c17dbafeb5d2046759c0894a7ee8f0f02cc0..8b5af32e0e602857e2edc7a7c1803aa451a41eab 100644 --- a/web/core/lib/Drupal/Core/Database/Database.php +++ b/web/core/lib/Drupal/Core/Database/Database.php @@ -256,9 +256,41 @@ final public static function parseConnectionInfo(array $info) { $info['prefix'] = $prefix; } - // Fallback for Drupal 7 settings.php if namespace is not provided. - if (empty($info['namespace'])) { - $info['namespace'] = 'Drupal\\' . $info['driver'] . '\\Driver\\Database\\' . $info['driver']; + // Backwards compatibility layer for Drupal 8 style database connection + // arrays. Those have the wrong 'namespace' key set, or not set at all + // for core supported database drivers. + if (empty($info['namespace']) || (strpos($info['namespace'], 'Drupal\\Core\\Database\\Driver\\') === 0)) { + switch (strtolower($info['driver'])) { + case 'mysql': + $info['namespace'] = 'Drupal\\mysql\\Driver\\Database\\mysql'; + break; + + case 'pgsql': + $info['namespace'] = 'Drupal\\pgsql\\Driver\\Database\\pgsql'; + break; + + case 'sqlite': + $info['namespace'] = 'Drupal\\sqlite\\Driver\\Database\\sqlite'; + break; + } + } + // Backwards compatibility layer for Drupal 8 style database connection + // arrays. Those do not have the 'autoload' key set for core database + // drivers. + if (empty($info['autoload'])) { + switch (trim($info['namespace'], '\\')) { + case "Drupal\\mysql\\Driver\\Database\\mysql": + $info['autoload'] = "core/modules/mysql/src/Driver/Database/mysql/"; + break; + + case "Drupal\\pgsql\\Driver\\Database\\pgsql": + $info['autoload'] = "core/modules/pgsql/src/Driver/Database/pgsql/"; + break; + + case "Drupal\\sqlite\\Driver\\Database\\sqlite": + $info['autoload'] = "core/modules/sqlite/src/Driver/Database/sqlite/"; + break; + } } return $info; @@ -286,12 +318,28 @@ final public static function parseConnectionInfo(array $info) { * The database connection information, as defined in settings.php. The * structure of this array depends on the database driver it is connecting * to. + * @param \Composer\Autoload\ClassLoader $class_loader + * The class loader. Used for adding the database driver to the autoloader + * if $info['autoload'] is set. + * @param string $app_root + * The app root. * * @see \Drupal\Core\Database\Database::setActiveConnection */ - final public static function addConnectionInfo($key, $target, array $info) { + final public static function addConnectionInfo($key, $target, array $info, $class_loader = NULL, $app_root = NULL) { if (empty(self::$databaseInfo[$key][$target])) { - self::$databaseInfo[$key][$target] = self::parseConnectionInfo($info); + $info = self::parseConnectionInfo($info); + self::$databaseInfo[$key][$target] = $info; + + // If the database driver is provided by a module, then its code may need + // to be instantiated prior to when the module's root namespace is added + // to the autoloader, because that happens during service container + // initialization but the container definition is likely in the database. + // Therefore, allow the connection info to specify an autoload directory + // for the driver. + if (isset($info['autoload']) && $class_loader && $app_root) { + $class_loader->addPsr4($info['namespace'] . '\\', $app_root . '/' . $info['autoload']); + } } } @@ -324,11 +372,16 @@ final public static function getAllConnectionInfo() { * @param array $databases * A multi-dimensional array specifying database connection parameters, as * defined in settings.php. + * @param \Composer\Autoload\ClassLoader $class_loader + * The class loader. Used for adding the database driver(s) to the + * autoloader if $databases[$key][$target]['autoload'] is set. + * @param string $app_root + * The app root. */ - final public static function setMultipleConnectionInfo(array $databases) { + final public static function setMultipleConnectionInfo(array $databases, $class_loader = NULL, $app_root = NULL) { foreach ($databases as $key => $targets) { foreach ($targets as $target => $info) { - self::addConnectionInfo($key, $target, $info); + self::addConnectionInfo($key, $target, $info, $class_loader, $app_root); } } } diff --git a/web/core/lib/Drupal/Core/Entity/Element/EntityAutocomplete.php b/web/core/lib/Drupal/Core/Entity/Element/EntityAutocomplete.php index 083de1d639750f7774a85f5b32e503f8dfc8b26c..29507fd2e1cc3b2d859e416db5c7a8a43c8b3d6b 100644 --- a/web/core/lib/Drupal/Core/Entity/Element/EntityAutocomplete.php +++ b/web/core/lib/Drupal/Core/Entity/Element/EntityAutocomplete.php @@ -202,7 +202,7 @@ public static function validateEntityAutocomplete(array &$element, FormStateInte 'target_type' => $element['#target_type'], 'handler' => $element['#selection_handler'], ]; - /** @var /Drupal\Core\Entity\EntityReferenceSelection\SelectionInterface $handler */ + /** @var \Drupal\Core\Entity\EntityReferenceSelection\SelectionInterface $handler */ $handler = \Drupal::service('plugin.manager.entity_reference_selection')->getInstance($options); $autocreate = (bool) $element['#autocreate'] && $handler instanceof SelectionWithAutocreateInterface; diff --git a/web/core/lib/Drupal/Core/Extension/ThemeInstallerInterface.php b/web/core/lib/Drupal/Core/Extension/ThemeInstallerInterface.php index 6f18248cf912f9c0b8d2de35fc5c63db4d2dc97e..9e5440bc635a58f21d2c5783f58c57f5025b1c03 100644 --- a/web/core/lib/Drupal/Core/Extension/ThemeInstallerInterface.php +++ b/web/core/lib/Drupal/Core/Extension/ThemeInstallerInterface.php @@ -44,7 +44,8 @@ public function install(array $theme_list, $install_dependencies = TRUE); * Thrown when trying to uninstall a theme that was not installed. * * @throws \InvalidArgumentException - * Thrown when trying to uninstall the default theme or the admin theme. + * Thrown when trying to uninstall the admin theme, the default theme or + * a theme that another theme depends on. * * @see hook_themes_uninstalled() */ diff --git a/web/core/lib/Drupal/Core/Form/form.api.php b/web/core/lib/Drupal/Core/Form/form.api.php index d2f5d2cf6507061c2262151e5f0149b596524679..3fb1ca909a45593da4e03553b91fc722a72b8578 100644 --- a/web/core/lib/Drupal/Core/Form/form.api.php +++ b/web/core/lib/Drupal/Core/Form/form.api.php @@ -34,9 +34,8 @@ * $context['sandbox'] will be there the next time this function is called * for the current operation. For example, an operation may wish to store a * pointer in a file or an offset for a large query. The 'sandbox' array key - * is not initially set when this callback is first called, which makes it - * useful for determining whether it is the first call of the callback or - * not: + * is empty when this callback is first called, which makes it useful for + * determining whether it is the first call of the callback or not: * @code * if (empty($context['sandbox'])) { * // Perform set-up steps here. @@ -226,9 +225,15 @@ function hook_form_alter(&$form, \Drupal\Core\Form\FormStateInterface $form_stat * rather than implementing hook_form_alter() and checking the form ID, or * using long switch statements to alter multiple forms. * - * Form alter hooks are called in the following order: hook_form_alter(), - * hook_form_BASE_FORM_ID_alter(), hook_form_FORM_ID_alter(). See - * hook_form_alter() for more details. + * The call order is as follows: all existing form alter functions are called + * for module A, then all for module B, etc., followed by all for any base + * theme(s), and finally for the theme itself. The module order is determined + * by system weight, then by module name. + * + * Within each module, form alter hooks are called in the following order: + * first, hook_form_alter(); second, hook_form_BASE_FORM_ID_alter(); third, + * hook_form_FORM_ID_alter(). So, for each module, the more general hooks are + * called first followed by the more specific. * * @param $form * Nested array of form elements that comprise the form. @@ -278,9 +283,15 @@ function hook_form_FORM_ID_alter(&$form, \Drupal\Core\Form\FormStateInterface $f * one exists) check the $form_state. The base form ID is stored under * $form_state->getBuildInfo()['base_form_id']. * - * Form alter hooks are called in the following order: hook_form_alter(), - * hook_form_BASE_FORM_ID_alter(), hook_form_FORM_ID_alter(). See - * hook_form_alter() for more details. + * The call order is as follows: all existing form alter functions are called + * for module A, then all for module B, etc., followed by all for any base + * theme(s), and finally for the theme itself. The module order is determined + * by system weight, then by module name. + * + * Within each module, form alter hooks are called in the following order: + * first, hook_form_alter(); second, hook_form_BASE_FORM_ID_alter(); third, + * hook_form_FORM_ID_alter(). So, for each module, the more general hooks are + * called first followed by the more specific. * * @param $form * Nested array of form elements that comprise the form. diff --git a/web/core/lib/Drupal/Core/Logger/LogMessageParser.php b/web/core/lib/Drupal/Core/Logger/LogMessageParser.php index dc0ba4fdc5ffeace1bd4c32b39d90e5162ab5c82..73c0917d37d8cd02aa76abf801e8b4fe87059aae 100644 --- a/web/core/lib/Drupal/Core/Logger/LogMessageParser.php +++ b/web/core/lib/Drupal/Core/Logger/LogMessageParser.php @@ -29,7 +29,7 @@ public function parseMessagePlaceholders(&$message, array &$context) { $key = '@' . $key; } } - if (!empty($key) && ($key[0] === '@' || $key[0] === '%' || $key[0] === '!')) { + if (!empty($key) && ($key[0] === '@' || $key[0] === '%' || $key[0] === ':')) { // The key is now in \Drupal\Component\Render\FormattableMarkup style. $variables[$key] = $variable; } diff --git a/web/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php b/web/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php index 7f8ae617a400d66abc43c099632f31385ecd0400..2d6ed8bb75fcd7ad752806292cfb629fb78a6691 100644 --- a/web/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php +++ b/web/core/lib/Drupal/Core/Plugin/CategorizingPluginManagerTrait.php @@ -91,7 +91,7 @@ public function getSortedDefinitions(array $definitions = NULL, $label_key = 'la /** @var \Drupal\Core\Plugin\CategorizingPluginManagerTrait|\Drupal\Component\Plugin\PluginManagerInterface $this */ $definitions = $definitions ?? $this->getDefinitions(); uasort($definitions, function ($a, $b) use ($label_key) { - if ($a['category'] != $b['category']) { + if ((string) $a['category'] != (string) $b['category']) { return strnatcasecmp($a['category'], $b['category']); } return strnatcasecmp($a[$label_key], $b[$label_key]); diff --git a/web/core/lib/Drupal/Core/Site/Settings.php b/web/core/lib/Drupal/Core/Site/Settings.php index 5509e2be26ca87007d39e484d38d10c81bbcdc25..4b3fcc4981ef9a71a294c2cff4dd67ff1afabfe2 100644 --- a/web/core/lib/Drupal/Core/Site/Settings.php +++ b/web/core/lib/Drupal/Core/Site/Settings.php @@ -160,57 +160,7 @@ public static function initialize($app_root, $site_path, &$class_loader) { self::handleDeprecations($settings); // Initialize databases. - foreach ($databases as $key => $targets) { - foreach ($targets as $target => $info) { - // Backwards compatibility layer for Drupal 8 style database connection - // arrays. Those have the wrong 'namespace' key set, or not set at all - // for core supported database drivers. - if (empty($info['namespace']) || (strpos($info['namespace'], 'Drupal\\Core\\Database\\Driver\\') === 0)) { - switch (strtolower($info['driver'])) { - case 'mysql': - $info['namespace'] = 'Drupal\\mysql\\Driver\\Database\\mysql'; - break; - - case 'pgsql': - $info['namespace'] = 'Drupal\\pgsql\\Driver\\Database\\pgsql'; - break; - - case 'sqlite': - $info['namespace'] = 'Drupal\\sqlite\\Driver\\Database\\sqlite'; - break; - } - } - // Backwards compatibility layer for Drupal 8 style database connection - // arrays. Those do not have the 'autoload' key set for core database - // drivers. - if (empty($info['autoload'])) { - switch (trim($info['namespace'], '\\')) { - case "Drupal\\mysql\\Driver\\Database\\mysql": - $info['autoload'] = "core/modules/mysql/src/Driver/Database/mysql/"; - break; - - case "Drupal\\pgsql\\Driver\\Database\\pgsql": - $info['autoload'] = "core/modules/pgsql/src/Driver/Database/pgsql/"; - break; - - case "Drupal\\sqlite\\Driver\\Database\\sqlite": - $info['autoload'] = "core/modules/sqlite/src/Driver/Database/sqlite/"; - break; - } - } - - Database::addConnectionInfo($key, $target, $info); - // If the database driver is provided by a module, then its code may - // need to be instantiated prior to when the module's root namespace - // is added to the autoloader, because that happens during service - // container initialization but the container definition is likely in - // the database. Therefore, allow the connection info to specify an - // autoload directory for the driver. - if (isset($info['autoload'])) { - $class_loader->addPsr4($info['namespace'] . '\\', $app_root . '/' . $info['autoload']); - } - } - } + Database::setMultipleConnectionInfo($databases, $class_loader, $app_root); // Initialize Settings. new Settings($settings); diff --git a/web/core/modules/big_pipe/tests/src/Functional/BigPipeTest.php b/web/core/modules/big_pipe/tests/src/Functional/BigPipeTest.php index e7e1dbc86c318613e497e9ae9cdc822ede3c6a1a..ab7913195100bf048b82e88ff05da65d8a9055e4 100644 --- a/web/core/modules/big_pipe/tests/src/Functional/BigPipeTest.php +++ b/web/core/modules/big_pipe/tests/src/Functional/BigPipeTest.php @@ -376,13 +376,13 @@ protected function assertBigPipePlaceholders(array $expected_big_pipe_placeholde $placeholder_positions[$pos] = $big_pipe_placeholder_id; // Verify expected placeholder replacement. $expected_placeholder_replacement = '<script type="application/vnd.drupal-ajax" data-big-pipe-replacement-for-placeholder-with-id="' . $big_pipe_placeholder_id . '">'; - $result = $this->xpath('//script[@data-big-pipe-replacement-for-placeholder-with-id=:id]', [':id' => Html::decodeEntities($big_pipe_placeholder_id)]); + $xpath = '//script[@data-big-pipe-replacement-for-placeholder-with-id="' . Html::decodeEntities($big_pipe_placeholder_id) . '"]'; if ($expected_ajax_response === NULL) { - $this->assertCount(0, $result); + $this->assertSession()->elementNotExists('xpath', $xpath); $this->assertSession()->responseNotContains($expected_placeholder_replacement); continue; } - $this->assertEquals($expected_ajax_response, trim($result[0]->getText())); + $this->assertSession()->elementTextContains('xpath', $xpath, $expected_ajax_response); $this->assertSession()->responseContains($expected_placeholder_replacement); $pos = strpos($this->getSession()->getPage()->getContent(), $expected_placeholder_replacement); $placeholder_replacement_positions[$pos] = $big_pipe_placeholder_id; diff --git a/web/core/modules/block/tests/src/Functional/AssertBlockAppearsTrait.php b/web/core/modules/block/tests/src/Functional/AssertBlockAppearsTrait.php index b229c6f23c157e3a38b7b66f0bab67814479b9ad..b162f6d22b0d0445ae8dd52f0620ab667f228c24 100644 --- a/web/core/modules/block/tests/src/Functional/AssertBlockAppearsTrait.php +++ b/web/core/modules/block/tests/src/Functional/AssertBlockAppearsTrait.php @@ -18,8 +18,7 @@ trait AssertBlockAppearsTrait { * The block entity to find on the page. */ protected function assertBlockAppears(Block $block) { - $result = $this->findBlockInstance($block); - $this->assertNotEmpty($result, sprintf('The block %s should appear on the page.', $block->id())); + $this->assertSession()->elementExists('xpath', "//div[@id = 'block-{$block->id()}']"); } /** @@ -29,8 +28,7 @@ protected function assertBlockAppears(Block $block) { * The block entity to find on the page. */ protected function assertNoBlockAppears(Block $block) { - $result = $this->findBlockInstance($block); - $this->assertEmpty($result, sprintf('The block %s should not appear on the page.', $block->id())); + $this->assertSession()->elementNotExists('xpath', "//div[@id = 'block-{$block->id()}']"); } /** diff --git a/web/core/modules/block/tests/src/Functional/BlockHtmlTest.php b/web/core/modules/block/tests/src/Functional/BlockHtmlTest.php index 132bf0242c9e349b9212eea95aa7b4385056d67f..b6b9db7e35619944e32ec3a63e4db422c10ba36d 100644 --- a/web/core/modules/block/tests/src/Functional/BlockHtmlTest.php +++ b/web/core/modules/block/tests/src/Functional/BlockHtmlTest.php @@ -48,8 +48,7 @@ public function testHtml() { $this->assertSession()->elementExists('xpath', '//div[@id="block-test-html-block" and @data-custom-attribute="foo"]'); // Ensure expected markup for a menu block. - $elements = $this->xpath('//nav[@id="block-test-menu-block"]/ul/li'); - $this->assertNotEmpty($elements, 'The proper block markup was found.'); + $this->assertSession()->elementExists('xpath', '//nav[@id="block-test-menu-block"]/ul/li'); } } diff --git a/web/core/modules/block/tests/src/Functional/BlockLanguageTest.php b/web/core/modules/block/tests/src/Functional/BlockLanguageTest.php index 717a047b2fe01f85b83c489c036ecb38c81aaf12..7a74892e6454449e245b87a473204b5481cdf80a 100644 --- a/web/core/modules/block/tests/src/Functional/BlockLanguageTest.php +++ b/web/core/modules/block/tests/src/Functional/BlockLanguageTest.php @@ -135,8 +135,7 @@ public function testLanguageBlockVisibilityLanguageDelete() { // Ensure that the block visibility for language is gone from the UI. $this->drupalGet('admin/structure/block'); $this->clickLink('Configure'); - $elements = $this->xpath('//details[@id="edit-visibility-language"]'); - $this->assertEmpty($elements); + $this->assertSession()->elementNotExists('xpath', '//details[@id="edit-visibility-language"]'); } /** diff --git a/web/core/modules/block/tests/src/Functional/BlockSystemBrandingTest.php b/web/core/modules/block/tests/src/Functional/BlockSystemBrandingTest.php index 56615669da528b759a7f0b88804fea82f6f8f285..abf78ae3e8659e03a5f08bbe3fdb132e2b7b122d 100644 --- a/web/core/modules/block/tests/src/Functional/BlockSystemBrandingTest.php +++ b/web/core/modules/block/tests/src/Functional/BlockSystemBrandingTest.php @@ -44,12 +44,11 @@ public function testSystemBrandingSettings() { // Set default block settings. $this->drupalGet(''); - $site_logo_element = $this->xpath($site_logo_xpath); - $site_name_element = $this->xpath($site_name_xpath); // Test that all branding elements are displayed. - $this->assertNotEmpty($site_logo_element, 'The branding block logo was found.'); - $this->assertNotEmpty($site_name_element, 'The branding block site name was found.'); + $this->assertSession()->elementExists('xpath', $site_logo_xpath); + $this->assertSession()->elementExists('xpath', $site_name_xpath); + $this->assertSession()->elementExists('xpath', $site_slogan_xpath); $this->assertSession()->elementTextContains('xpath', $site_slogan_xpath, 'Community plumbing'); $this->assertSession()->responseHeaderContains('X-Drupal-Cache-Tags', 'config:system.site'); // Just this once, assert that the img src of the logo is as expected. @@ -61,18 +60,18 @@ public function testSystemBrandingSettings() { ->set('slogan', '<script>alert("Community carpentry");</script>') ->save(); $this->drupalGet(''); - $this->assertSession()->elementTextContains('xpath', $site_slogan_xpath, 'alert("Community carpentry");'); + $this->assertSession()->elementTextEquals('xpath', $site_slogan_xpath, 'alert("Community carpentry");'); $this->assertSession()->responseNotContains('<script>alert("Community carpentry");</script>'); + // Turn just the logo off. $this->config('block.block.site-branding') ->set('settings.use_site_logo', 0) ->save(); $this->drupalGet(''); - $site_logo_element = $this->xpath($site_logo_xpath); - $site_name_element = $this->xpath($site_name_xpath); + // Re-test all branding elements. - $this->assertEmpty($site_logo_element, 'The branding block logo was disabled.'); - $this->assertNotEmpty($site_name_element, 'The branding block site name was found.'); + $this->assertSession()->elementNotExists('xpath', $site_logo_xpath); + $this->assertSession()->elementExists('xpath', $site_name_xpath); $this->assertSession()->elementTextContains('xpath', $site_slogan_xpath, 'alert("Community carpentry");'); $this->assertSession()->responseNotContains('<script>alert("Community carpentry");</script>'); $this->assertSession()->responseHeaderContains('X-Drupal-Cache-Tags', 'config:system.site'); @@ -83,11 +82,10 @@ public function testSystemBrandingSettings() { ->set('settings.use_site_name', 0) ->save(); $this->drupalGet(''); - $site_logo_element = $this->xpath($site_logo_xpath); - $site_name_element = $this->xpath($site_name_xpath); + // Re-test all branding elements. - $this->assertNotEmpty($site_logo_element, 'The branding block logo was found.'); - $this->assertEmpty($site_name_element, 'The branding block site name was disabled.'); + $this->assertSession()->elementExists('xpath', $site_logo_xpath); + $this->assertSession()->elementNotExists('xpath', $site_name_xpath); $this->assertSession()->elementTextContains('xpath', $site_slogan_xpath, 'alert("Community carpentry");'); $this->assertSession()->responseNotContains('<script>alert("Community carpentry");</script>'); $this->assertSession()->responseHeaderContains('X-Drupal-Cache-Tags', 'config:system.site'); @@ -98,11 +96,10 @@ public function testSystemBrandingSettings() { ->set('settings.use_site_slogan', 0) ->save(); $this->drupalGet(''); - $site_logo_element = $this->xpath($site_logo_xpath); - $site_name_element = $this->xpath($site_name_xpath); + // Re-test all branding elements. - $this->assertNotEmpty($site_logo_element, 'The branding block logo was found.'); - $this->assertNotEmpty($site_name_element, 'The branding block site name was found.'); + $this->assertSession()->elementExists('xpath', $site_logo_xpath); + $this->assertSession()->elementExists('xpath', $site_name_xpath); $this->assertSession()->elementTextNotContains('xpath', $site_slogan_xpath, 'Community carpentry'); $this->assertSession()->responseHeaderContains('X-Drupal-Cache-Tags', 'config:system.site'); @@ -112,11 +109,10 @@ public function testSystemBrandingSettings() { ->set('settings.use_site_slogan', 0) ->save(); $this->drupalGet(''); - $site_logo_element = $this->xpath($site_logo_xpath); - $site_name_element = $this->xpath($site_name_xpath); + // Re-test all branding elements. - $this->assertNotEmpty($site_logo_element, 'The branding block logo was found.'); - $this->assertEmpty($site_name_element, 'The branding block site name was disabled.'); + $this->assertSession()->elementExists('xpath', $site_logo_xpath); + $this->assertSession()->elementNotExists('xpath', $site_name_xpath); $this->assertSession()->elementTextNotContains('xpath', $site_slogan_xpath, 'Community carpentry'); $this->assertSession()->responseHeaderContains('X-Drupal-Cache-Tags', 'config:system.site'); } diff --git a/web/core/modules/block/tests/src/Functional/BlockUiTest.php b/web/core/modules/block/tests/src/Functional/BlockUiTest.php index 0aa26912e5da81c26d2075f845404d5d30e097c7..bacb63e68741514137f1ce4b6f4a91daf289d1e9 100644 --- a/web/core/modules/block/tests/src/Functional/BlockUiTest.php +++ b/web/core/modules/block/tests/src/Functional/BlockUiTest.php @@ -113,14 +113,12 @@ public function testBlockAdminUiPage() { // Visit the blocks admin ui. $this->drupalGet('admin/structure/block'); // Look for the blocks table. - $blocks_table = $this->xpath("//table[@id='blocks']"); - $this->assertNotEmpty($blocks_table, 'The blocks table is being rendered.'); + $this->assertSession()->elementExists('xpath', "//table[@id='blocks']"); // Look for test blocks in the table. foreach ($this->blockValues as $delta => $values) { $block = $this->blocks[$delta]; $label = $block->label(); - $element = $this->xpath('//*[@id="blocks"]/tbody/tr[' . $values['tr'] . ']/td[1]/text()'); - $this->assertEquals($element[0]->getText(), $label, 'The "' . $label . '" block title is set inside the ' . $values['settings']['region'] . ' region.'); + $this->assertSession()->elementTextEquals('xpath', '//*[@id="blocks"]/tbody/tr[' . $values['tr'] . ']/td[1]/text()', $label); // Look for a test block region select form element. $this->assertSession()->fieldExists('blocks[' . $values['settings']['id'] . '][region]'); // Move the test block to the header region. @@ -141,8 +139,7 @@ public function testBlockAdminUiPage() { // Add a block with a machine name the same as a region name. $this->drupalPlaceBlock('system_powered_by_block', ['region' => 'header', 'id' => 'header']); $this->drupalGet('admin/structure/block'); - $element = $this->xpath('//tr[contains(@class, :class)]', [':class' => 'region-title-header']); - $this->assertNotEmpty($element); + $this->assertSession()->elementExists('xpath', '//tr[contains(@class, "region-title-header")]'); // Ensure hidden themes do not appear in the UI. Enable another non base // theme and place the local tasks block. @@ -176,17 +173,9 @@ public function testBlockAdminUiPage() { * Tests the block categories on the listing page. */ public function testCandidateBlockList() { - $arguments = [ - ':title' => 'Display message', - ':category' => 'Block test', - ':href' => 'admin/structure/block/add/test_block_instantiation/stark', - ]; - $pattern = '//tr[.//td/div[text()=:title] and .//td[text()=:category] and .//td//a[contains(@href, :href)]]'; - $this->drupalGet('admin/structure/block'); $this->clickLink('Place block'); - $elements = $this->xpath($pattern, $arguments); - $this->assertNotEmpty($elements, 'The test block appears in the category for its module.'); + $this->assertSession()->elementExists('xpath', '//tr[.//td/div[text()="Display message"] and .//td[text()="Block test"] and .//td//a[contains(@href, "admin/structure/block/add/test_block_instantiation/stark")]]'); // Trigger the custom category addition in block_test_block_alter(). $this->container->get('state')->set('block_test_info_alter', TRUE); @@ -194,9 +183,7 @@ public function testCandidateBlockList() { $this->drupalGet('admin/structure/block'); $this->clickLink('Place block'); - $arguments[':category'] = 'Custom category'; - $elements = $this->xpath($pattern, $arguments); - $this->assertNotEmpty($elements, 'The test block appears in a custom category controlled by block_test_block_alter().'); + $this->assertSession()->elementExists('xpath', '//tr[.//td/div[text()="Display message"] and .//td[text()="Custom category"] and .//td//a[contains(@href, "admin/structure/block/add/test_block_instantiation/stark")]]'); } /** @@ -222,17 +209,10 @@ public function testContextAwareBlocks() { $this->assertSession()->responseNotContains($expected_text); $block_url = 'admin/structure/block/add/test_context_aware/stark'; - $arguments = [ - ':title' => 'Test context-aware block', - ':category' => 'Block test', - ':href' => $block_url, - ]; - $pattern = '//tr[.//td/div[text()=:title] and .//td[text()=:category] and .//td//a[contains(@href, :href)]]'; $this->drupalGet('admin/structure/block'); $this->clickLink('Place block'); - $elements = $this->xpath($pattern, $arguments); - $this->assertNotEmpty($elements, 'The context-aware test block appears.'); + $this->assertSession()->elementExists('xpath', '//tr[.//td/div[text()="Test context-aware block"] and .//td[text()="Block test"] and .//td//a[contains(@href, "' . $block_url . '")]]'); $definition = \Drupal::service('plugin.manager.block')->getDefinition('test_context_aware'); $this->assertNotEmpty($definition, 'The context-aware test block exists.'); $edit = [ @@ -363,10 +343,7 @@ public function testBlockValidateErrors() { ], 'Save block'); $this->assertSession()->statusMessageContains('Only digits are allowed', 'error'); - - $error_class_pattern = '//div[contains(@class,"form-item-settings-digits")]/input[contains(@class,"error")]'; - $error_class = $this->xpath($error_class_pattern); - $this->assertNotEmpty($error_class, 'Plugin error class found in parent form.'); + $this->assertSession()->elementExists('xpath', '//div[contains(@class,"form-item-settings-digits")]/input[contains(@class,"error")]'); } /** diff --git a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5CKEditor4Compatibility.php b/web/core/modules/ckeditor/tests/src/FunctionalJavascript/CKEditor5CKEditor4Compatibility.php similarity index 87% rename from web/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5CKEditor4Compatibility.php rename to web/core/modules/ckeditor/tests/src/FunctionalJavascript/CKEditor5CKEditor4Compatibility.php index b6e4b42f6743896a824265b245c9f7df1f24a14c..aa3c14968f091653422ff24bac4a703f20471122 100644 --- a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5CKEditor4Compatibility.php +++ b/web/core/modules/ckeditor/tests/src/FunctionalJavascript/CKEditor5CKEditor4Compatibility.php @@ -1,6 +1,6 @@ <?php -namespace Drupal\Tests\ckeditor5\FunctionalJavascript; +namespace Drupal\Tests\ckeditor\FunctionalJavascript; use Drupal\ckeditor5\Plugin\Editor\CKEditor5; use Drupal\Core\Entity\Entity\EntityFormDisplay; @@ -8,30 +8,46 @@ use Drupal\field\Entity\FieldConfig; use Drupal\field\Entity\FieldStorageConfig; use Drupal\filter\Entity\FilterFormat; +use Drupal\FunctionalJavascriptTests\WebDriverTestBase; use Symfony\Component\Validator\ConstraintViolation; /** * Ensures that CKEditor 5 can be used on the same page with CKEditor 4. * - * @group ckeditor5 + * @group ckeditor * @internal */ -class CKEditor5CKEditor4Compatibility extends CKEditor5TestBase { +class CKEditor5CKEditor4Compatibility extends WebDriverTestBase { /** * {@inheritdoc} */ protected static $modules = [ 'ckeditor', + 'node', + 'ckeditor5', 'ckeditor5_test', ]; + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + /** * {@inheritdoc} */ protected function setUp(): void { parent::setUp(); + $this->drupalCreateContentType(['type' => 'page']); + + $this->drupalLogin($this->drupalCreateUser([ + 'administer filters', + 'create page content', + 'edit own page content', + ])); + $current_user_roles = $this->loggedInUser->getRoles(TRUE); // Create text format, text editor and text fields for CKEditor 5 and 4. diff --git a/web/core/modules/ckeditor5/ckeditor5.ckeditor5.yml b/web/core/modules/ckeditor5/ckeditor5.ckeditor5.yml index b3ef9da583489548132d58b01e285ce1fd960b19..afcdbd7a7ded4b7fb08c01fd5a31d44c340450da 100644 --- a/web/core/modules/ckeditor5/ckeditor5.ckeditor5.yml +++ b/web/core/modules/ckeditor5/ckeditor5.ckeditor5.yml @@ -496,18 +496,51 @@ ckeditor5_image: - image.Image - image.ImageToolbar - drupalImage.DrupalImage + - drupalImage.DrupalInsertImage config: image: toolbar: [drupalImageAlternativeText] drupal: label: Image + class: \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Image library: ckeditor5/drupal.ckeditor5.image + admin_library: ckeditor5/admin.image elements: - <img> - - <img src alt data-entity-uuid data-entity-type height width> + - <img src alt height width> + toolbar_items: + drupalInsertImage: + label: Image + conditions: + toolbarItem: drupalInsertImage + +ckeditor5_imageUpload: + ckeditor5: + plugins: + - image.ImageUpload + - drupalImage.DrupalImageUpload + config: + image: + upload: + types: ["jpeg", "png", "gif"] + drupal: + label: Image Upload + elements: + - <img data-entity-uuid data-entity-type> conditions: - toolbarItem: uploadImage imageUploadStatus: true + plugins: [ckeditor5_image] + +ckeditor5_imageUrl: + ckeditor5: + plugins: + - image.ImageInsertUI + drupal: + label: Image URL + elements: false + conditions: + imageUploadStatus: false + plugins: [ckeditor5_image] ckeditor5_imageResize: ckeditor5: @@ -542,9 +575,8 @@ ckeditor5_imageCaption: elements: - <img data-caption> conditions: - toolbarItem: uploadImage - imageUploadStatus: true filter: filter_caption + plugins: [ckeditor5_image] ckeditor5_imageAlign: ckeditor5: @@ -577,9 +609,8 @@ ckeditor5_imageAlign: elements: - <img data-align> conditions: - toolbarItem: uploadImage - imageUploadStatus: true filter: filter_align + plugins: [ckeditor5_image] ckeditor5_indent: ckeditor5: diff --git a/web/core/modules/ckeditor5/ckeditor5.libraries.yml b/web/core/modules/ckeditor5/ckeditor5.libraries.yml index 27d2fa3ca3f4619a4db6e380224b7ee402ed0e46..33c2008b48c67ee97c1d388cdcabcf88d1a177b0 100644 --- a/web/core/modules/ckeditor5/ckeditor5.libraries.yml +++ b/web/core/modules/ckeditor5/ckeditor5.libraries.yml @@ -1,5 +1,3 @@ -# cspell:ignore imageupload - ckeditor5.language: css: component: @@ -20,6 +18,7 @@ drupal.ckeditor5: css: theme: css/quickedit.css: { } + css/editor.css: { } dependencies: - core/jquery - core/once @@ -181,11 +180,6 @@ admin.alignment: theme: css/alignment.admin.css: { } -admin.imageupload: - css: - theme: - css/imageupload.admin.css: { } - admin.indent: css: theme: @@ -226,3 +220,8 @@ admin.codeBlock: css: theme: css/code-block.admin.css: { } + +admin.image: + css: + theme: + css/image.admin.css: { } diff --git a/web/core/modules/ckeditor5/ckeditor5.module b/web/core/modules/ckeditor5/ckeditor5.module index 783a3e3b2ebd7230f177494d3d9145959fde893b..8d05e3c900493f67298c6a122ed7d1270f216bb8 100644 --- a/web/core/modules/ckeditor5/ckeditor5.module +++ b/web/core/modules/ckeditor5/ckeditor5.module @@ -50,10 +50,8 @@ function ckeditor5_help($route_name, RouteMatchInterface $route_match) { $output .= '<dt>' . t('Generating accessible content') . '</dt>'; $output .= '<dd>'; $output .= '<ul>'; - // @todo Uncomment this in https://www.drupal.org/project/ckeditor5/issues/3230230 - // $output .= '<li>' . t('HTML tables can be created with table headers and caption/summary elements.') . '</li>'; - // @todo Uncomment this in https://www.drupal.org/project/ckeditor5/issues/3222757 - // $output .= '<li>' . t('Alt text is required by default on images added through CKEditor (note that this can be overridden).') . '</li>'; + $output .= '<li>' . t('HTML tables can be created with table headers and caption/summary elements.') . '</li>'; + $output .= '<li>' . t('Alt text is required by default on images added through CKEditor (note that this can be overridden).') . '</li>'; $output .= '<li>' . t('Semantic HTML5 figure/figcaption are available to add captions to images.') . '</li>'; $output .= '<li>' . t('To support multilingual page content, CKEditor 5 can be configured to include a language button in the toolbar.') . '</li>'; $output .= '</ul>'; @@ -643,7 +641,7 @@ function _ckeditor5_theme_css($theme = NULL): array { } if (isset($theme) && $theme_path = \Drupal::service('extension.list.theme')->getPath($theme)) { $info = \Drupal::service('extension.list.theme')->getExtensionInfo($theme); - if (isset($info['ckeditor5-stylesheets'])) { + if (isset($info['ckeditor5-stylesheets']) && $info['ckeditor5-stylesheets'] !== FALSE) { $css = $info['ckeditor5-stylesheets']; foreach ($css as $key => $url) { // CSS url is external or relative to Drupal root. diff --git a/web/core/modules/ckeditor5/ckeditor5.post_update.php b/web/core/modules/ckeditor5/ckeditor5.post_update.php index bb82debc765cee74a579fd3e21f0bea2aad8111c..1e56e029c1101d61dcf54b79413abd6c25b08468 100644 --- a/web/core/modules/ckeditor5/ckeditor5.post_update.php +++ b/web/core/modules/ckeditor5/ckeditor5.post_update.php @@ -5,6 +5,7 @@ * Post update functions for CKEditor 5. */ +use Drupal\ckeditor5\HTMLRestrictions; use Drupal\Core\Config\Entity\ConfigEntityUpdater; use Drupal\editor\Entity\Editor; @@ -51,3 +52,51 @@ function ckeditor5_post_update_alignment_buttons(&$sandbox = []) { $config_entity_updater->update($sandbox, 'editor', $callback); } + +/** + * The image toolbar item changed from `uploadImage` to `drupalInsertImage`. + */ +function ckeditor5_post_update_image_toolbar_item(&$sandbox = []) { + $config_entity_updater = \Drupal::classResolver(ConfigEntityUpdater::class); + + $callback = function (Editor $editor) { + // Only try to update editors using CKEditor 5. + if ($editor->getEditor() !== 'ckeditor5') { + return FALSE; + } + + $needs_update = FALSE; + // Only update if the editor is using the `uploadImage` toolbar item. + $settings = $editor->getSettings(); + if (is_array($settings['toolbar']['items']) && in_array('uploadImage', $settings['toolbar']['items'], TRUE)) { + // Replace `uploadImage` with `drupalInsertImage`. + $settings['toolbar']['items'] = str_replace('uploadImage', 'drupalInsertImage', $settings['toolbar']['items']); + // `<img data-entity-uuid data-entity-type>` are implicitly supported when + // uploads are enabled as the attributes are necessary for upload + // functionality. If uploads aren't enabled, these attributes must still + // be supported to ensure existing content that may have them (despite + // uploads being disabled) remains editable. In this use case, the + // attributes are added to the `ckeditor5_sourceEditing` allowed tags. + if (!$editor->getImageUploadSettings()['status']) { + // Add `sourceEditing` toolbar item if it does not already exist. + if (!in_array('sourceEditing', $settings['toolbar']['items'], TRUE)) { + $settings['toolbar']['items'][] = '|'; + $settings['toolbar']['items'][] = 'sourceEditing'; + // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\SourceEditing::defaultConfiguration() + $settings['plugins']['ckeditor5_sourceEditing'] = ['allowed_tags' => []]; + } + // Update configuration. + $settings['plugins']['ckeditor5_sourceEditing']['allowed_tags'] = HTMLRestrictions::fromString(implode(' ', $settings['plugins']['ckeditor5_sourceEditing']['allowed_tags'])) + ->merge(HTMLRestrictions::fromString('<img data-entity-uuid data-entity-type>')) + ->toCKEditor5ElementsArray(); + } + $needs_update = TRUE; + } + if ($needs_update) { + $editor->setSettings($settings); + } + return $needs_update; + }; + + $config_entity_updater->update($sandbox, 'editor', $callback); +} diff --git a/web/core/modules/ckeditor5/css/editor.css b/web/core/modules/ckeditor5/css/editor.css new file mode 100644 index 0000000000000000000000000000000000000000..5c28250f972547f51855d7c4150bccd5211cfe0f --- /dev/null +++ b/web/core/modules/ckeditor5/css/editor.css @@ -0,0 +1,10 @@ +/** + * @file + * Styles for the CKEditor 5 editor. + */ + +/* Convert low opacity icons to full opacity. */ +.ck-button:not(.ck-disabled) .ck-icon * { + opacity: 1 !important; + fill-opacity: 1 !important; +} diff --git a/web/core/modules/ckeditor5/css/image.admin.css b/web/core/modules/ckeditor5/css/image.admin.css new file mode 100644 index 0000000000000000000000000000000000000000..78cf8ba312e46c366f931d40e4fb6fd7a6388aa3 --- /dev/null +++ b/web/core/modules/ckeditor5/css/image.admin.css @@ -0,0 +1,3 @@ +.ckeditor5-toolbar-button-drupalInsertImage { + background-image: url(../icons/image.svg); +} diff --git a/web/core/modules/ckeditor5/css/imageupload.admin.css b/web/core/modules/ckeditor5/css/imageupload.admin.css deleted file mode 100644 index 5d4f9549b0fd3a48d43a3332857fb4013812876a..0000000000000000000000000000000000000000 --- a/web/core/modules/ckeditor5/css/imageupload.admin.css +++ /dev/null @@ -1,4 +0,0 @@ -/* cspell:ignore imageupload */ -.ckeditor5-toolbar-button-uploadImage { - background-image: url(../icons/imageupload.svg); -} diff --git a/web/core/modules/ckeditor5/icons/imageupload.svg b/web/core/modules/ckeditor5/icons/image.svg similarity index 100% rename from web/core/modules/ckeditor5/icons/imageupload.svg rename to web/core/modules/ckeditor5/icons/image.svg diff --git a/web/core/modules/ckeditor5/js/build/ckeditor5.types.jsdoc b/web/core/modules/ckeditor5/js/build/ckeditor5.types.jsdoc index 64d6266a285bccd1843281c78819dccb5b80920c..02a98b8120d6f34d42cfdccce28a27e9255a3fef 100644 --- a/web/core/modules/ckeditor5/js/build/ckeditor5.types.jsdoc +++ b/web/core/modules/ckeditor5/js/build/ckeditor5.types.jsdoc @@ -478,24 +478,12 @@ * @typedef {module:engine/dataprocessor/basichtmlwriter} module:engine/dataprocessor/basichtmlwriter~BasicHtmlWriter */ -/** - * Declared in file @ckeditor/ckeditor5-engine/src/dataprocessor/dataprocessor.jsdoc - * - * @typedef {module:engine/dataprocessor/dataprocessor} module:engine/dataprocessor/dataprocessor~DataProcessor - */ - /** * Declared in file @ckeditor/ckeditor5-engine/src/dataprocessor/htmldataprocessor.js * * @typedef {module:engine/dataprocessor/htmldataprocessor} module:engine/dataprocessor/htmldataprocessor~HtmlDataProcessor */ -/** - * Declared in file @ckeditor/ckeditor5-engine/src/dataprocessor/htmlwriter.js - * - * @typedef {module:engine/dataprocessor/htmlwriter} module:engine/dataprocessor/htmlwriter~HtmlWriter - */ - /** * Declared in file @ckeditor/ckeditor5-engine/src/dataprocessor/xmldataprocessor.js * @@ -550,12 +538,6 @@ * @typedef {module:engine/model/history} module:engine/model/history~History */ -/** - * Declared in file @ckeditor/ckeditor5-engine/src/model/item.jsdoc - * - * @typedef {module:engine/model/item} module:engine/model/item~Item - */ - /** * Declared in file @ckeditor/ckeditor5-engine/src/model/liveposition.js * @@ -664,18 +646,6 @@ * @typedef {module:engine/model/operation/splitoperation} module:engine/model/operation/splitoperation~SplitOperation */ -/** - * Declared in file @ckeditor/ckeditor5-engine/src/model/operation/transform.js - * - * @typedef {module:engine/model/operation/transform} module:engine/model/operation/transform~TransformationContext - */ - -/** - * Declared in file @ckeditor/ckeditor5-engine/src/model/operation/utils.js - * - * @typedef {module:engine/model/operation/utils} module:engine/model/operation/utils~TextProxy - */ - /** * Declared in file @ckeditor/ckeditor5-engine/src/model/position.js * @@ -814,30 +784,12 @@ * @typedef {module:engine/view/element} module:engine/view/element~Element */ -/** - * Declared in file @ckeditor/ckeditor5-engine/src/view/elementdefinition.jsdoc - * - * @typedef {module:engine/view/elementdefinition} module:engine/view/elementdefinition~ElementDefinition - */ - /** * Declared in file @ckeditor/ckeditor5-engine/src/view/emptyelement.js * * @typedef {module:engine/view/emptyelement} module:engine/view/emptyelement~EmptyElement */ -/** - * Declared in file @ckeditor/ckeditor5-engine/src/view/item.jsdoc - * - * @typedef {module:engine/view/item} module:engine/view/item~Item - */ - -/** - * Declared in file @ckeditor/ckeditor5-engine/src/view/matcher.js - * - * @typedef {module:engine/view/matcher} module:engine/view/matcher~Matcher - */ - /** * Declared in file @ckeditor/ckeditor5-engine/src/view/node.js * @@ -1000,6 +952,12 @@ * @typedef {module:engine/view/treewalker} module:engine/view/treewalker~TreeWalker */ +/** + * Declared in file @ckeditor/ckeditor5-engine/src/view/typecheckable.js + * + * @typedef {module:engine/view/typecheckable} module:engine/view/typecheckable~TypeCheckable + */ + /** * Declared in file @ckeditor/ckeditor5-engine/src/view/uielement.js * @@ -1942,6 +1900,12 @@ * @typedef {module:special-characters/ui/specialcharactersnavigationview} module:special-characters/ui/specialcharactersnavigationview~SpecialCharactersNavigationView */ +/** + * Declared in file @ckeditor/ckeditor5-special-characters/src/ui/specialcharactersview.js + * + * @typedef {module:special-characters/ui/specialcharactersview} module:special-characters/ui/specialcharactersview~SpecialCharactersView + */ + /** * Declared in file @ckeditor/ckeditor5-style/src/style.js * @@ -2236,6 +2200,18 @@ * @typedef {module:table/tablecolumnresize/tablecolumnresizeediting} module:table/tablecolumnresize/tablecolumnresizeediting~TableColumnResizeEditing */ +/** + * Declared in file @ckeditor/ckeditor5-table/src/tablecolumnresize/tablecolumnwidthscommand.js + * + * @typedef {module:table/tablecolumnresize/tablecolumnwidthscommand} module:table/tablecolumnresize/tablecolumnwidthscommand~TableColumnWidthsCommand + */ + +/** + * Declared in file @ckeditor/ckeditor5-table/src/tablecolumnresize/tablewidthresizecommand.js + * + * @typedef {module:table/tablecolumnresize/tablewidthresizecommand} module:table/tablecolumnresize/tablewidthresizecommand~TableWidthResizeCommand + */ + /** * Declared in file @ckeditor/ckeditor5-table/src/tableediting.js * @@ -2470,6 +2446,12 @@ * @typedef {module:typing/utils/inlinehighlight} module:typing/utils/inlinehighlight~inlineHighlight */ +/** + * Declared in file @ckeditor/ckeditor5-ui/src/bindings/addkeyboardhandlingforgrid.js + * + * @typedef {module:ui/bindings/addkeyboardhandlingforgrid} module:ui/bindings/addkeyboardhandlingforgrid~addKeyboardHandlingForGrid + */ + /** * Declared in file @ckeditor/ckeditor5-ui/src/bindings/clickoutsidehandler.js * @@ -2734,12 +2716,6 @@ * @typedef {module:ui/toolbar/block/blocktoolbar} module:ui/toolbar/block/blocktoolbar~BlockToolbar */ -/** - * Declared in file @ckeditor/ckeditor5-ui/src/toolbar/enabletoolbarkeyboardfocus.js - * - * @typedef {module:ui/toolbar/enabletoolbarkeyboardfocus} module:ui/toolbar/enabletoolbarkeyboardfocus~enableToolbarKeyboardFocus - */ - /** * Declared in file @ckeditor/ckeditor5-ui/src/toolbar/normalizetoolbarconfig.js * @@ -2765,9 +2741,9 @@ */ /** - * Declared in file @ckeditor/ckeditor5-ui/src/tooltip/tooltipview.js + * Declared in file @ckeditor/ckeditor5-ui/src/tooltipmanager.js * - * @typedef {module:ui/tooltip/tooltipview} module:ui/tooltip/tooltipview~TooltipView + * @typedef {module:ui/tooltipmanager} module:ui/tooltipmanager~TooltipManager */ /** @@ -2938,6 +2914,12 @@ * @typedef {module:utils/dom/getpositionedancestor} module:utils/dom/getpositionedancestor~getPositionedAncestor */ +/** + * Declared in file @ckeditor/ckeditor5-utils/src/dom/global.js + * + * @typedef {module:utils/dom/global} module:utils/dom/global~global + */ + /** * Declared in file @ckeditor/ckeditor5-utils/src/dom/indexof.js * diff --git a/web/core/modules/ckeditor5/js/build/drupalImage.js b/web/core/modules/ckeditor5/js/build/drupalImage.js index e1efb4cf08dcd2fd2e8b622ea59a4183b32be9f2..63b5661f619039057a3eb25b5f7ffd0646c17704 100644 --- a/web/core/modules/ckeditor5/js/build/drupalImage.js +++ b/web/core/modules/ckeditor5/js/build/drupalImage.js @@ -1 +1 @@ -!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.CKEditor5=e():(t.CKEditor5=t.CKEditor5||{},t.CKEditor5.drupalImage=e())}(self,(function(){return function(){var t={"ckeditor5/src/core.js":function(t,e,i){t.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/ui.js":function(t,e,i){t.exports=i("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/upload.js":function(t,e,i){t.exports=i("dll-reference CKEditor5.dll")("./src/upload.js")},"ckeditor5/src/utils.js":function(t,e,i){t.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"dll-reference CKEditor5.dll":function(t){"use strict";t.exports=CKEditor5.dll}},e={};function i(r){var s=e[r];if(void 0!==s)return s.exports;var n=e[r]={exports:{}};return t[r](n,n.exports,i),n.exports}i.d=function(t,e){for(var r in e)i.o(e,r)&&!i.o(t,r)&&Object.defineProperty(t,r,{enumerable:!0,get:e[r]})},i.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)};var r={};return function(){"use strict";i.d(r,{default:function(){return E}});var t=i("ckeditor5/src/core.js");function e(t,e,i){if(e.attributes)for(const[r,s]of Object.entries(e.attributes))t.setAttribute(r,s,i);e.styles&&t.setStyle(e.styles,i),e.classes&&t.addClass(e.classes,i)}function s(t){return t.createEmptyElement("img")}function n(t){const e=parseFloat(t);return!Number.isNaN(e)&&t===String(e)}const o=[{modelValue:"alignCenter",dataValue:"center"},{modelValue:"alignRight",dataValue:"right"},{modelValue:"alignLeft",dataValue:"left"}];class a extends t.Plugin{static get requires(){return["ImageUtils"]}static get pluginName(){return"DrupalImageEditing"}init(){const{editor:t}=this,{conversion:i}=t,{schema:r}=t.model;r.isRegistered("imageInline")&&r.extend("imageInline",{allowAttributes:["dataEntityUuid","dataEntityType","isDecorative","width","height"]}),r.isRegistered("imageBlock")&&r.extend("imageBlock",{allowAttributes:["dataEntityUuid","dataEntityType","isDecorative","width","height"]}),i.for("upcast").add(function(t){function e(e,i,r){const{viewItem:s}=i,{writer:n,consumable:a,safeInsert:l,updateConversionResult:u,schema:c}=r,d=[];let m;if(!a.test(s,{name:!0,attributes:"src"}))return;const g=a.test(s,{name:!0,attributes:"data-caption"});if(m=c.checkChild(i.modelCursor,"imageInline")&&!g?n.createElement("imageInline",{src:s.getAttribute("src")}):n.createElement("imageBlock",{src:s.getAttribute("src")}),t.plugins.has("ImageStyleEditing")&&a.test(s,{name:!0,attributes:"data-align"})){const t=s.getAttribute("data-align"),e=o.find((e=>e.dataValue===t));e&&(n.setAttribute("imageStyle",e.modelValue,m),d.push("data-align"))}if(g){const e=n.createElement("caption"),i=t.data.processor.toView(s.getAttribute("data-caption")),o=n.createDocumentFragment();r.consumable.constructor.createFrom(i,r.consumable),r.convertChildren(i,o);for(const t of Array.from(o.getChildren()))n.append(t,e);n.append(e,m),d.push("data-caption")}a.test(s,{name:!0,attributes:"data-entity-uuid"})&&(n.setAttribute("dataEntityUuid",s.getAttribute("data-entity-uuid"),m),d.push("data-entity-uuid")),a.test(s,{name:!0,attributes:"data-entity-type"})&&(n.setAttribute("dataEntityType",s.getAttribute("data-entity-type"),m),d.push("data-entity-type")),l(m,i.modelCursor)&&(a.consume(s,{name:!0,attributes:d}),u(m,i))}return t=>{t.on("element:img",e,{priority:"high"})}}(t)).attributeToAttribute({view:{name:"img",key:"width"},model:{key:"width",value:t=>n(t.getAttribute("width"))?`${t.getAttribute("width")}px`:`${t.getAttribute("width")}`}}).attributeToAttribute({view:{name:"img",key:"height"},model:{key:"height",value:t=>n(t.getAttribute("height"))?`${t.getAttribute("height")}px`:`${t.getAttribute("height")}`}}),i.for("downcast").add(function(){function t(t,e,i){const{item:r}=e,{consumable:s,writer:n}=i;if(!s.consume(r,t.name))return;const o=i.mapper.toViewElement(r),a=Array.from(o.getChildren()).find((t=>"img"===t.name));n.setAttribute("data-entity-uuid",e.attributeNewValue,a||o)}return e=>{e.on("attribute:dataEntityUuid",t)}}()).add(function(){function t(t,e,i){const{item:r}=e,{consumable:s,writer:n}=i;if(!s.consume(r,t.name))return;const o=i.mapper.toViewElement(r),a=Array.from(o.getChildren()).find((t=>"img"===t.name));n.setAttribute("data-entity-type",e.attributeNewValue,a||o)}return e=>{e.on("attribute:dataEntityType",t)}}()),i.for("dataDowncast").add(function(t){return e=>{e.on("insert:caption",((e,i,r)=>{const{consumable:s,writer:n,mapper:o}=r;if(!t.plugins.get("ImageUtils").isImage(i.item.parent)||!s.consume(i.item,"insert"))return;const a=t.model.createRangeIn(i.item),l=n.createDocumentFragment();o.bindElements(i.item,l);for(const{item:e}of Array.from(a)){const i={item:e,range:t.model.createRangeOn(e)},s=`insert:${e.name||"$text"}`;t.data.downcastDispatcher.fire(s,i,r);for(const s of e.getAttributeKeys())Object.assign(i,{attributeKey:s,attributeOldValue:null,attributeNewValue:i.item.getAttribute(s)}),t.data.downcastDispatcher.fire(`attribute:${s}`,i,r)}for(const t of n.createRangeIn(l).getItems())o.unbindViewElement(t);o.unbindViewElement(l);const u=t.data.processor.toData(l);if(u){const t=o.toViewElement(i.item.parent);n.setAttribute("data-caption",u,t)}}),{priority:"high"})}}(t)).elementToElement({model:"imageBlock",view:(t,{writer:e})=>s(e),converterPriority:"high"}).elementToElement({model:"imageInline",view:(t,{writer:e})=>s(e),converterPriority:"high"}).add(function(){function t(t,e,i){const{item:r}=e,{consumable:s,writer:n}=i,a=o.find((t=>t.modelValue===e.attributeNewValue));if(!a||!s.consume(r,t.name))return;const l=i.mapper.toViewElement(r),u=Array.from(l.getChildren()).find((t=>"img"===t.name));n.setAttribute("data-align",a.dataValue,u||l)}return e=>{e.on("attribute:imageStyle",t,{priority:"high"})}}()).add(function(){function t(t,e,i){const{item:r}=e,{consumable:s,writer:n}=i;if(!s.consume(r,t.name))return;const o=i.mapper.toViewElement(r),a=Array.from(o.getChildren()).find((t=>"img"===t.name));n.setAttribute("width",e.attributeNewValue.replace("px",""),a||o)}return e=>{e.on("attribute:width:imageInline",t,{priority:"high"}),e.on("attribute:width:imageBlock",t,{priority:"high"})}}()).add(function(){function t(t,e,i){const{item:r}=e,{consumable:s,writer:n}=i;if(!s.consume(r,t.name))return;const o=i.mapper.toViewElement(r),a=Array.from(o.getChildren()).find((t=>"img"===t.name));n.setAttribute("height",e.attributeNewValue.replace("px",""),a||o)}return e=>{e.on("attribute:height:imageInline",t,{priority:"high"}),e.on("attribute:height:imageBlock",t,{priority:"high"})}}()).add(function(){function t(t,i,r){if(!r.consumable.consume(i.item,t.name))return;const s=r.mapper.toViewElement(i.item),n=r.writer,o=n.createContainerElement("a",{href:i.attributeNewValue});n.insert(n.createPositionBefore(s),o),n.move(n.createRangeOn(s),n.createPositionAt(o,0)),r.consumable.consume(i.item,"attribute:htmlLinkAttributes:imageBlock")&&e(r.writer,i.item.getAttribute("htmlLinkAttributes"),o)}return e=>{e.on("attribute:linkHref:imageBlock",t,{priority:"high"})}}())}}class l extends t.Command{refresh(){const t=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!t,this.isEnabled&&t.hasAttribute("alt")?this.value=t.getAttribute("alt"):this.value=!1}execute(t){const e=this.editor,i=e.plugins.get("ImageUtils"),r=e.model,s=i.getClosestSelectedImageElement(r.document.selection);r.change((e=>{e.setAttribute("alt",t.newValue,s)}))}}class u extends t.Plugin{static get requires(){return["ImageUtils"]}static get pluginName(){return"DrupalImageAlternativeTextEditing"}constructor(t){super(t),this._missingAltTextViewReferences=new Set}init(){const t=this.editor;t.conversion.for("editingDowncast").add(this._imageEditingDowncastConverter("attribute:alt",t)).add(this._imageEditingDowncastConverter("attribute:src",t)),t.commands.add("imageTextAlternative",new l(this.editor)),t.editing.view.on("render",(()=>{for(const t of this._missingAltTextViewReferences)t.button.element.isConnected||(t.destroy(),this._missingAltTextViewReferences.delete(t))}))}_imageEditingDowncastConverter(t){const e=(t,e,i)=>{const r=this.editor;if(!r.plugins.get("ImageUtils").isImage(e.item))return;const s=i.mapper.toViewElement(e.item),n=Array.from(s.getChildren()).find((t=>t.getCustomProperty("drupalImageMissingAltWarning")));if(e.item.hasAttribute("alt"))return void(n&&i.writer.remove(n));if(n)return;const o=r.ui.componentFactory.create("drupalImageAlternativeTextMissing");o.listenTo(r.ui,"update",(()=>{const t=r.model.document.selection.getFirstRange(),i=r.model.createRangeOn(e.item);o.set({isSelected:t.containsRange(i)||t.isIntersecting(i)})})),o.render(),this._missingAltTextViewReferences.add(o);const a=i.writer.createUIElement("span",{class:"image-alternative-text-missing-wrapper"},(function(t){const e=this.toDomElement(t);return e.appendChild(o.element),e}));i.writer.setCustomProperty("drupalImageMissingAltWarning",!0,a),i.writer.insert(i.writer.createPositionAt(s,"end"),a)};return i=>{i.on(t,e,{priority:"low"})}}}var c=i("ckeditor5/src/ui.js");function d(t){const e=t.plugins.get("ContextualBalloon");if(t.plugins.get("ImageUtils").getClosestSelectedImageWidget(t.editing.view.document.selection)){const i=m(t);e.updatePosition(i)}}function m(t){const e=t.editing.view,i=c.BalloonPanelView.defaultPositions,r=t.plugins.get("ImageUtils");return{target:e.domConverter.mapViewToDom(r.getClosestSelectedImageWidget(e.document.selection)),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast,i.viewportStickyNorth]}}var g=i("ckeditor5/src/utils.js");class h extends c.View{constructor(e){super(e),this.focusTracker=new g.FocusTracker,this.keystrokes=new g.KeystrokeHandler,this.decorativeToggle=this._decorativeToggleView(),this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(Drupal.t("Save"),t.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.saveButtonView.bind("isEnabled").to(this.decorativeToggle,"isOn",this.labeledInput,"isEmpty",((t,e)=>t||!e)),this.cancelButtonView=this._createButton(Drupal.t("Cancel"),t.icons.cancel,"ck-button-cancel","cancel"),this._focusables=new c.ViewCollection,this._focusCycler=new c.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-text-alternative-form--with-decorative-toggle","ck-responsive-form"],tabindex:"-1"},children:[{tag:"div",attributes:{class:["ck","ck-text-alternative-form__decorative-toggle"]},children:[this.decorativeToggle]},this.labeledInput,this.saveButtonView,this.cancelButtonView]}),(0,c.injectCssTransitionDisabler)(this)}render(){super.render(),this.keystrokes.listenTo(this.element),(0,c.submitHandler)({view:this}),[this.decorativeToggle,this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((t=>{this._focusables.add(t),this.focusTracker.add(t.element)}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createButton(t,e,i,r){const s=new c.ButtonView(this.locale);return s.set({label:t,icon:e,tooltip:!0}),s.extendTemplate({attributes:{class:i}}),r&&s.delegate("execute").to(this,r),s}_createLabeledInputView(){const t=new c.LabeledFieldView(this.locale,c.createLabeledInputText);return t.bind("class").to(this.decorativeToggle,"isOn",(t=>t?"ck-hidden":"")),t.label=Drupal.t("Text alternative"),t}_decorativeToggleView(){const t=new c.SwitchButtonView(this.locale);return t.set({withText:!0,label:Drupal.t("Decorative image")}),t.on("execute",(()=>{t.set("isOn",!t.isOn)})),t}}class p extends c.View{constructor(t){super(t);const e=this.bindTemplate;this.set("isVisible"),this.set("isSelected");const i=Drupal.t("Add missing alternative text");this.button=new c.ButtonView(t),this.button.set({label:i,tooltip:!1,withText:!0}),this.setTemplate({tag:"span",attributes:{class:["image-alternative-text-missing",e.to("isVisible",(t=>t?"":"ck-hidden"))],title:i},children:[this.button]})}}class f extends t.Plugin{static get requires(){return[c.ContextualBalloon]}static get pluginName(){return"DrupalImageTextAlternativeUI"}init(){if(this._createButton(),this._createForm(),this._createMissingAltTextComponent(),this.editor.plugins.has("ImageUploadEditing")){const t=this.editor.plugins.get("ImageUploadEditing"),e=this.editor.plugins.get("ImageUtils");t.on("uploadComplete",(()=>{e.getClosestSelectedImageWidget(this.editor.editing.view.document.selection)&&this._showForm()}))}}_createMissingAltTextComponent(){this.editor.ui.componentFactory.add("drupalImageAlternativeTextMissing",(t=>{const e=new p(t);return e.listenTo(e.button,"execute",(()=>{this._isInBalloon&&this._balloon.remove(this._form),this._showForm()})),e.listenTo(this.editor.ui,"update",(()=>{e.set({isVisible:!this._isVisible||!e.isSelected})})),e}))}destroy(){super.destroy(),this._form.destroy()}_createButton(){const e=this.editor;e.ui.componentFactory.add("drupalImageAlternativeText",(i=>{const r=e.commands.get("imageTextAlternative"),s=new c.ButtonView(i);return s.set({label:Drupal.t("Change image alternative text"),icon:t.icons.lowVision,tooltip:!0}),s.bind("isEnabled").to(r,"isEnabled"),this.listenTo(s,"execute",(()=>{this._showForm()})),s}))}_createForm(){const t=this.editor,e=t.editing.view.document,i=t.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new h(t.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{t.execute("imageTextAlternative",{newValue:this._form.decorativeToggle.isOn?"":this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this.listenTo(this._form.decorativeToggle,"execute",(()=>{d(t)})),this._form.keystrokes.set("Esc",((t,e)=>{this._hideForm(!0),e()})),this.listenTo(t.ui,"update",(()=>{i.getClosestSelectedImageWidget(e.selection)?this._isVisible&&d(t):this._hideForm(!0)})),(0,c.clickOutsideHandler)({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const t=this.editor,e=t.commands.get("imageTextAlternative"),i=this._form.decorativeToggle,r=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:m(t)}),i.isOn=""===e.value,r.fieldView.element.value=e.value||"",r.fieldView.value=r.fieldView.element.value,i.isOn?i.focus():r.fieldView.select(),this._form.enableCssTransitions()}_hideForm(t){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),t&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class b extends t.Plugin{static get requires(){return[u,f]}static get pluginName(){return"DrupalImageAlternativeText"}}class w extends t.Plugin{static get requires(){return[a,b]}static get pluginName(){return"DrupalImage"}}var v=w;class y extends t.Plugin{init(){const{editor:t}=this;t.plugins.get("ImageUploadEditing").on("uploadComplete",((e,{data:i,imageElement:r})=>{t.model.change((t=>{t.setAttribute("dataEntityUuid",i.response.uuid,r),t.setAttribute("dataEntityType",i.response.entity_type,r)}))}))}static get pluginName(){return"DrupalImageUploadEditing"}}var x=i("ckeditor5/src/upload.js");class _{constructor(t,e){this.loader=t,this.options=e}upload(){return this.loader.file.then((t=>new Promise(((e,i)=>{this._initRequest(),this._initListeners(e,i,t),this._sendRequest(t)}))))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){this.xhr=new XMLHttpRequest,this.xhr.open("POST",this.options.uploadUrl,!0),this.xhr.responseType="json"}_initListeners(t,e,i){const r=this.xhr,s=this.loader,n=`Couldn't upload file: ${i.name}.`;r.addEventListener("error",(()=>e(n))),r.addEventListener("abort",(()=>e())),r.addEventListener("load",(()=>{const i=r.response;if(!i||i.error)return e(i&&i.error&&i.error.message?i.error.message:n);t({response:i,urls:{default:i.url}})})),r.upload&&r.upload.addEventListener("progress",(t=>{t.lengthComputable&&(s.uploadTotal=t.total,s.uploaded=t.loaded)}))}_sendRequest(t){const e=this.options.headers||{},i=this.options.withCredentials||!1;Object.keys(e).forEach((t=>{this.xhr.setRequestHeader(t,e[t])})),this.xhr.withCredentials=i;const r=new FormData;r.append("upload",t),this.xhr.send(r)}}class V extends t.Plugin{static get requires(){return[x.FileRepository]}static get pluginName(){return"DrupalFileRepository"}init(){const t=this.editor.config.get("drupalImageUpload");t&&(t.uploadUrl?this.editor.plugins.get(x.FileRepository).createUploadAdapter=e=>new _(e,t):(0,g.logWarning)("simple-upload-adapter-missing-uploadurl"))}}class A extends t.Plugin{static get requires(){return[V,y]}static get pluginName(){return"DrupalImageUpload"}}var E={DrupalImage:v,DrupalImageUpload:A}}(),r=r.default}()})); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.CKEditor5=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.drupalImage=t())}(self,(function(){return function(){var e={"ckeditor5/src/core.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/ui.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/upload.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/upload.js")},"ckeditor5/src/utils.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"dll-reference CKEditor5.dll":function(e){"use strict";e.exports=CKEditor5.dll}},t={};function i(r){var n=t[r];if(void 0!==n)return n.exports;var s=t[r]={exports:{}};return e[r](s,s.exports,i),s.exports}i.d=function(e,t){for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var r={};return function(){"use strict";i.d(r,{default:function(){return T}});var e=i("ckeditor5/src/core.js");function t(e,t,i){if(t.attributes)for(const[r,n]of Object.entries(t.attributes))e.setAttribute(r,n,i);t.styles&&e.setStyle(t.styles,i),t.classes&&e.addClass(t.classes,i)}function n(e){return e.createEmptyElement("img")}function s(e){const t=parseFloat(e);return!Number.isNaN(t)&&e===String(t)}const o=[{modelValue:"alignCenter",dataValue:"center"},{modelValue:"alignRight",dataValue:"right"},{modelValue:"alignLeft",dataValue:"left"}];class a extends e.Plugin{static get requires(){return["ImageUtils"]}static get pluginName(){return"DrupalImageEditing"}init(){const{editor:e}=this,{conversion:i}=e,{schema:r}=e.model;r.isRegistered("imageInline")&&r.extend("imageInline",{allowAttributes:["dataEntityUuid","dataEntityType","isDecorative","width","height"]}),r.isRegistered("imageBlock")&&r.extend("imageBlock",{allowAttributes:["dataEntityUuid","dataEntityType","isDecorative","width","height"]}),i.for("upcast").add(function(e){function t(t,i,r){const{viewItem:n}=i,{writer:s,consumable:a,safeInsert:l,updateConversionResult:u,schema:c}=r,d=[];let m;if(!a.test(n,{name:!0,attributes:"src"}))return;const g=a.test(n,{name:!0,attributes:"data-caption"});if(m=c.checkChild(i.modelCursor,"imageInline")&&!g?s.createElement("imageInline",{src:n.getAttribute("src")}):s.createElement("imageBlock",{src:n.getAttribute("src")}),e.plugins.has("ImageStyleEditing")&&a.test(n,{name:!0,attributes:"data-align"})){const e=n.getAttribute("data-align"),t=o.find((t=>t.dataValue===e));t&&(s.setAttribute("imageStyle",t.modelValue,m),d.push("data-align"))}if(g){const t=s.createElement("caption"),i=e.data.processor.toView(n.getAttribute("data-caption")),o=s.createDocumentFragment();r.consumable.constructor.createFrom(i,r.consumable),r.convertChildren(i,o);for(const e of Array.from(o.getChildren()))s.append(e,t);s.append(t,m),d.push("data-caption")}a.test(n,{name:!0,attributes:"data-entity-uuid"})&&(s.setAttribute("dataEntityUuid",n.getAttribute("data-entity-uuid"),m),d.push("data-entity-uuid")),a.test(n,{name:!0,attributes:"data-entity-type"})&&(s.setAttribute("dataEntityType",n.getAttribute("data-entity-type"),m),d.push("data-entity-type")),l(m,i.modelCursor)&&(a.consume(n,{name:!0,attributes:d}),u(m,i))}return e=>{e.on("element:img",t,{priority:"high"})}}(e)).attributeToAttribute({view:{name:"img",key:"width"},model:{key:"width",value:e=>s(e.getAttribute("width"))?`${e.getAttribute("width")}px`:`${e.getAttribute("width")}`}}).attributeToAttribute({view:{name:"img",key:"height"},model:{key:"height",value:e=>s(e.getAttribute("height"))?`${e.getAttribute("height")}px`:`${e.getAttribute("height")}`}}),i.for("downcast").add(function(){function e(e,t,i){const{item:r}=t,{consumable:n,writer:s}=i;if(!n.consume(r,e.name))return;const o=i.mapper.toViewElement(r),a=Array.from(o.getChildren()).find((e=>"img"===e.name));s.setAttribute("data-entity-uuid",t.attributeNewValue,a||o)}return t=>{t.on("attribute:dataEntityUuid",e)}}()).add(function(){function e(e,t,i){const{item:r}=t,{consumable:n,writer:s}=i;if(!n.consume(r,e.name))return;const o=i.mapper.toViewElement(r),a=Array.from(o.getChildren()).find((e=>"img"===e.name));s.setAttribute("data-entity-type",t.attributeNewValue,a||o)}return t=>{t.on("attribute:dataEntityType",e)}}()),i.for("dataDowncast").add(function(e){return t=>{t.on("insert:caption",((t,i,r)=>{const{consumable:n,writer:s,mapper:o}=r;if(!e.plugins.get("ImageUtils").isImage(i.item.parent)||!n.consume(i.item,"insert"))return;const a=e.model.createRangeIn(i.item),l=s.createDocumentFragment();o.bindElements(i.item,l);for(const{item:t}of Array.from(a)){const i={item:t,range:e.model.createRangeOn(t)},n=`insert:${t.name||"$text"}`;e.data.downcastDispatcher.fire(n,i,r);for(const n of t.getAttributeKeys())Object.assign(i,{attributeKey:n,attributeOldValue:null,attributeNewValue:i.item.getAttribute(n)}),e.data.downcastDispatcher.fire(`attribute:${n}`,i,r)}for(const e of s.createRangeIn(l).getItems())o.unbindViewElement(e);o.unbindViewElement(l);const u=e.data.processor.toData(l);if(u){const e=o.toViewElement(i.item.parent);s.setAttribute("data-caption",u,e)}}),{priority:"high"})}}(e)).elementToElement({model:"imageBlock",view:(e,{writer:t})=>n(t),converterPriority:"high"}).elementToElement({model:"imageInline",view:(e,{writer:t})=>n(t),converterPriority:"high"}).add(function(){function e(e,t,i){const{item:r}=t,{consumable:n,writer:s}=i,a=o.find((e=>e.modelValue===t.attributeNewValue));if(!a||!n.consume(r,e.name))return;const l=i.mapper.toViewElement(r),u=Array.from(l.getChildren()).find((e=>"img"===e.name));s.setAttribute("data-align",a.dataValue,u||l)}return t=>{t.on("attribute:imageStyle",e,{priority:"high"})}}()).add(function(){function e(e,t,i){const{item:r}=t,{consumable:n,writer:s}=i;if(!n.consume(r,e.name))return;const o=i.mapper.toViewElement(r),a=Array.from(o.getChildren()).find((e=>"img"===e.name));s.setAttribute("width",t.attributeNewValue.replace("px",""),a||o)}return t=>{t.on("attribute:width:imageInline",e,{priority:"high"}),t.on("attribute:width:imageBlock",e,{priority:"high"})}}()).add(function(){function e(e,t,i){const{item:r}=t,{consumable:n,writer:s}=i;if(!n.consume(r,e.name))return;const o=i.mapper.toViewElement(r),a=Array.from(o.getChildren()).find((e=>"img"===e.name));s.setAttribute("height",t.attributeNewValue.replace("px",""),a||o)}return t=>{t.on("attribute:height:imageInline",e,{priority:"high"}),t.on("attribute:height:imageBlock",e,{priority:"high"})}}()).add(function(){function e(e,i,r){if(!r.consumable.consume(i.item,e.name))return;const n=r.mapper.toViewElement(i.item),s=r.writer,o=s.createContainerElement("a",{href:i.attributeNewValue});s.insert(s.createPositionBefore(n),o),s.move(s.createRangeOn(n),s.createPositionAt(o,0)),r.consumable.consume(i.item,"attribute:htmlLinkAttributes:imageBlock")&&t(r.writer,i.item.getAttribute("htmlLinkAttributes"),o)}return t=>{t.on("attribute:linkHref:imageBlock",e,{priority:"high"})}}())}}class l extends e.Command{refresh(){const e=this.editor.plugins.get("ImageUtils").getClosestSelectedImageElement(this.editor.model.document.selection);this.isEnabled=!!e,this.isEnabled&&e.hasAttribute("alt")?this.value=e.getAttribute("alt"):this.value=!1}execute(e){const t=this.editor,i=t.plugins.get("ImageUtils"),r=t.model,n=i.getClosestSelectedImageElement(r.document.selection);r.change((t=>{t.setAttribute("alt",e.newValue,n)}))}}class u extends e.Plugin{static get requires(){return["ImageUtils"]}static get pluginName(){return"DrupalImageAlternativeTextEditing"}constructor(e){super(e),this._missingAltTextViewReferences=new Set}init(){const e=this.editor;e.conversion.for("editingDowncast").add(this._imageEditingDowncastConverter("attribute:alt",e)).add(this._imageEditingDowncastConverter("attribute:src",e)),e.commands.add("imageTextAlternative",new l(this.editor)),e.editing.view.on("render",(()=>{for(const e of this._missingAltTextViewReferences)e.button.element.isConnected||(e.destroy(),this._missingAltTextViewReferences.delete(e))}))}_imageEditingDowncastConverter(e){const t=(e,t,i)=>{const r=this.editor;if(!r.plugins.get("ImageUtils").isImage(t.item))return;const n=i.mapper.toViewElement(t.item),s=Array.from(n.getChildren()).find((e=>e.getCustomProperty("drupalImageMissingAltWarning")));if(t.item.hasAttribute("alt"))return void(s&&i.writer.remove(s));if(s)return;const o=r.ui.componentFactory.create("drupalImageAlternativeTextMissing");o.listenTo(r.ui,"update",(()=>{const e=r.model.document.selection.getFirstRange(),i=r.model.createRangeOn(t.item);o.set({isSelected:e.containsRange(i)||e.isIntersecting(i)})})),o.render(),this._missingAltTextViewReferences.add(o);const a=i.writer.createUIElement("span",{class:"image-alternative-text-missing-wrapper"},(function(e){const t=this.toDomElement(e);return t.appendChild(o.element),t}));i.writer.setCustomProperty("drupalImageMissingAltWarning",!0,a),i.writer.insert(i.writer.createPositionAt(n,"end"),a)};return i=>{i.on(e,t,{priority:"low"})}}}var c=i("ckeditor5/src/ui.js");function d(e){const t=e.plugins.get("ContextualBalloon");if(e.plugins.get("ImageUtils").getClosestSelectedImageWidget(e.editing.view.document.selection)){const i=m(e);t.updatePosition(i)}}function m(e){const t=e.editing.view,i=c.BalloonPanelView.defaultPositions,r=e.plugins.get("ImageUtils");return{target:t.domConverter.mapViewToDom(r.getClosestSelectedImageWidget(t.document.selection)),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast,i.viewportStickyNorth]}}var g=i("ckeditor5/src/utils.js");class h extends c.View{constructor(t){super(t),this.focusTracker=new g.FocusTracker,this.keystrokes=new g.KeystrokeHandler,this.decorativeToggle=this._decorativeToggleView(),this.labeledInput=this._createLabeledInputView(),this.saveButtonView=this._createButton(Drupal.t("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.saveButtonView.bind("isEnabled").to(this.decorativeToggle,"isOn",this.labeledInput,"isEmpty",((e,t)=>e||!t)),this.cancelButtonView=this._createButton(Drupal.t("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._focusables=new c.ViewCollection,this._focusCycler=new c.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-text-alternative-form","ck-text-alternative-form--with-decorative-toggle","ck-responsive-form"],tabindex:"-1"},children:[{tag:"div",attributes:{class:["ck","ck-text-alternative-form__decorative-toggle"]},children:[this.decorativeToggle]},this.labeledInput,this.saveButtonView,this.cancelButtonView]}),(0,c.injectCssTransitionDisabler)(this)}render(){super.render(),this.keystrokes.listenTo(this.element),(0,c.submitHandler)({view:this}),[this.decorativeToggle,this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)}))}destroy(){super.destroy(),this.focusTracker.destroy(),this.keystrokes.destroy()}_createButton(e,t,i,r){const n=new c.ButtonView(this.locale);return n.set({label:e,icon:t,tooltip:!0}),n.extendTemplate({attributes:{class:i}}),r&&n.delegate("execute").to(this,r),n}_createLabeledInputView(){const e=new c.LabeledFieldView(this.locale,c.createLabeledInputText);return e.bind("class").to(this.decorativeToggle,"isOn",(e=>e?"ck-hidden":"")),e.label=Drupal.t("Text alternative"),e}_decorativeToggleView(){const e=new c.SwitchButtonView(this.locale);return e.set({withText:!0,label:Drupal.t("Decorative image")}),e.on("execute",(()=>{e.set("isOn",!e.isOn)})),e}}class p extends c.View{constructor(e){super(e);const t=this.bindTemplate;this.set("isVisible"),this.set("isSelected");const i=Drupal.t("Add missing alternative text");this.button=new c.ButtonView(e),this.button.set({label:i,tooltip:!1,withText:!0}),this.setTemplate({tag:"span",attributes:{class:["image-alternative-text-missing",t.to("isVisible",(e=>e?"":"ck-hidden"))],title:i},children:[this.button]})}}class f extends e.Plugin{static get requires(){return[c.ContextualBalloon]}static get pluginName(){return"DrupalImageTextAlternativeUI"}init(){this._createButton(),this._createForm(),this._createMissingAltTextComponent();const e=()=>{this.editor.plugins.get("ImageUtils").getClosestSelectedImageWidget(this.editor.editing.view.document.selection)&&this._showForm()};if(this.editor.commands.get("insertImage")){this.editor.commands.get("insertImage").on("execute",e)}if(this.editor.plugins.has("ImageUploadEditing")){this.editor.plugins.get("ImageUploadEditing").on("uploadComplete",e)}}_createMissingAltTextComponent(){this.editor.ui.componentFactory.add("drupalImageAlternativeTextMissing",(e=>{const t=new p(e);return t.listenTo(t.button,"execute",(()=>{this._isInBalloon&&this._balloon.remove(this._form),this._showForm()})),t.listenTo(this.editor.ui,"update",(()=>{t.set({isVisible:!this._isVisible||!t.isSelected})})),t}))}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor;t.ui.componentFactory.add("drupalImageAlternativeText",(i=>{const r=t.commands.get("imageTextAlternative"),n=new c.ButtonView(i);return n.set({label:Drupal.t("Change image alternative text"),icon:e.icons.lowVision,tooltip:!0}),n.bind("isEnabled").to(r,"isEnabled"),this.listenTo(n,"execute",(()=>{this._showForm()})),n}))}_createForm(){const e=this.editor,t=e.editing.view.document,i=e.plugins.get("ImageUtils");this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new h(e.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{e.execute("imageTextAlternative",{newValue:this._form.decorativeToggle.isOn?"":this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this.listenTo(this._form.decorativeToggle,"execute",(()=>{d(e)})),this._form.keystrokes.set("Esc",((e,t)=>{this._hideForm(!0),t()})),this.listenTo(e.ui,"update",(()=>{i.getClosestSelectedImageWidget(t.selection)?this._isVisible&&d(e):this._hideForm(!0)})),(0,c.clickOutsideHandler)({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("imageTextAlternative"),i=this._form.decorativeToggle,r=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:m(e)}),i.isOn=""===t.value,r.fieldView.element.value=t.value||"",r.fieldView.value=r.fieldView.element.value,i.isOn?i.focus():r.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class b extends e.Plugin{static get requires(){return[u,f]}static get pluginName(){return"DrupalImageAlternativeText"}}class w extends e.Plugin{static get requires(){return[a,b]}static get pluginName(){return"DrupalImage"}}var v=w;class y extends e.Plugin{init(){const{editor:e}=this;e.plugins.get("ImageUploadEditing").on("uploadComplete",((t,{data:i,imageElement:r})=>{e.model.change((e=>{e.setAttribute("dataEntityUuid",i.response.uuid,r),e.setAttribute("dataEntityType",i.response.entity_type,r)}))}))}static get pluginName(){return"DrupalImageUploadEditing"}}var I=i("ckeditor5/src/upload.js");class x{constructor(e,t){this.loader=e,this.options=t}upload(){return this.loader.file.then((e=>new Promise(((t,i)=>{this._initRequest(),this._initListeners(t,i,e),this._sendRequest(e)}))))}abort(){this.xhr&&this.xhr.abort()}_initRequest(){this.xhr=new XMLHttpRequest,this.xhr.open("POST",this.options.uploadUrl,!0),this.xhr.responseType="json"}_initListeners(e,t,i){const r=this.xhr,n=this.loader,s=`Couldn't upload file: ${i.name}.`;r.addEventListener("error",(()=>t(s))),r.addEventListener("abort",(()=>t())),r.addEventListener("load",(()=>{const i=r.response;if(!i||i.error)return t(i&&i.error&&i.error.message?i.error.message:s);e({response:i,urls:{default:i.url}})})),r.upload&&r.upload.addEventListener("progress",(e=>{e.lengthComputable&&(n.uploadTotal=e.total,n.uploaded=e.loaded)}))}_sendRequest(e){const t=this.options.headers||{},i=this.options.withCredentials||!1;Object.keys(t).forEach((e=>{this.xhr.setRequestHeader(e,t[e])})),this.xhr.withCredentials=i;const r=new FormData;r.append("upload",e),this.xhr.send(r)}}class _ extends e.Plugin{static get requires(){return[I.FileRepository]}static get pluginName(){return"DrupalFileRepository"}init(){const e=this.editor.config.get("drupalImageUpload");e&&(e.uploadUrl?this.editor.plugins.get(I.FileRepository).createUploadAdapter=t=>new x(t,e):(0,g.logWarning)("simple-upload-adapter-missing-uploadurl"))}}class V extends e.Plugin{static get requires(){return[_,y]}static get pluginName(){return"DrupalImageUpload"}}var A=V;class E extends e.Plugin{init(){const{editor:e}=this;e.ui.componentFactory.add("drupalInsertImage",(()=>{if(e.plugins.has("ImageInsertUI"))return e.ui.componentFactory.create("insertImage");if(e.plugins.has("ImageUpload"))return e.ui.componentFactory.create("uploadImage");throw new Error("drupalInsertImage requires either ImageUpload or ImageInsertUI plugin to be enabled.")}))}static get pluginName(){return"DrupalInsertImage"}}var T={DrupalImage:v,DrupalImageUpload:A,DrupalInsertImage:E}}(),r=r.default}()})); \ No newline at end of file diff --git a/web/core/modules/ckeditor5/js/build/drupalMedia.js b/web/core/modules/ckeditor5/js/build/drupalMedia.js index 35442a6cfbb5ce237ee1571b9e7f42415701f2d0..df47edc39206a3bddc6454265f448193cbe7ce3a 100644 --- a/web/core/modules/ckeditor5/js/build/drupalMedia.js +++ b/web/core/modules/ckeditor5/js/build/drupalMedia.js @@ -1 +1 @@ -!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.CKEditor5=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.drupalMedia=t())}(self,(function(){return function(){var e={"ckeditor5/src/core.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/engine.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/engine.js")},"ckeditor5/src/ui.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/utils.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"ckeditor5/src/widget.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/widget.js")},"dll-reference CKEditor5.dll":function(e){"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var a=t[n];if(void 0!==a)return a.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,i),r.exports}i.d=function(e,t){for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var n={};return function(){"use strict";i.d(n,{default:function(){return ue}});var e=i("ckeditor5/src/core.js"),t=i("ckeditor5/src/widget.js");function a(e){return!!e&&e.is("element","drupalMedia")}function r(e){return(0,t.isWidget)(e)&&!!e.getCustomProperty("drupalMedia")}function o(e){const t=e.getSelectedElement();return a(t)?t:e.getFirstPosition().findAncestor("drupalMedia")}function s(e){const t=e.getSelectedElement();if(t&&r(t))return t;let i=e.getFirstPosition().parent;for(;i;){if(i.is("element")&&r(i))return i;i=i.parent}return null}function l(e){const t=typeof e;return null!=e&&("object"===t||"function"===t)}function d(e){for(const t of e){if(t.hasAttribute("data-drupal-media-preview"))return t;if(t.childCount){const e=d(t.getChildren());if(e)return e}}return null}function u(e){return`drupalElementStyle${e[0].toUpperCase()+e.substring(1)}`}class c extends e.Command{execute(e){const t=this.editor.plugins.get("DrupalMediaEditing"),i=Object.entries(t.attrs).reduce(((e,[t,i])=>(e[i]=t,e)),{}),n=Object.keys(e).reduce(((t,n)=>(i[n]&&(t[i[n]]=e[n]),t)),{});if(this.editor.plugins.has("DrupalElementStyleEditing")){const t=this.editor.plugins.get("DrupalElementStyleEditing"),{normalizedStyles:i}=t;for(const a of Object.keys(i))for(const i of t.normalizedStyles[a])if(e[i.attributeName]&&i.attributeValue===e[i.attributeName]){const e=u(a);n[e]=i.name}}this.editor.model.change((e=>{this.editor.model.insertContent(function(e,t){return e.createElement("drupalMedia",t)}(e,n))}))}refresh(){const e=this.editor.model,t=e.document.selection,i=e.schema.findAllowedParent(t.getFirstPosition(),"drupalMedia");this.isEnabled=null!==i}}const m="METADATA_ERROR";class p extends e.Plugin{static get requires(){return[t.Widget]}init(){this.attrs={drupalMediaAlt:"alt",drupalMediaEntityType:"data-entity-type",drupalMediaEntityUuid:"data-entity-uuid"};const e=this.editor.config.get("drupalMedia");if(!e)return;const{previewURL:t,themeError:i}=e;this.previewUrl=t,this.labelError=Drupal.t("Preview failed"),this.themeError=i||`\n <p>${Drupal.t("An error occurred while trying to preview the media. Please save your work and reload this page.")}<p>\n `,this._defineSchema(),this._defineConverters(),this._defineListeners(),this.editor.commands.add("insertDrupalMedia",new c(this.editor))}upcastDrupalMediaIsImage(e){const{model:t,plugins:i}=this.editor;i.get("DrupalMediaMetadataRepository").getMetadata(e).then((i=>{e&&t.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaIsImage",!!i.imageSourceMetadata,e)}))})).catch((i=>{e&&(console.warn(i.toString()),t.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaIsImage",m,e)})))}))}upcastDrupalMediaType(e){this.editor.plugins.get("DrupalMediaMetadataRepository").getMetadata(e).then((t=>{e&&this.editor.model.enqueueChange({isUndoable:!1},(i=>{i.setAttribute("drupalMediaType",t.type,e)}))})).catch((t=>{e&&(console.warn(t.toString()),this.editor.model.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaType",m,e)})))}))}async _fetchPreview(e){const t={text:this._renderElement(e),uuid:e.getAttribute("drupalMediaEntityUuid")},i=await fetch(`${this.previewUrl}?${new URLSearchParams(t)}`,{headers:{"X-Drupal-MediaPreview-CSRF-Token":this.editor.config.get("drupalMedia").previewCsrfToken}});if(i.ok){return{label:i.headers.get("drupal-media-label"),preview:await i.text()}}return{label:this.labelError,preview:this.themeError}}_defineSchema(){this.editor.model.schema.register("drupalMedia",{allowWhere:"$block",isObject:!0,isContent:!0,isBlock:!0,allowAttributes:Object.keys(this.attrs)}),this.editor.editing.view.domConverter.blockElements.push("drupal-media")}_defineConverters(){const e=this.editor.conversion,i=this.editor.plugins.get("DrupalMediaMetadataRepository");e.for("upcast").elementToElement({view:{name:"drupal-media"},model:"drupalMedia"}).add((e=>{e.on("element:drupal-media",((e,t)=>{const[n]=t.modelRange.getItems();i.getMetadata(n).then((e=>{n&&(this.upcastDrupalMediaIsImage(n),this.editor.model.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaType",e.type,n)})))})).catch((e=>{console.warn(e.toString())}))}),{priority:"lowest"})})),e.for("dataDowncast").elementToElement({model:"drupalMedia",view:{name:"drupal-media"}}),e.for("editingDowncast").elementToElement({model:"drupalMedia",view:(e,{writer:i})=>{const n=i.createContainerElement("figure",{class:"drupal-media"});if(!this.previewUrl){const e=i.createRawElement("div",{"data-drupal-media-preview":"unavailable"});i.insert(i.createPositionAt(n,0),e)}return i.setCustomProperty("drupalMedia",!0,n),(0,t.toWidget)(n,i,{label:Drupal.t("Media widget")})}}).add((e=>{const t=(e,t,i)=>{const n=i.writer,a=t.item,r=i.mapper.toViewElement(t.item);let o=d(r.getChildren());if(o){if("ready"!==o.getAttribute("data-drupal-media-preview"))return;n.setAttribute("data-drupal-media-preview","loading",o)}else o=n.createRawElement("div",{"data-drupal-media-preview":"loading"}),n.insert(n.createPositionAt(r,0),o);this._fetchPreview(a).then((({label:e,preview:t})=>{o&&this.editor.editing.view.change((i=>{const n=i.createRawElement("div",{"data-drupal-media-preview":"ready","aria-label":e},(e=>{e.innerHTML=t}));i.insert(i.createPositionBefore(o),n),i.remove(o)}))}))};return e.on("attribute:drupalMediaEntityUuid:drupalMedia",t),e.on("attribute:drupalElementStyleViewMode:drupalMedia",t),e.on("attribute:drupalMediaEntityType:drupalMedia",t),e.on("attribute:drupalMediaAlt:drupalMedia",t),e})),e.for("editingDowncast").add((e=>{e.on("attribute:drupalElementStyleAlign:drupalMedia",((e,t,i)=>{const n={left:"drupal-media-style-align-left",right:"drupal-media-style-align-right",center:"drupal-media-style-align-center"},a=i.mapper.toViewElement(t.item),r=i.writer;n[t.attributeOldValue]&&r.removeClass(n[t.attributeOldValue],a),n[t.attributeNewValue]&&i.consumable.consume(t.item,e.name)&&r.addClass(n[t.attributeNewValue],a)}))})),Object.keys(this.attrs).forEach((t=>{const i={model:{key:t,name:"drupalMedia"},view:{name:"drupal-media",key:this.attrs[t]}};e.for("dataDowncast").attributeToAttribute(i),e.for("upcast").attributeToAttribute(i)}))}_defineListeners(){this.editor.model.on("insertContent",((e,[t])=>{a(t)&&(this.upcastDrupalMediaIsImage(t),this.upcastDrupalMediaType(t))}))}_renderElement(e){const t=this.editor.model.change((t=>{const i=t.createDocumentFragment(),n=t.cloneElement(e,!1);return["linkHref"].forEach((e=>{t.removeAttribute(e,n)})),t.append(n,i),i}));return this.editor.data.stringify(t)}static get pluginName(){return"DrupalMediaEditing"}}var g=i("ckeditor5/src/ui.js");class h extends e.Plugin{init(){const e=this.editor,t=this.editor.config.get("drupalMedia");if(!t)return;const{libraryURL:i,openDialog:n,dialogSettings:a={}}=t;i&&"function"==typeof n&&e.ui.componentFactory.add("drupalMedia",(t=>{const r=e.commands.get("insertDrupalMedia"),o=new g.ButtonView(t);return o.set({label:Drupal.t("Insert Drupal Media"),icon:'<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.1873 4.86414L10.2509 6.86414V7.02335H10.2499V15.5091C9.70972 15.1961 9.01793 15.1048 8.34069 15.3136C7.12086 15.6896 6.41013 16.8967 6.75322 18.0096C7.09631 19.1226 8.3633 19.72 9.58313 19.344C10.6666 19.01 11.3484 18.0203 11.2469 17.0234H11.2499V9.80173L18.1803 8.25067V14.3868C17.6401 14.0739 16.9483 13.9825 16.2711 14.1913C15.0513 14.5674 14.3406 15.7744 14.6836 16.8875C15.0267 18.0004 16.2937 18.5978 17.5136 18.2218C18.597 17.8877 19.2788 16.8982 19.1773 15.9011H19.1803V8.02687L19.1873 8.0253V4.86414Z" fill="black"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.5039 0.743652H0.386932V12.1603H13.5039V0.743652ZM12.3379 1.75842H1.55289V11.1454H1.65715L4.00622 8.86353L6.06254 10.861L9.24985 5.91309L11.3812 9.22179L11.7761 8.6676L12.3379 9.45621V1.75842ZM6.22048 4.50869C6.22048 5.58193 5.35045 6.45196 4.27722 6.45196C3.20398 6.45196 2.33395 5.58193 2.33395 4.50869C2.33395 3.43546 3.20398 2.56543 4.27722 2.56543C5.35045 2.56543 6.22048 3.43546 6.22048 4.50869Z" fill="black"/></svg>\n',tooltip:!0}),o.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(o,"execute",(()=>{n(i,(({attributes:t})=>{e.execute("insertDrupalMedia",t)}),a)})),o}))}}class f extends e.Plugin{static get requires(){return[t.WidgetToolbarRepository]}static get pluginName(){return"DrupalMediaToolbar"}afterInit(){const{editor:e}=this;var i;e.plugins.get(t.WidgetToolbarRepository).register("drupalMedia",{ariaLabel:Drupal.t("Drupal Media toolbar"),items:(i=e.config.get("drupalMedia.toolbar"),i.map((e=>l(e)?e.name:e))||[]),getRelatedElement:e=>s(e)})}}class b extends e.Command{refresh(){const e=o(this.editor.model.document.selection);this.isEnabled=!!e&&e.getAttribute("drupalMediaIsImage")&&e.getAttribute("drupalMediaIsImage")!==m,this.isEnabled?this.value=e.getAttribute("drupalMediaAlt"):this.value=!1}execute(e){const{model:t}=this.editor,i=o(t.document.selection);e.newValue=e.newValue.trim(),t.change((t=>{e.newValue.length>0?t.setAttribute("drupalMediaAlt",e.newValue,i):t.removeAttribute("drupalMediaAlt",i)}))}}class w extends e.Plugin{init(){this._data=new WeakMap}getMetadata(e){if(this._data.get(e))return new Promise((t=>{t(this._data.get(e))}));const t=this.editor.config.get("drupalMedia");if(!t)return new Promise(((e,t)=>{t(new Error("drupalMedia configuration is required for parsing metadata."))}));if(!e.hasAttribute("drupalMediaEntityUuid"))return new Promise(((e,t)=>{t(new Error("drupalMedia element must have drupalMediaEntityUuid attribute to retrieve metadata."))}));const{metadataUrl:i}=t;return(async e=>{const t=await fetch(e);if(t.ok)return JSON.parse(await t.text());throw new Error("Fetching media embed metadata from the server failed.")})(`${i}&${new URLSearchParams({uuid:e.getAttribute("drupalMediaEntityUuid")})}`).then((t=>(this._data.set(e,t),t)))}static get pluginName(){return"DrupalMediaMetadataRepository"}}class y extends e.Plugin{static get requires(){return[w]}static get pluginName(){return"MediaImageTextAlternativeEditing"}init(){const{editor:e,editor:{model:t,conversion:i}}=this;t.schema.extend("drupalMedia",{allowAttributes:["drupalMediaIsImage"]}),i.for("editingDowncast").add((e=>{e.on("attribute:drupalMediaIsImage",((e,t,i)=>{const{writer:n,mapper:a}=i,r=a.toViewElement(t.item);if(t.attributeNewValue!==m){const e=Array.from(r.getChildren()).find((e=>e.getCustomProperty("drupalMediaMetadataError")));return void(e&&(n.setCustomProperty("widgetLabel",e.getCustomProperty("drupalMediaOriginalWidgetLabel"),e),n.removeElement(e)))}const o=Drupal.t("Not all functionality may be available because some information could not be retrieved."),s=new g.TooltipView;s.text=o,s.position="sw";const l=new g.Template({tag:"span",children:[{tag:"span",attributes:{class:"drupal-media__metadata-error-icon"}},s]}).render(),d=n.createRawElement("div",{class:"drupal-media__metadata-error"},((e,t)=>{t.setContentOf(e,l.outerHTML)}));n.setCustomProperty("drupalMediaMetadataError",!0,d);const u=r.getCustomProperty("widgetLabel");n.setCustomProperty("drupalMediaOriginalWidgetLabel",u,d),n.setCustomProperty("widgetLabel",`${u} (${o})`,r),n.insert(n.createPositionAt(r,0),d)}),{priority:"low"})})),e.commands.add("mediaImageTextAlternative",new b(this.editor))}}function v(e){const t=e.editing.view,i=g.BalloonPanelView.defaultPositions;return{target:t.domConverter.viewToDom(t.document.selection.getSelectedElement()),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast]}}var E=i("ckeditor5/src/utils.js");class M extends g.View{constructor(t){super(t),this.focusTracker=new E.FocusTracker,this.keystrokes=new E.KeystrokeHandler,this.labeledInput=this._createLabeledInputView(),this.set("defaultAltText",void 0),this.defaultAltTextView=this._createDefaultAltTextView(),this.saveButtonView=this._createButton(Drupal.t("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(Drupal.t("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._focusables=new g.ViewCollection,this._focusCycler=new g.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-alternative-text-form","ck-vertical-form"],tabindex:"-1"},children:[this.defaultAltTextView,this.labeledInput,this.saveButtonView,this.cancelButtonView]}),(0,g.injectCssTransitionDisabler)(this)}render(){super.render(),this.keystrokes.listenTo(this.element),(0,g.submitHandler)({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)}))}_createButton(e,t,i,n){const a=new g.ButtonView(this.locale);return a.set({label:e,icon:t,tooltip:!0}),a.extendTemplate({attributes:{class:i}}),n&&a.delegate("execute").to(this,n),a}_createLabeledInputView(){const e=new g.LabeledFieldView(this.locale,g.createLabeledInputText);return e.label=Drupal.t("Alternative text override"),e}_createDefaultAltTextView(){const e=g.Template.bind(this,this);return new g.Template({tag:"div",attributes:{class:["ck-media-alternative-text-form__default-alt-text",e.if("defaultAltText","ck-hidden",(e=>!e))]},children:[{tag:"strong",attributes:{class:"ck-media-alternative-text-form__default-alt-text-label"},children:[Drupal.t("Default alternative text:")]}," ",{tag:"span",attributes:{class:"ck-media-alternative-text-form__default-alt-text-value"},children:[{text:[e.to("defaultAltText")]}]}]})}}class k extends e.Plugin{static get requires(){return[g.ContextualBalloon]}static get pluginName(){return"MediaImageTextAlternativeUi"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor;t.ui.componentFactory.add("mediaImageTextAlternative",(i=>{const n=t.commands.get("mediaImageTextAlternative"),a=new g.ButtonView(i);return a.set({label:Drupal.t("Override media image alternative text"),icon:e.icons.lowVision,tooltip:!0}),a.bind("isVisible").to(n,"isEnabled"),this.listenTo(a,"execute",(()=>{this._showForm()})),a}))}_createForm(){const e=this.editor,t=e.editing.view.document;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new M(e.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{e.execute("mediaImageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((e,t)=>{this._hideForm(!0),t()})),this.listenTo(e.ui,"update",(()=>{s(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(s(e.editing.view.document.selection)){const i=v(e);t.updatePosition(i)}}(e):this._hideForm(!0)})),(0,g.clickOutsideHandler)({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("mediaImageTextAlternative"),i=e.plugins.get("DrupalMediaMetadataRepository"),n=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:v(e)}),n.fieldView.element.value=t.value||"",n.fieldView.value=n.fieldView.element.value,this._form.defaultAltText="";const r=e.model.document.selection.getSelectedElement();a(r)&&i.getMetadata(r).then((e=>{this._form.defaultAltText=e.imageSourceMetadata?e.imageSourceMetadata.alt:""})).catch((e=>{console.warn(e.toString())})),this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class D extends e.Plugin{static get requires(){return[y,k]}static get pluginName(){return"MediaImageTextAlternative"}}function A(e,t,i){if(t.attributes)for(const[n,a]of Object.entries(t.attributes))e.setAttribute(n,a,i);t.styles&&e.setStyle(t.styles,i),t.classes&&e.addClass(t.classes,i)}function C(e,t,i){if(!i.consumable.consume(t.item,e.name))return;const n=i.mapper.toViewElement(t.item);A(i.writer,t.attributeNewValue,n)}class _ extends e.Plugin{constructor(e){if(super(e),!e.plugins.has("GeneralHtmlSupport"))return;e.plugins.has("DataFilter")&&e.plugins.has("DataSchema")||console.error("DataFilter and DataSchema plugins are required for Drupal Media to integrate with General HTML Support plugin.");const{schema:t}=e.model,{conversion:i}=e,n=this.editor.plugins.get("DataFilter");this.editor.plugins.get("DataSchema").registerBlockElement({model:"drupalMedia",view:"drupal-media"}),n.on("register:drupal-media",((e,a)=>{"drupalMedia"===a.model&&(t.extend("drupalMedia",{allowAttributes:["htmlLinkAttributes","htmlAttributes"]}),i.for("upcast").add(function(e){return t=>{t.on("element:drupal-media",((t,i,n)=>{function a(t,a){const r=e.processViewAttributes(t,n);r&&n.writer.setAttribute(a,r,i.modelRange)}const r=i.viewItem,o=r.parent;a(r,"htmlAttributes"),o.is("element","a")&&a(o,"htmlLinkAttributes")}),{priority:"low"})}}(n)),i.for("editingDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{if(!i.consumable.consume(t.item,"attribute:htmlLinkAttributes:drupalMedia"))return;const n=i.mapper.toViewElement(t.item),a=function(e,t,i){const n=e.createRangeOn(t);for(const{item:e}of n.getWalker())if(e.is("element",i))return e}(i.writer,n,"a");A(i.writer,t.item.getAttribute("htmlLinkAttributes"),a)}),{priority:"low"})})),i.for("dataDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{if(!i.consumable.consume(t.item,"attribute:htmlLinkAttributes:drupalMedia"))return;const n=i.mapper.toViewElement(t.item).parent;A(i.writer,t.item.getAttribute("htmlLinkAttributes"),n)}),{priority:"low"}),e.on("attribute:htmlAttributes:drupalMedia",C,{priority:"low"})})),e.stop())}))}static get pluginName(){return"DrupalMediaGeneralHtmlSupport"}}class x extends e.Plugin{static get requires(){return[p,_,h,f,D]}static get pluginName(){return"DrupalMedia"}}var V=i("ckeditor5/src/engine.js");function S(e){return Array.from(e.getChildren()).find((e=>"drupal-media"===e.name))}function T(e){return t=>{t.on(`attribute:${e.id}:drupalMedia`,((t,i,n)=>{const a=n.mapper.toViewElement(i.item);let r=Array.from(a.getChildren()).find((e=>"a"===e.name));if(r=!r&&a.is("element","a")?a:Array.from(a.getAncestors()).find((e=>"a"===e.name)),r){for(const[t,i]of(0,E.toMap)(e.attributes))n.writer.setAttribute(t,i,r);e.classes&&n.writer.addClass(e.classes,r);for(const t in e.styles)Object.prototype.hasOwnProperty.call(e.styles,t)&&n.writer.setStyle(t,e.styles[t],r)}}))}}function I(e,t){return e=>{e.on("element:a",((e,i,n)=>{const a=i.viewItem;if(!S(a))return;const r=new V.Matcher(t._createPattern()).match(a);if(!r)return;if(!n.consumable.consume(a,r.match))return;const o=i.modelCursor.nodeBefore;n.writer.setAttribute(t.id,!0,o)}),{priority:"high"})}}class L extends e.Plugin{static get requires(){return["LinkEditing","DrupalMediaEditing"]}static get pluginName(){return"DrupalLinkMediaEditing"}init(){const{editor:e}=this;e.model.schema.extend("drupalMedia",{allowAttributes:["linkHref"]}),e.conversion.for("upcast").add((e=>{e.on("element:a",((e,t,i)=>{const n=t.viewItem,a=S(n);if(!a)return;if(!i.consumable.consume(n,{attributes:["href"],name:!0}))return;const r=n.getAttribute("href");if(!r)return;const o=i.convertItem(a,t.modelCursor);t.modelRange=o.modelRange,t.modelCursor=o.modelCursor;const s=t.modelCursor.nodeBefore;s&&s.is("element","drupalMedia")&&i.writer.setAttribute("linkHref",r,s)}),{priority:"high"})})),e.conversion.for("editingDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{const{writer:n}=i;if(!i.consumable.consume(t.item,e.name))return;const a=i.mapper.toViewElement(t.item),r=Array.from(a.getChildren()).find((e=>"a"===e.name));if(r)t.attributeNewValue?n.setAttribute("href",t.attributeNewValue,r):(n.move(n.createRangeIn(r),n.createPositionAt(a,0)),n.remove(r));else{const e=Array.from(a.getChildren()).find((e=>e.getAttribute("data-drupal-media-preview"))),i=n.createContainerElement("a",{href:t.attributeNewValue});n.insert(n.createPositionAt(a,0),i),n.move(n.createRangeOn(e),n.createPositionAt(i,0))}}),{priority:"high"})})),e.conversion.for("dataDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{const{writer:n}=i;if(!i.consumable.consume(t.item,e.name))return;const a=i.mapper.toViewElement(t.item),r=n.createContainerElement("a",{href:t.attributeNewValue});n.insert(n.createPositionBefore(a),r),n.move(n.createRangeOn(a),n.createPositionAt(r,0))}),{priority:"high"})})),this._enableManualDecorators();if(e.commands.get("link").automaticDecorators.length>0)throw new Error("The Drupal Media plugin is not compatible with automatic link decorators. To use Drupal Media, disable any plugins providing automatic link decorators.")}_enableManualDecorators(){const e=this.editor,t=e.commands.get("link");for(const i of t.manualDecorators)e.model.schema.extend("drupalMedia",{allowAttributes:i.id}),e.conversion.for("downcast").add(T(i)),e.conversion.for("upcast").add(I(0,i))}}class P extends e.Plugin{static get requires(){return["LinkEditing","LinkUI","DrupalMediaEditing"]}static get pluginName(){return"DrupalLinkMediaUi"}init(){const{editor:e}=this,t=e.editing.view.document;this.listenTo(t,"click",((t,i)=>{this._isSelectedLinkedMedia(e.model.document.selection)&&(i.preventDefault(),t.stop())}),{priority:"high"}),this._createToolbarLinkMediaButton()}_createToolbarLinkMediaButton(){const{editor:e}=this;e.ui.componentFactory.add("drupalLinkMedia",(t=>{const i=new g.ButtonView(t),n=e.plugins.get("LinkUI"),a=e.commands.get("link");return i.set({isEnabled:!0,label:Drupal.t("Link media"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184z"/></svg>\n',keystroke:"Ctrl+K",tooltip:!0,isToggleable:!0}),i.bind("isEnabled").to(a,"isEnabled"),i.bind("isOn").to(a,"value",(e=>!!e)),this.listenTo(i,"execute",(()=>{this._isSelectedLinkedMedia(e.model.document.selection)?n._addActionsView():n._showUI(!0)})),i}))}_isSelectedLinkedMedia(e){const t=e.getSelectedElement();return!!t&&t.is("element","drupalMedia")&&t.hasAttribute("linkHref")}}class B extends e.Plugin{static get requires(){return[L,P]}static get pluginName(){return"DrupalLinkMedia"}}const{objectFullWidth:O,objectInline:N,objectLeft:R,objectRight:j,objectCenter:F,objectBlockLeft:U,objectBlockRight:H}=e.icons,q={get inline(){return{name:"inline",title:"In line",icon:N,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:R,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:U,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:F,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:j,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:H,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:F,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:j,modelElements:["imageBlock"],className:"image-style-side"}}},$={full:O,left:U,right:H,center:F,inlineLeft:R,inlineRight:j,inline:N},W=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function K(e){(0,E.logWarning)("image-style-configuration-definition-invalid",e)}var z={normalizeStyles:function(e){return(e.configuredStyles.options||[]).map((e=>function(e){e="string"==typeof e?q[e]?{...q[e]}:{name:e}:function(e,t){const i={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(i[n]=e[n]);return i}(q[e.name],e);"string"==typeof e.icon&&(e.icon=$[e.icon]||e.icon);return e}(e))).filter((t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:i}){const{modelElements:n,name:a}=e;if(!(n&&n.length&&a))return K({style:e}),!1;{const a=[t?"imageBlock":null,i?"imageInline":null];if(!n.some((e=>a.includes(e))))return(0,E.logWarning)("image-style-missing-dependency",{style:e,missingPlugins:n.map((e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(t,e)))},getDefaultStylesConfiguration:function(e,t){return e&&t?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:e?{options:["block","side"]}:t?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(e){return e.has("ImageBlockEditing")&&e.has("ImageInlineEditing")?[...W]:[]},warnInvalidStyle:K,DEFAULT_OPTIONS:q,DEFAULT_ICONS:$,DEFAULT_DROPDOWN_DEFINITIONS:W};function Z(e,t,i){for(const n of t)if(i.checkAttribute(e,n))return!0;return!1}function G(e,t,i){const n=e.getSelectedElement();if(n&&Z(n,i,t))return n;let{parent:a}=e.getFirstPosition();for(;a;){if(a.is("element")&&Z(a,i,t))return a;a=a.parent}return null}class J extends e.Command{constructor(e,t){super(e),this.styles={},Object.keys(t).forEach((e=>{this.styles[e]=new Map(t[e].map((e=>[e.name,e])))})),this.modelAttributes=[];for(const e of Object.keys(t)){const t=u(e);this.modelAttributes.push(t)}}refresh(){const{editor:e}=this,t=G(e.model.document.selection,e.model.schema,this.modelAttributes);this.isEnabled=!!t,this.isEnabled?this.value=this.getValue(t):this.value=!1}getValue(e){const t={};return Object.keys(this.styles).forEach((i=>{const n=u(i);if(e.hasAttribute(n))t[i]=e.getAttribute(n);else for(const[,e]of this.styles[i])e.isDefault&&(t[i]=e.name)})),t}execute(e={}){const{editor:{model:t}}=this,{value:i,group:n}=e,a=u(n);t.change((e=>{const r=G(t.document.selection,t.schema,this.modelAttributes);!i||this.styles[n].get(i).isDefault?e.removeAttribute(a,r):e.setAttribute(a,i,r)}))}}function X(e,t){for(const i of t)if(i.name===e)return i}class Q extends e.Plugin{init(){const{editor:t}=this,i=t.config.get("drupalElementStyles");this.normalizedStyles={},Object.keys(i).forEach((t=>{this.normalizedStyles[t]=i[t].map((t=>("string"==typeof t.icon&&e.icons[t.icon]&&(t.icon=e.icons[t.icon]),t.name&&(t.name=`${t.name}`),t))).filter((e=>e.isDefault||e.attributeName&&e.attributeValue?e.modelElements&&Array.isArray(e.modelElements)?!!e.name||(console.warn("drupalElementStyles options must include a name."),!1):(console.warn("drupalElementStyles options must include an array of supported modelElements."),!1):(console.warn(`${e.attributeValue} drupalElementStyles options must include attributeName and attributeValue.`),!1)))})),this._setupConversion(),t.commands.add("drupalElementStyle",new J(t,this.normalizedStyles))}_setupConversion(){const{editor:e}=this,{schema:t}=e.model;Object.keys(this.normalizedStyles).forEach((i=>{const n=u(i),a=(r=this.normalizedStyles[i],(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=X(t.attributeNewValue,r),a=X(t.attributeOldValue,r),o=i.mapper.toViewElement(t.item),s=i.writer;a&&("class"===a.attributeName?s.removeClass(a.attributeValue,o):s.removeAttribute(a.attributeName,o)),n&&("class"===n.attributeName?s.addClass(n.attributeValue,o):n.isDefault||s.setAttribute(n.attributeName,n.attributeValue,o))});var r;const o=function(e,t){const i=e.filter((e=>!e.isDefault));return(e,n,a)=>{if(!n.modelRange)return;const r=n.viewItem,o=(0,E.first)(n.modelRange.getItems());if(o&&a.schema.checkAttribute(o,t))for(const e of i)if("class"===e.attributeName)a.consumable.consume(r,{classes:e.attributeValue})&&a.writer.setAttribute(t,e.name,o);else if(a.consumable.consume(r,{attributes:[e.attributeName]}))for(const e of i)e.attributeValue===r.getAttribute(e.attributeName)&&a.writer.setAttribute(t,e.name,o)}}(this.normalizedStyles[i],n);e.editing.downcastDispatcher.on(`attribute:${n}`,a),e.data.downcastDispatcher.on(`attribute:${n}`,a);[...new Set(this.normalizedStyles[i].map((e=>e.modelElements)).flat())].forEach((e=>{t.extend(e,{allowAttributes:n})})),e.data.upcastDispatcher.on("element",o,{priority:"low"})}))}static get pluginName(){return"DrupalElementStyleEditing"}}const Y=e=>e,ee=(e,t)=>(e?`${e}: `:"")+t;function te(e,t){return`drupalElementStyle:${t}:${e}`}class ie extends e.Plugin{static get requires(){return[Q]}init(){const{plugins:e}=this.editor,t=this.editor.config.get("drupalMedia.toolbar")||[],i=e.get("DrupalElementStyleEditing").normalizedStyles;Object.keys(i).forEach((e=>{i[e].forEach((t=>{this._createButton(t,e,i[e])}))}));t.filter(l).filter((e=>{const t=[];if(!e.display)return console.warn("dropdown configuration must include a display key specifying either listDropdown or splitButton."),!1;e.items.includes(e.defaultItem)||console.warn("defaultItem must be part of items in the dropdown configuration.");for(const i of e.items){const e=i.split(":")[1];t.push(e)}return!!t.every((e=>e===t[0]))||(console.warn("dropdown configuration should only contain buttons from one group."),!1)})).forEach((e=>{if(e.items.length>=2){const t=e.name.split(":")[1];switch(e.display){case"splitButton":this._createDropdown(e,i[t]);break;case"listDropdown":this._createListDropdown(e,i[t])}}}))}updateOptionVisibility(e,t,i,n){const{selection:a}=this.editor.model.document,r={};r[n]=e;const o=a?a.getSelectedElement():G(a,this.editor.model.schema,r),s=e.filter((function(e){for(const[t,i]of(0,E.toMap)(e.modelAttributes))if(o&&o.hasAttribute(t))return i.includes(o.getAttribute(t));return!0}));i.hasOwnProperty("model")?s.includes(t)?i.model.set({class:""}):i.model.set({class:"ck-hidden"}):s.includes(t)?i.set({class:""}):i.set({class:"ck-hidden"})}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,(n=>{let a;const{defaultItem:r,items:o,title:s}=e,l=o.filter((e=>{const i=e.split(":")[1];return t.find((({name:t})=>te(t,i)===e))})).map((e=>{const t=i.create(e);return e===r&&(a=t),t}));o.length!==l.length&&z.warnInvalidStyle({dropdown:e});const d=(0,g.createDropdown)(n,g.SplitButtonView),u=d.buttonView;return(0,g.addToolbarToDropdown)(d,l),u.set({label:ee(s,a.label),class:null,tooltip:!0}),u.bind("icon").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Y);return t<0?a.icon:l[t].icon})),u.bind("label").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Y);return ee(s,t<0?a.label:l[t].label)})),u.bind("isOn").toMany(l,"isOn",((...e)=>e.some(Y))),u.bind("class").toMany(l,"isOn",((...e)=>e.some(Y)?"ck-splitbutton_flatten":null)),u.on("execute",(()=>{l.some((({isOn:e})=>e))?d.isOpen=!d.isOpen:a.fire("execute")})),d.bind("isEnabled").toMany(l,"isEnabled",((...e)=>e.some(Y))),d}))}_createButton(e,t,i){const n=e.name;this.editor.ui.componentFactory.add(te(n,t),(a=>{const r=this.editor.commands.get("drupalElementStyle"),o=new g.ButtonView(a);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(r,"isEnabled"),o.bind("isOn").to(r,"value",(e=>e&&e[t]===n)),o.on("execute",this._executeCommand.bind(this,n,t)),this.listenTo(this.editor.ui,"update",(()=>{this.updateOptionVisibility(i,e,o,t)})),o}))}getDropdownListItemDefinitions(e,t,i){const n=new E.Collection;return e.forEach((t=>{const a={type:"button",model:new g.Model({group:i,commandValue:t.name,label:t.title,withText:!0,class:""})};n.add(a),this.listenTo(this.editor.ui,"update",(()=>{this.updateOptionVisibility(e,t,a,i)}))})),n}_createListDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,(n=>{let a;const{defaultItem:r,items:o,title:s,defaultText:l}=e,d=e.name.split(":")[1],u=o.filter((e=>t.find((({name:t})=>te(t,d)===e)))).map((e=>{const t=i.create(e);return e===r&&(a=t),t}));o.length!==u.length&&z.warnInvalidStyle({dropdown:e});const c=(0,g.createDropdown)(n,g.DropdownButtonView),m=c.buttonView;m.set({label:ee(s,a.label),class:null,tooltip:l,withText:!0});const p=this.editor.commands.get("drupalElementStyle");return m.bind("label").to(p,"value",(e=>{if(e&&e[d])for(const i of t)if(i.name===e[d])return i.title;return l})),c.bind("isOn").to(p),c.bind("isEnabled").to(this),(0,g.addListToDropdown)(c,this.getDropdownListItemDefinitions(t,p,d)),this.listenTo(c,"execute",(e=>{this._executeCommand(e.source.commandValue,e.source.group)})),c}))}_executeCommand(e,t){this.editor.execute("drupalElementStyle",{value:e,group:t}),this.editor.editing.view.focus()}static get pluginName(){return"DrupalElementStyleUi"}}class ne extends e.Plugin{static get requires(){return[Q,ie]}static get pluginName(){return"DrupalElementStyle"}}function ae(e){const t=e.getFirstPosition().findAncestor("caption");return t&&a(t.parent)?t:null}function re(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}class oe extends e.Command{refresh(){const e=this.editor.model.document.selection,t=e.getSelectedElement();if(!t)return this.isEnabled=!!o(e),void(this.value=!!ae(e));this.isEnabled=a(t),this.isEnabled?this.value=!!re(t):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change((e=>{this.value?this._hideDrupalMediaCaption(e):this._showDrupalMediaCaption(e,t)}))}_showDrupalMediaCaption(e,t){const i=this.editor.model.document.selection,n=this.editor.plugins.get("DrupalMediaCaptionEditing"),a=o(i),r=n._getSavedCaption(a)||e.createElement("caption");e.append(r,a),t&&e.setSelection(r,"in")}_hideDrupalMediaCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("DrupalMediaCaptionEditing");let a,r=i.getSelectedElement();r?a=re(r):(a=ae(i),r=o(i)),n._saveCaption(r,a),e.setSelection(r,"on"),e.remove(a)}}class se extends e.Plugin{static get requires(){return[]}static get pluginName(){return"DrupalMediaCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"drupalMedia"}):t.register("caption",{allowIn:"drupalMedia",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleMediaCaption",new oe(e)),this._setupConversion()}_setupConversion(){const e=this.editor,i=e.editing.view;var n;e.conversion.for("upcast").add(function(e){const t=(t,i,n)=>{const{viewItem:a}=i,{writer:r,consumable:o}=n;if(!i.modelRange||!o.consume(a,{attributes:["data-caption"]}))return;const s=r.createElement("caption"),l=i.modelRange.start.nodeAfter,d=e.data.processor.toView(a.getAttribute("data-caption")),u=r.createDocumentFragment();n.consumable.constructor.createFrom(d,n.consumable),n.convertChildren(d,u);for(const e of Array.from(u.getChildren()))r.append(e,s);r.append(s,l)};return e=>{e.on("element:drupal-media",t,{priority:"low"})}}(e)),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:n})=>{if(!a(e.parent))return null;const r=n.createEditableElement("figcaption");return(0,V.enablePlaceholder)({view:i,element:r,text:Drupal.t("Enter media caption"),keepOnFocus:!0}),(0,t.toWidgetEditable)(r,n)}}),e.editing.mapper.on("modelToViewPosition",(n=i,(e,t)=>{const i=t.modelPosition,r=i.parent;if(!a(r))return;const o=t.mapper.toViewElement(r);t.viewPosition=n.createPositionAt(o,i.offset+1)})),e.conversion.for("dataDowncast").add(function(e){return t=>{t.on("insert:caption",((t,i,n)=>{const{consumable:r,writer:o,mapper:s}=n;if(!a(i.item.parent)||!r.consume(i.item,"insert"))return;const l=e.model.createRangeIn(i.item),d=o.createDocumentFragment();s.bindElements(i.item,d);for(const{item:t}of Array.from(l)){const i={item:t,range:e.model.createRangeOn(t)},a=`insert:${t.name||"$text"}`;e.data.downcastDispatcher.fire(a,i,n);for(const a of t.getAttributeKeys())Object.assign(i,{attributeKey:a,attributeOldValue:null,attributeNewValue:i.item.getAttribute(a)}),e.data.downcastDispatcher.fire(`attribute:${a}`,i,n)}for(const e of o.createRangeIn(d).getItems())s.unbindViewElement(e);s.unbindViewElement(d);const u=e.data.processor.toData(d);if(u){const e=s.toViewElement(i.item.parent);o.setAttribute("data-caption",u,e)}}))}}(e))}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?V.Element.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}class le extends e.Plugin{static get requires(){return[]}static get pluginName(){return"DrupalMediaCaptionUI"}init(){const{editor:t}=this,i=t.editing.view;t.ui.componentFactory.add("toggleDrupalMediaCaption",(n=>{const a=new g.ButtonView(n),r=t.commands.get("toggleMediaCaption");return a.set({label:Drupal.t("Caption media"),icon:e.icons.caption,tooltip:!0,isToggleable:!0}),a.bind("isOn","isEnabled").to(r,"value","isEnabled"),a.bind("label").to(r,"value",(e=>e?Drupal.t("Toggle caption off"):Drupal.t("Toggle caption on"))),this.listenTo(a,"execute",(()=>{t.execute("toggleMediaCaption",{focusCaptionOnShow:!0});const e=ae(t.model.document.selection);if(e){const n=t.editing.mapper.toViewElement(e);i.scrollToTheSelection(),i.change((e=>{e.addClass("drupal-media__caption_highlighted",n)}))}})),a}))}}class de extends e.Plugin{static get requires(){return[se,le]}static get pluginName(){return"DrupalMediaCaption"}}var ue={DrupalMedia:x,MediaImageTextAlternative:D,MediaImageTextAlternativeEditing:y,MediaImageTextAlternativeUi:k,DrupalLinkMedia:B,DrupalMediaCaption:de,DrupalElementStyle:ne}}(),n=n.default}()})); \ No newline at end of file +!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.CKEditor5=t():(e.CKEditor5=e.CKEditor5||{},e.CKEditor5.drupalMedia=t())}(self,(function(){return function(){var e={"ckeditor5/src/core.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/core.js")},"ckeditor5/src/engine.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/engine.js")},"ckeditor5/src/ui.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/ui.js")},"ckeditor5/src/utils.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/utils.js")},"ckeditor5/src/widget.js":function(e,t,i){e.exports=i("dll-reference CKEditor5.dll")("./src/widget.js")},"dll-reference CKEditor5.dll":function(e){"use strict";e.exports=CKEditor5.dll}},t={};function i(n){var a=t[n];if(void 0!==a)return a.exports;var r=t[n]={exports:{}};return e[n](r,r.exports,i),r.exports}i.d=function(e,t){for(var n in t)i.o(t,n)&&!i.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)};var n={};return function(){"use strict";i.d(n,{default:function(){return ue}});var e=i("ckeditor5/src/core.js"),t=i("ckeditor5/src/widget.js");function a(e){return!!e&&e.is("element","drupalMedia")}function r(e){return(0,t.isWidget)(e)&&!!e.getCustomProperty("drupalMedia")}function o(e){const t=e.getSelectedElement();return a(t)?t:e.getFirstPosition().findAncestor("drupalMedia")}function s(e){const t=e.getSelectedElement();if(t&&r(t))return t;let i=e.getFirstPosition().parent;for(;i;){if(i.is("element")&&r(i))return i;i=i.parent}return null}function l(e){const t=typeof e;return null!=e&&("object"===t||"function"===t)}function d(e){for(const t of e){if(t.hasAttribute("data-drupal-media-preview"))return t;if(t.childCount){const e=d(t.getChildren());if(e)return e}}return null}function u(e){return`drupalElementStyle${e[0].toUpperCase()+e.substring(1)}`}class c extends e.Command{execute(e){const t=this.editor.plugins.get("DrupalMediaEditing"),i=Object.entries(t.attrs).reduce(((e,[t,i])=>(e[i]=t,e)),{}),n=Object.keys(e).reduce(((t,n)=>(i[n]&&(t[i[n]]=e[n]),t)),{});if(this.editor.plugins.has("DrupalElementStyleEditing")){const t=this.editor.plugins.get("DrupalElementStyleEditing"),{normalizedStyles:i}=t;for(const a of Object.keys(i))for(const i of t.normalizedStyles[a])if(e[i.attributeName]&&i.attributeValue===e[i.attributeName]){const e=u(a);n[e]=i.name}}this.editor.model.change((e=>{this.editor.model.insertContent(function(e,t){return e.createElement("drupalMedia",t)}(e,n))}))}refresh(){const e=this.editor.model,t=e.document.selection,i=e.schema.findAllowedParent(t.getFirstPosition(),"drupalMedia");this.isEnabled=null!==i}}const m="METADATA_ERROR";class p extends e.Plugin{static get requires(){return[t.Widget]}constructor(e){super(e),this.attrs={drupalMediaAlt:"alt",drupalMediaEntityType:"data-entity-type",drupalMediaEntityUuid:"data-entity-uuid"},this.converterAttributes=["drupalMediaEntityUuid","drupalElementStyleViewMode","drupalMediaEntityType","drupalMediaAlt"]}init(){const e=this.editor.config.get("drupalMedia");if(!e)return;const{previewURL:t,themeError:i}=e;this.previewUrl=t,this.labelError=Drupal.t("Preview failed"),this.themeError=i||`\n <p>${Drupal.t("An error occurred while trying to preview the media. Please save your work and reload this page.")}<p>\n `,this._defineSchema(),this._defineConverters(),this._defineListeners(),this.editor.commands.add("insertDrupalMedia",new c(this.editor))}upcastDrupalMediaIsImage(e){const{model:t,plugins:i}=this.editor;i.get("DrupalMediaMetadataRepository").getMetadata(e).then((i=>{e&&t.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaIsImage",!!i.imageSourceMetadata,e)}))})).catch((i=>{e&&(console.warn(i.toString()),t.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaIsImage",m,e)})))}))}upcastDrupalMediaType(e){this.editor.plugins.get("DrupalMediaMetadataRepository").getMetadata(e).then((t=>{e&&this.editor.model.enqueueChange({isUndoable:!1},(i=>{i.setAttribute("drupalMediaType",t.type,e)}))})).catch((t=>{e&&(console.warn(t.toString()),this.editor.model.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaType",m,e)})))}))}async _fetchPreview(e){const t={text:this._renderElement(e),uuid:e.getAttribute("drupalMediaEntityUuid")},i=await fetch(`${this.previewUrl}?${new URLSearchParams(t)}`,{headers:{"X-Drupal-MediaPreview-CSRF-Token":this.editor.config.get("drupalMedia").previewCsrfToken}});if(i.ok){return{label:i.headers.get("drupal-media-label"),preview:await i.text()}}return{label:this.labelError,preview:this.themeError}}_defineSchema(){this.editor.model.schema.register("drupalMedia",{allowWhere:"$block",isObject:!0,isContent:!0,isBlock:!0,allowAttributes:Object.keys(this.attrs)}),this.editor.editing.view.domConverter.blockElements.push("drupal-media")}_defineConverters(){const e=this.editor.conversion,i=this.editor.plugins.get("DrupalMediaMetadataRepository");e.for("upcast").elementToElement({view:{name:"drupal-media"},model:"drupalMedia"}).add((e=>{e.on("element:drupal-media",((e,t)=>{const[n]=t.modelRange.getItems();i.getMetadata(n).then((e=>{n&&(this.upcastDrupalMediaIsImage(n),this.editor.model.enqueueChange({isUndoable:!1},(t=>{t.setAttribute("drupalMediaType",e.type,n)})))})).catch((e=>{console.warn(e.toString())}))}),{priority:"lowest"})})),e.for("dataDowncast").elementToElement({model:"drupalMedia",view:{name:"drupal-media"}}),e.for("editingDowncast").elementToElement({model:"drupalMedia",view:(e,{writer:i})=>{const n=i.createContainerElement("figure",{class:"drupal-media"});if(!this.previewUrl){const e=i.createRawElement("div",{"data-drupal-media-preview":"unavailable"});i.insert(i.createPositionAt(n,0),e)}return i.setCustomProperty("drupalMedia",!0,n),(0,t.toWidget)(n,i,{label:Drupal.t("Media widget")})}}).add((e=>{const t=(e,t,i)=>{const n=i.writer,a=t.item,r=i.mapper.toViewElement(t.item);let o=d(r.getChildren());if(o){if("ready"!==o.getAttribute("data-drupal-media-preview"))return;n.setAttribute("data-drupal-media-preview","loading",o)}else o=n.createRawElement("div",{"data-drupal-media-preview":"loading"}),n.insert(n.createPositionAt(r,0),o);this._fetchPreview(a).then((({label:e,preview:t})=>{o&&this.editor.editing.view.change((i=>{const n=i.createRawElement("div",{"data-drupal-media-preview":"ready","aria-label":e},(e=>{e.innerHTML=t}));i.insert(i.createPositionBefore(o),n),i.remove(o)}))}))};return this.converterAttributes.forEach((i=>{e.on(`attribute:${i}:drupalMedia`,t)})),e})),e.for("editingDowncast").add((e=>{e.on("attribute:drupalElementStyleAlign:drupalMedia",((e,t,i)=>{const n={left:"drupal-media-style-align-left",right:"drupal-media-style-align-right",center:"drupal-media-style-align-center"},a=i.mapper.toViewElement(t.item),r=i.writer;n[t.attributeOldValue]&&r.removeClass(n[t.attributeOldValue],a),n[t.attributeNewValue]&&i.consumable.consume(t.item,e.name)&&r.addClass(n[t.attributeNewValue],a)}))})),Object.keys(this.attrs).forEach((t=>{const i={model:{key:t,name:"drupalMedia"},view:{name:"drupal-media",key:this.attrs[t]}};e.for("dataDowncast").attributeToAttribute(i),e.for("upcast").attributeToAttribute(i)}))}_defineListeners(){this.editor.model.on("insertContent",((e,[t])=>{a(t)&&(this.upcastDrupalMediaIsImage(t),this.upcastDrupalMediaType(t))}))}_renderElement(e){const t=this.editor.model.change((t=>{const i=t.createDocumentFragment(),n=t.cloneElement(e,!1);return["linkHref"].forEach((e=>{t.removeAttribute(e,n)})),t.append(n,i),i}));return this.editor.data.stringify(t)}static get pluginName(){return"DrupalMediaEditing"}}var g=i("ckeditor5/src/ui.js");class h extends e.Plugin{init(){const e=this.editor,t=this.editor.config.get("drupalMedia");if(!t)return;const{libraryURL:i,openDialog:n,dialogSettings:a={}}=t;i&&"function"==typeof n&&e.ui.componentFactory.add("drupalMedia",(t=>{const r=e.commands.get("insertDrupalMedia"),o=new g.ButtonView(t);return o.set({label:Drupal.t("Insert Drupal Media"),icon:'<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M19.1873 4.86414L10.2509 6.86414V7.02335H10.2499V15.5091C9.70972 15.1961 9.01793 15.1048 8.34069 15.3136C7.12086 15.6896 6.41013 16.8967 6.75322 18.0096C7.09631 19.1226 8.3633 19.72 9.58313 19.344C10.6666 19.01 11.3484 18.0203 11.2469 17.0234H11.2499V9.80173L18.1803 8.25067V14.3868C17.6401 14.0739 16.9483 13.9825 16.2711 14.1913C15.0513 14.5674 14.3406 15.7744 14.6836 16.8875C15.0267 18.0004 16.2937 18.5978 17.5136 18.2218C18.597 17.8877 19.2788 16.8982 19.1773 15.9011H19.1803V8.02687L19.1873 8.0253V4.86414Z" fill="black"/><path fill-rule="evenodd" clip-rule="evenodd" d="M13.5039 0.743652H0.386932V12.1603H13.5039V0.743652ZM12.3379 1.75842H1.55289V11.1454H1.65715L4.00622 8.86353L6.06254 10.861L9.24985 5.91309L11.3812 9.22179L11.7761 8.6676L12.3379 9.45621V1.75842ZM6.22048 4.50869C6.22048 5.58193 5.35045 6.45196 4.27722 6.45196C3.20398 6.45196 2.33395 5.58193 2.33395 4.50869C2.33395 3.43546 3.20398 2.56543 4.27722 2.56543C5.35045 2.56543 6.22048 3.43546 6.22048 4.50869Z" fill="black"/></svg>\n',tooltip:!0}),o.bind("isOn","isEnabled").to(r,"value","isEnabled"),this.listenTo(o,"execute",(()=>{n(i,(({attributes:t})=>{e.execute("insertDrupalMedia",t)}),a)})),o}))}}class f extends e.Plugin{static get requires(){return[t.WidgetToolbarRepository]}static get pluginName(){return"DrupalMediaToolbar"}afterInit(){const{editor:e}=this;var i;e.plugins.get(t.WidgetToolbarRepository).register("drupalMedia",{ariaLabel:Drupal.t("Drupal Media toolbar"),items:(i=e.config.get("drupalMedia.toolbar"),i.map((e=>l(e)?e.name:e))||[]),getRelatedElement:e=>s(e)})}}class b extends e.Command{refresh(){const e=o(this.editor.model.document.selection);this.isEnabled=!!e&&e.getAttribute("drupalMediaIsImage")&&e.getAttribute("drupalMediaIsImage")!==m,this.isEnabled?this.value=e.getAttribute("drupalMediaAlt"):this.value=!1}execute(e){const{model:t}=this.editor,i=o(t.document.selection);e.newValue=e.newValue.trim(),t.change((t=>{e.newValue.length>0?t.setAttribute("drupalMediaAlt",e.newValue,i):t.removeAttribute("drupalMediaAlt",i)}))}}class w extends e.Plugin{init(){this._data=new WeakMap}getMetadata(e){if(this._data.get(e))return new Promise((t=>{t(this._data.get(e))}));const t=this.editor.config.get("drupalMedia");if(!t)return new Promise(((e,t)=>{t(new Error("drupalMedia configuration is required for parsing metadata."))}));if(!e.hasAttribute("drupalMediaEntityUuid"))return new Promise(((e,t)=>{t(new Error("drupalMedia element must have drupalMediaEntityUuid attribute to retrieve metadata."))}));const{metadataUrl:i}=t;return(async e=>{const t=await fetch(e);if(t.ok)return JSON.parse(await t.text());throw new Error("Fetching media embed metadata from the server failed.")})(`${i}&${new URLSearchParams({uuid:e.getAttribute("drupalMediaEntityUuid")})}`).then((t=>(this._data.set(e,t),t)))}static get pluginName(){return"DrupalMediaMetadataRepository"}}class y extends e.Plugin{static get requires(){return[w]}static get pluginName(){return"MediaImageTextAlternativeEditing"}init(){const{editor:e,editor:{model:t,conversion:i}}=this;t.schema.extend("drupalMedia",{allowAttributes:["drupalMediaIsImage"]}),i.for("editingDowncast").add((e=>{e.on("attribute:drupalMediaIsImage",((e,t,i)=>{const{writer:n,mapper:a}=i,r=a.toViewElement(t.item);if(t.attributeNewValue!==m){const e=Array.from(r.getChildren()).find((e=>e.getCustomProperty("drupalMediaMetadataError")));return void(e&&(n.setCustomProperty("widgetLabel",e.getCustomProperty("drupalMediaOriginalWidgetLabel"),e),n.removeElement(e)))}const o=Drupal.t("Not all functionality may be available because some information could not be retrieved."),s=new g.Template({tag:"span",children:[{tag:"span",attributes:{class:"drupal-media__metadata-error-icon","data-cke-tooltip-text":o}}]}).render(),l=n.createRawElement("div",{class:"drupal-media__metadata-error"},((e,t)=>{t.setContentOf(e,s.outerHTML)}));n.setCustomProperty("drupalMediaMetadataError",!0,l);const d=r.getCustomProperty("widgetLabel");n.setCustomProperty("drupalMediaOriginalWidgetLabel",d,l),n.setCustomProperty("widgetLabel",`${d} (${o})`,r),n.insert(n.createPositionAt(r,0),l)}),{priority:"low"})})),e.commands.add("mediaImageTextAlternative",new b(this.editor))}}function v(e){const t=e.editing.view,i=g.BalloonPanelView.defaultPositions;return{target:t.domConverter.viewToDom(t.document.selection.getSelectedElement()),positions:[i.northArrowSouth,i.northArrowSouthWest,i.northArrowSouthEast,i.southArrowNorth,i.southArrowNorthWest,i.southArrowNorthEast]}}var E=i("ckeditor5/src/utils.js");class M extends g.View{constructor(t){super(t),this.focusTracker=new E.FocusTracker,this.keystrokes=new E.KeystrokeHandler,this.labeledInput=this._createLabeledInputView(),this.set("defaultAltText",void 0),this.defaultAltTextView=this._createDefaultAltTextView(),this.saveButtonView=this._createButton(Drupal.t("Save"),e.icons.check,"ck-button-save"),this.saveButtonView.type="submit",this.cancelButtonView=this._createButton(Drupal.t("Cancel"),e.icons.cancel,"ck-button-cancel","cancel"),this._focusables=new g.ViewCollection,this._focusCycler=new g.FocusCycler({focusables:this._focusables,focusTracker:this.focusTracker,keystrokeHandler:this.keystrokes,actions:{focusPrevious:"shift + tab",focusNext:"tab"}}),this.setTemplate({tag:"form",attributes:{class:["ck","ck-media-alternative-text-form","ck-vertical-form"],tabindex:"-1"},children:[this.defaultAltTextView,this.labeledInput,this.saveButtonView,this.cancelButtonView]}),(0,g.injectCssTransitionDisabler)(this)}render(){super.render(),this.keystrokes.listenTo(this.element),(0,g.submitHandler)({view:this}),[this.labeledInput,this.saveButtonView,this.cancelButtonView].forEach((e=>{this._focusables.add(e),this.focusTracker.add(e.element)}))}_createButton(e,t,i,n){const a=new g.ButtonView(this.locale);return a.set({label:e,icon:t,tooltip:!0}),a.extendTemplate({attributes:{class:i}}),n&&a.delegate("execute").to(this,n),a}_createLabeledInputView(){const e=new g.LabeledFieldView(this.locale,g.createLabeledInputText);return e.label=Drupal.t("Alternative text override"),e}_createDefaultAltTextView(){const e=g.Template.bind(this,this);return new g.Template({tag:"div",attributes:{class:["ck-media-alternative-text-form__default-alt-text",e.if("defaultAltText","ck-hidden",(e=>!e))]},children:[{tag:"strong",attributes:{class:"ck-media-alternative-text-form__default-alt-text-label"},children:[Drupal.t("Default alternative text:")]}," ",{tag:"span",attributes:{class:"ck-media-alternative-text-form__default-alt-text-value"},children:[{text:[e.to("defaultAltText")]}]}]})}}class k extends e.Plugin{static get requires(){return[g.ContextualBalloon]}static get pluginName(){return"MediaImageTextAlternativeUi"}init(){this._createButton(),this._createForm()}destroy(){super.destroy(),this._form.destroy()}_createButton(){const t=this.editor;t.ui.componentFactory.add("mediaImageTextAlternative",(i=>{const n=t.commands.get("mediaImageTextAlternative"),a=new g.ButtonView(i);return a.set({label:Drupal.t("Override media image alternative text"),icon:e.icons.lowVision,tooltip:!0}),a.bind("isVisible").to(n,"isEnabled"),this.listenTo(a,"execute",(()=>{this._showForm()})),a}))}_createForm(){const e=this.editor,t=e.editing.view.document;this._balloon=this.editor.plugins.get("ContextualBalloon"),this._form=new M(e.locale),this._form.render(),this.listenTo(this._form,"submit",(()=>{e.execute("mediaImageTextAlternative",{newValue:this._form.labeledInput.fieldView.element.value}),this._hideForm(!0)})),this.listenTo(this._form,"cancel",(()=>{this._hideForm(!0)})),this._form.keystrokes.set("Esc",((e,t)=>{this._hideForm(!0),t()})),this.listenTo(e.ui,"update",(()=>{s(t.selection)?this._isVisible&&function(e){const t=e.plugins.get("ContextualBalloon");if(s(e.editing.view.document.selection)){const i=v(e);t.updatePosition(i)}}(e):this._hideForm(!0)})),(0,g.clickOutsideHandler)({emitter:this._form,activator:()=>this._isVisible,contextElements:[this._balloon.view.element],callback:()=>this._hideForm()})}_showForm(){if(this._isVisible)return;const e=this.editor,t=e.commands.get("mediaImageTextAlternative"),i=e.plugins.get("DrupalMediaMetadataRepository"),n=this._form.labeledInput;this._form.disableCssTransitions(),this._isInBalloon||this._balloon.add({view:this._form,position:v(e)}),n.fieldView.element.value=t.value||"",n.fieldView.value=n.fieldView.element.value,this._form.defaultAltText="";const r=e.model.document.selection.getSelectedElement();a(r)&&i.getMetadata(r).then((e=>{this._form.defaultAltText=e.imageSourceMetadata?e.imageSourceMetadata.alt:""})).catch((e=>{console.warn(e.toString())})),this._form.labeledInput.fieldView.select(),this._form.enableCssTransitions()}_hideForm(e){this._isInBalloon&&(this._form.focusTracker.isFocused&&this._form.saveButtonView.focus(),this._balloon.remove(this._form),e&&this.editor.editing.view.focus())}get _isVisible(){return this._balloon.visibleView===this._form}get _isInBalloon(){return this._balloon.hasView(this._form)}}class D extends e.Plugin{static get requires(){return[y,k]}static get pluginName(){return"MediaImageTextAlternative"}}function A(e,t,i){if(t.attributes)for(const[n,a]of Object.entries(t.attributes))e.setAttribute(n,a,i);t.styles&&e.setStyle(t.styles,i),t.classes&&e.addClass(t.classes,i)}function C(e,t,i){if(!i.consumable.consume(t.item,e.name))return;const n=i.mapper.toViewElement(t.item);A(i.writer,t.attributeNewValue,n)}class _ extends e.Plugin{constructor(e){if(super(e),!e.plugins.has("GeneralHtmlSupport"))return;e.plugins.has("DataFilter")&&e.plugins.has("DataSchema")||console.error("DataFilter and DataSchema plugins are required for Drupal Media to integrate with General HTML Support plugin.");const{schema:t}=e.model,{conversion:i}=e,n=this.editor.plugins.get("DataFilter");this.editor.plugins.get("DataSchema").registerBlockElement({model:"drupalMedia",view:"drupal-media"}),n.on("register:drupal-media",((e,a)=>{"drupalMedia"===a.model&&(t.extend("drupalMedia",{allowAttributes:["htmlLinkAttributes","htmlAttributes"]}),i.for("upcast").add(function(e){return t=>{t.on("element:drupal-media",((t,i,n)=>{function a(t,a){const r=e.processViewAttributes(t,n);r&&n.writer.setAttribute(a,r,i.modelRange)}const r=i.viewItem,o=r.parent;a(r,"htmlAttributes"),o.is("element","a")&&a(o,"htmlLinkAttributes")}),{priority:"low"})}}(n)),i.for("editingDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{if(!i.consumable.consume(t.item,"attribute:htmlLinkAttributes:drupalMedia"))return;const n=i.mapper.toViewElement(t.item),a=function(e,t,i){const n=e.createRangeOn(t);for(const{item:e}of n.getWalker())if(e.is("element",i))return e}(i.writer,n,"a");A(i.writer,t.item.getAttribute("htmlLinkAttributes"),a)}),{priority:"low"})})),i.for("dataDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{if(!i.consumable.consume(t.item,"attribute:htmlLinkAttributes:drupalMedia"))return;const n=i.mapper.toViewElement(t.item).parent;A(i.writer,t.item.getAttribute("htmlLinkAttributes"),n)}),{priority:"low"}),e.on("attribute:htmlAttributes:drupalMedia",C,{priority:"low"})})),e.stop())}))}static get pluginName(){return"DrupalMediaGeneralHtmlSupport"}}class x extends e.Plugin{static get requires(){return[p,_,h,f,D]}static get pluginName(){return"DrupalMedia"}}var V=i("ckeditor5/src/engine.js");function S(e){return Array.from(e.getChildren()).find((e=>"drupal-media"===e.name))}function T(e){return t=>{t.on(`attribute:${e.id}:drupalMedia`,((t,i,n)=>{const a=n.mapper.toViewElement(i.item);let r=Array.from(a.getChildren()).find((e=>"a"===e.name));if(r=!r&&a.is("element","a")?a:Array.from(a.getAncestors()).find((e=>"a"===e.name)),r){for(const[t,i]of(0,E.toMap)(e.attributes))n.writer.setAttribute(t,i,r);e.classes&&n.writer.addClass(e.classes,r);for(const t in e.styles)Object.prototype.hasOwnProperty.call(e.styles,t)&&n.writer.setStyle(t,e.styles[t],r)}}))}}function I(e,t){return e=>{e.on("element:a",((e,i,n)=>{const a=i.viewItem;if(!S(a))return;const r=new V.Matcher(t._createPattern()).match(a);if(!r)return;if(!n.consumable.consume(a,r.match))return;const o=i.modelCursor.nodeBefore;n.writer.setAttribute(t.id,!0,o)}),{priority:"high"})}}class L extends e.Plugin{static get requires(){return["LinkEditing","DrupalMediaEditing"]}static get pluginName(){return"DrupalLinkMediaEditing"}init(){const{editor:e}=this;e.model.schema.extend("drupalMedia",{allowAttributes:["linkHref"]}),e.conversion.for("upcast").add((e=>{e.on("element:a",((e,t,i)=>{const n=t.viewItem,a=S(n);if(!a)return;if(!i.consumable.consume(n,{attributes:["href"],name:!0}))return;const r=n.getAttribute("href");if(!r)return;const o=i.convertItem(a,t.modelCursor);t.modelRange=o.modelRange,t.modelCursor=o.modelCursor;const s=t.modelCursor.nodeBefore;s&&s.is("element","drupalMedia")&&i.writer.setAttribute("linkHref",r,s)}),{priority:"high"})})),e.conversion.for("editingDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{const{writer:n}=i;if(!i.consumable.consume(t.item,e.name))return;const a=i.mapper.toViewElement(t.item),r=Array.from(a.getChildren()).find((e=>"a"===e.name));if(r)t.attributeNewValue?n.setAttribute("href",t.attributeNewValue,r):(n.move(n.createRangeIn(r),n.createPositionAt(a,0)),n.remove(r));else{const e=Array.from(a.getChildren()).find((e=>e.getAttribute("data-drupal-media-preview"))),i=n.createContainerElement("a",{href:t.attributeNewValue});n.insert(n.createPositionAt(a,0),i),n.move(n.createRangeOn(e),n.createPositionAt(i,0))}}),{priority:"high"})})),e.conversion.for("dataDowncast").add((e=>{e.on("attribute:linkHref:drupalMedia",((e,t,i)=>{const{writer:n}=i;if(!i.consumable.consume(t.item,e.name))return;const a=i.mapper.toViewElement(t.item),r=n.createContainerElement("a",{href:t.attributeNewValue});n.insert(n.createPositionBefore(a),r),n.move(n.createRangeOn(a),n.createPositionAt(r,0))}),{priority:"high"})})),this._enableManualDecorators();if(e.commands.get("link").automaticDecorators.length>0)throw new Error("The Drupal Media plugin is not compatible with automatic link decorators. To use Drupal Media, disable any plugins providing automatic link decorators.")}_enableManualDecorators(){const e=this.editor,t=e.commands.get("link");for(const i of t.manualDecorators)e.model.schema.extend("drupalMedia",{allowAttributes:i.id}),e.conversion.for("downcast").add(T(i)),e.conversion.for("upcast").add(I(0,i))}}class P extends e.Plugin{static get requires(){return["LinkEditing","LinkUI","DrupalMediaEditing"]}static get pluginName(){return"DrupalLinkMediaUi"}init(){const{editor:e}=this,t=e.editing.view.document;this.listenTo(t,"click",((t,i)=>{this._isSelectedLinkedMedia(e.model.document.selection)&&(i.preventDefault(),t.stop())}),{priority:"high"}),this._createToolbarLinkMediaButton()}_createToolbarLinkMediaButton(){const{editor:e}=this;e.ui.componentFactory.add("drupalLinkMedia",(t=>{const i=new g.ButtonView(t),n=e.plugins.get("LinkUI"),a=e.commands.get("link");return i.set({isEnabled:!0,label:Drupal.t("Link media"),icon:'<svg viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg"><path d="m11.077 15 .991-1.416a.75.75 0 1 1 1.229.86l-1.148 1.64a.748.748 0 0 1-.217.206 5.251 5.251 0 0 1-8.503-5.955.741.741 0 0 1 .12-.274l1.147-1.639a.75.75 0 1 1 1.228.86L4.933 10.7l.006.003a3.75 3.75 0 0 0 6.132 4.294l.006.004zm5.494-5.335a.748.748 0 0 1-.12.274l-1.147 1.639a.75.75 0 1 1-1.228-.86l.86-1.23a3.75 3.75 0 0 0-6.144-4.301l-.86 1.229a.75.75 0 0 1-1.229-.86l1.148-1.64a.748.748 0 0 1 .217-.206 5.251 5.251 0 0 1 8.503 5.955zm-4.563-2.532a.75.75 0 0 1 .184 1.045l-3.155 4.505a.75.75 0 1 1-1.229-.86l3.155-4.506a.75.75 0 0 1 1.045-.184z"/></svg>\n',keystroke:"Ctrl+K",tooltip:!0,isToggleable:!0}),i.bind("isEnabled").to(a,"isEnabled"),i.bind("isOn").to(a,"value",(e=>!!e)),this.listenTo(i,"execute",(()=>{this._isSelectedLinkedMedia(e.model.document.selection)?n._addActionsView():n._showUI(!0)})),i}))}_isSelectedLinkedMedia(e){const t=e.getSelectedElement();return!!t&&t.is("element","drupalMedia")&&t.hasAttribute("linkHref")}}class B extends e.Plugin{static get requires(){return[L,P]}static get pluginName(){return"DrupalLinkMedia"}}const{objectFullWidth:O,objectInline:N,objectLeft:R,objectRight:j,objectCenter:F,objectBlockLeft:U,objectBlockRight:H}=e.icons,$={get inline(){return{name:"inline",title:"In line",icon:N,modelElements:["imageInline"],isDefault:!0}},get alignLeft(){return{name:"alignLeft",title:"Left aligned image",icon:R,modelElements:["imageBlock","imageInline"],className:"image-style-align-left"}},get alignBlockLeft(){return{name:"alignBlockLeft",title:"Left aligned image",icon:U,modelElements:["imageBlock"],className:"image-style-block-align-left"}},get alignCenter(){return{name:"alignCenter",title:"Centered image",icon:F,modelElements:["imageBlock"],className:"image-style-align-center"}},get alignRight(){return{name:"alignRight",title:"Right aligned image",icon:j,modelElements:["imageBlock","imageInline"],className:"image-style-align-right"}},get alignBlockRight(){return{name:"alignBlockRight",title:"Right aligned image",icon:H,modelElements:["imageBlock"],className:"image-style-block-align-right"}},get block(){return{name:"block",title:"Centered image",icon:F,modelElements:["imageBlock"],isDefault:!0}},get side(){return{name:"side",title:"Side image",icon:j,modelElements:["imageBlock"],className:"image-style-side"}}},q={full:O,left:U,right:H,center:F,inlineLeft:R,inlineRight:j,inline:N},W=[{name:"imageStyle:wrapText",title:"Wrap text",defaultItem:"imageStyle:alignLeft",items:["imageStyle:alignLeft","imageStyle:alignRight"]},{name:"imageStyle:breakText",title:"Break text",defaultItem:"imageStyle:block",items:["imageStyle:alignBlockLeft","imageStyle:block","imageStyle:alignBlockRight"]}];function K(e){(0,E.logWarning)("image-style-configuration-definition-invalid",e)}var z={normalizeStyles:function(e){return(e.configuredStyles.options||[]).map((e=>function(e){e="string"==typeof e?$[e]?{...$[e]}:{name:e}:function(e,t){const i={...t};for(const n in e)Object.prototype.hasOwnProperty.call(t,n)||(i[n]=e[n]);return i}($[e.name],e);"string"==typeof e.icon&&(e.icon=q[e.icon]||e.icon);return e}(e))).filter((t=>function(e,{isBlockPluginLoaded:t,isInlinePluginLoaded:i}){const{modelElements:n,name:a}=e;if(!(n&&n.length&&a))return K({style:e}),!1;{const a=[t?"imageBlock":null,i?"imageInline":null];if(!n.some((e=>a.includes(e))))return(0,E.logWarning)("image-style-missing-dependency",{style:e,missingPlugins:n.map((e=>"imageBlock"===e?"ImageBlockEditing":"ImageInlineEditing"))}),!1}return!0}(t,e)))},getDefaultStylesConfiguration:function(e,t){return e&&t?{options:["inline","alignLeft","alignRight","alignCenter","alignBlockLeft","alignBlockRight","block","side"]}:e?{options:["block","side"]}:t?{options:["inline","alignLeft","alignRight"]}:{}},getDefaultDropdownDefinitions:function(e){return e.has("ImageBlockEditing")&&e.has("ImageInlineEditing")?[...W]:[]},warnInvalidStyle:K,DEFAULT_OPTIONS:$,DEFAULT_ICONS:q,DEFAULT_DROPDOWN_DEFINITIONS:W};function Z(e,t,i){for(const n of t)if(i.checkAttribute(e,n))return!0;return!1}function G(e,t,i){const n=e.getSelectedElement();if(n&&Z(n,i,t))return n;let{parent:a}=e.getFirstPosition();for(;a;){if(a.is("element")&&Z(a,i,t))return a;a=a.parent}return null}class J extends e.Command{constructor(e,t){super(e),this.styles={},Object.keys(t).forEach((e=>{this.styles[e]=new Map(t[e].map((e=>[e.name,e])))})),this.modelAttributes=[];for(const e of Object.keys(t)){const t=u(e);this.modelAttributes.push(t)}}refresh(){const{editor:e}=this,t=G(e.model.document.selection,e.model.schema,this.modelAttributes);this.isEnabled=!!t,this.isEnabled?this.value=this.getValue(t):this.value=!1}getValue(e){const t={};return Object.keys(this.styles).forEach((i=>{const n=u(i);if(e.hasAttribute(n))t[i]=e.getAttribute(n);else for(const[,e]of this.styles[i])e.isDefault&&(t[i]=e.name)})),t}execute(e={}){const{editor:{model:t}}=this,{value:i,group:n}=e,a=u(n);t.change((e=>{const r=G(t.document.selection,t.schema,this.modelAttributes);!i||this.styles[n].get(i).isDefault?e.removeAttribute(a,r):e.setAttribute(a,i,r)}))}}function X(e,t){for(const i of t)if(i.name===e)return i}class Q extends e.Plugin{init(){const{editor:t}=this,i=t.config.get("drupalElementStyles");this.normalizedStyles={},Object.keys(i).forEach((t=>{this.normalizedStyles[t]=i[t].map((t=>("string"==typeof t.icon&&e.icons[t.icon]&&(t.icon=e.icons[t.icon]),t.name&&(t.name=`${t.name}`),t))).filter((e=>e.isDefault||e.attributeName&&e.attributeValue?e.modelElements&&Array.isArray(e.modelElements)?!!e.name||(console.warn("drupalElementStyles options must include a name."),!1):(console.warn("drupalElementStyles options must include an array of supported modelElements."),!1):(console.warn(`${e.attributeValue} drupalElementStyles options must include attributeName and attributeValue.`),!1)))})),this._setupConversion(),t.commands.add("drupalElementStyle",new J(t,this.normalizedStyles))}_setupConversion(){const{editor:e}=this,{schema:t}=e.model;Object.keys(this.normalizedStyles).forEach((i=>{const n=u(i),a=(r=this.normalizedStyles[i],(e,t,i)=>{if(!i.consumable.consume(t.item,e.name))return;const n=X(t.attributeNewValue,r),a=X(t.attributeOldValue,r),o=i.mapper.toViewElement(t.item),s=i.writer;a&&("class"===a.attributeName?s.removeClass(a.attributeValue,o):s.removeAttribute(a.attributeName,o)),n&&("class"===n.attributeName?s.addClass(n.attributeValue,o):n.isDefault||s.setAttribute(n.attributeName,n.attributeValue,o))});var r;const o=function(e,t){const i=e.filter((e=>!e.isDefault));return(e,n,a)=>{if(!n.modelRange)return;const r=n.viewItem,o=(0,E.first)(n.modelRange.getItems());if(o&&a.schema.checkAttribute(o,t))for(const e of i)if("class"===e.attributeName)a.consumable.consume(r,{classes:e.attributeValue})&&a.writer.setAttribute(t,e.name,o);else if(a.consumable.consume(r,{attributes:[e.attributeName]}))for(const e of i)e.attributeValue===r.getAttribute(e.attributeName)&&a.writer.setAttribute(t,e.name,o)}}(this.normalizedStyles[i],n);e.editing.downcastDispatcher.on(`attribute:${n}`,a),e.data.downcastDispatcher.on(`attribute:${n}`,a);[...new Set(this.normalizedStyles[i].map((e=>e.modelElements)).flat())].forEach((e=>{t.extend(e,{allowAttributes:n})})),e.data.upcastDispatcher.on("element",o,{priority:"low"})}))}static get pluginName(){return"DrupalElementStyleEditing"}}const Y=e=>e,ee=(e,t)=>(e?`${e}: `:"")+t;function te(e,t){return`drupalElementStyle:${t}:${e}`}class ie extends e.Plugin{static get requires(){return[Q]}init(){const{plugins:e}=this.editor,t=this.editor.config.get("drupalMedia.toolbar")||[],i=e.get("DrupalElementStyleEditing").normalizedStyles;Object.keys(i).forEach((e=>{i[e].forEach((t=>{this._createButton(t,e,i[e])}))}));t.filter(l).filter((e=>{const t=[];if(!e.display)return console.warn("dropdown configuration must include a display key specifying either listDropdown or splitButton."),!1;e.items.includes(e.defaultItem)||console.warn("defaultItem must be part of items in the dropdown configuration.");for(const i of e.items){const e=i.split(":")[1];t.push(e)}return!!t.every((e=>e===t[0]))||(console.warn("dropdown configuration should only contain buttons from one group."),!1)})).forEach((e=>{if(e.items.length>=2){const t=e.name.split(":")[1];switch(e.display){case"splitButton":this._createDropdown(e,i[t]);break;case"listDropdown":this._createListDropdown(e,i[t])}}}))}updateOptionVisibility(e,t,i,n){const{selection:a}=this.editor.model.document,r={};r[n]=e;const o=a?a.getSelectedElement():G(a,this.editor.model.schema,r),s=e.filter((function(e){for(const[t,i]of(0,E.toMap)(e.modelAttributes))if(o&&o.hasAttribute(t))return i.includes(o.getAttribute(t));return!0}));i.hasOwnProperty("model")?s.includes(t)?i.model.set({class:""}):i.model.set({class:"ck-hidden"}):s.includes(t)?i.set({class:""}):i.set({class:"ck-hidden"})}_createDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,(n=>{let a;const{defaultItem:r,items:o,title:s}=e,l=o.filter((e=>{const i=e.split(":")[1];return t.find((({name:t})=>te(t,i)===e))})).map((e=>{const t=i.create(e);return e===r&&(a=t),t}));o.length!==l.length&&z.warnInvalidStyle({dropdown:e});const d=(0,g.createDropdown)(n,g.SplitButtonView),u=d.buttonView;return(0,g.addToolbarToDropdown)(d,l),u.set({label:ee(s,a.label),class:null,tooltip:!0}),u.bind("icon").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Y);return t<0?a.icon:l[t].icon})),u.bind("label").toMany(l,"isOn",((...e)=>{const t=e.findIndex(Y);return ee(s,t<0?a.label:l[t].label)})),u.bind("isOn").toMany(l,"isOn",((...e)=>e.some(Y))),u.bind("class").toMany(l,"isOn",((...e)=>e.some(Y)?"ck-splitbutton_flatten":null)),u.on("execute",(()=>{l.some((({isOn:e})=>e))?d.isOpen=!d.isOpen:a.fire("execute")})),d.bind("isEnabled").toMany(l,"isEnabled",((...e)=>e.some(Y))),d}))}_createButton(e,t,i){const n=e.name;this.editor.ui.componentFactory.add(te(n,t),(a=>{const r=this.editor.commands.get("drupalElementStyle"),o=new g.ButtonView(a);return o.set({label:e.title,icon:e.icon,tooltip:!0,isToggleable:!0}),o.bind("isEnabled").to(r,"isEnabled"),o.bind("isOn").to(r,"value",(e=>e&&e[t]===n)),o.on("execute",this._executeCommand.bind(this,n,t)),this.listenTo(this.editor.ui,"update",(()=>{this.updateOptionVisibility(i,e,o,t)})),o}))}getDropdownListItemDefinitions(e,t,i){const n=new E.Collection;return e.forEach((t=>{const a={type:"button",model:new g.Model({group:i,commandValue:t.name,label:t.title,withText:!0,class:""})};n.add(a),this.listenTo(this.editor.ui,"update",(()=>{this.updateOptionVisibility(e,t,a,i)}))})),n}_createListDropdown(e,t){const i=this.editor.ui.componentFactory;i.add(e.name,(n=>{let a;const{defaultItem:r,items:o,title:s,defaultText:l}=e,d=e.name.split(":")[1],u=o.filter((e=>t.find((({name:t})=>te(t,d)===e)))).map((e=>{const t=i.create(e);return e===r&&(a=t),t}));o.length!==u.length&&z.warnInvalidStyle({dropdown:e});const c=(0,g.createDropdown)(n,g.DropdownButtonView),m=c.buttonView;m.set({label:ee(s,a.label),class:null,tooltip:l,withText:!0});const p=this.editor.commands.get("drupalElementStyle");return m.bind("label").to(p,"value",(e=>{if(e&&e[d])for(const i of t)if(i.name===e[d])return i.title;return l})),c.bind("isOn").to(p),c.bind("isEnabled").to(this),(0,g.addListToDropdown)(c,this.getDropdownListItemDefinitions(t,p,d)),this.listenTo(c,"execute",(e=>{this._executeCommand(e.source.commandValue,e.source.group)})),c}))}_executeCommand(e,t){this.editor.execute("drupalElementStyle",{value:e,group:t}),this.editor.editing.view.focus()}static get pluginName(){return"DrupalElementStyleUi"}}class ne extends e.Plugin{static get requires(){return[Q,ie]}static get pluginName(){return"DrupalElementStyle"}}function ae(e){const t=e.getFirstPosition().findAncestor("caption");return t&&a(t.parent)?t:null}function re(e){for(const t of e.getChildren())if(t&&t.is("element","caption"))return t;return null}class oe extends e.Command{refresh(){const e=this.editor.model.document.selection,t=e.getSelectedElement();if(!t)return this.isEnabled=!!o(e),void(this.value=!!ae(e));this.isEnabled=a(t),this.isEnabled?this.value=!!re(t):this.value=!1}execute(e={}){const{focusCaptionOnShow:t}=e;this.editor.model.change((e=>{this.value?this._hideDrupalMediaCaption(e):this._showDrupalMediaCaption(e,t)}))}_showDrupalMediaCaption(e,t){const i=this.editor.model.document.selection,n=this.editor.plugins.get("DrupalMediaCaptionEditing"),a=o(i),r=n._getSavedCaption(a)||e.createElement("caption");e.append(r,a),t&&e.setSelection(r,"in")}_hideDrupalMediaCaption(e){const t=this.editor,i=t.model.document.selection,n=t.plugins.get("DrupalMediaCaptionEditing");let a,r=i.getSelectedElement();r?a=re(r):(a=ae(i),r=o(i)),n._saveCaption(r,a),e.setSelection(r,"on"),e.remove(a)}}class se extends e.Plugin{static get requires(){return[]}static get pluginName(){return"DrupalMediaCaptionEditing"}constructor(e){super(e),this._savedCaptionsMap=new WeakMap}init(){const e=this.editor,t=e.model.schema;t.isRegistered("caption")?t.extend("caption",{allowIn:"drupalMedia"}):t.register("caption",{allowIn:"drupalMedia",allowContentOf:"$block",isLimit:!0}),e.commands.add("toggleMediaCaption",new oe(e)),this._setupConversion()}_setupConversion(){const e=this.editor,i=e.editing.view;var n;e.conversion.for("upcast").add(function(e){const t=(t,i,n)=>{const{viewItem:a}=i,{writer:r,consumable:o}=n;if(!i.modelRange||!o.consume(a,{attributes:["data-caption"]}))return;const s=r.createElement("caption"),l=i.modelRange.start.nodeAfter,d=e.data.processor.toView(a.getAttribute("data-caption")),u=r.createDocumentFragment();n.consumable.constructor.createFrom(d,n.consumable),n.convertChildren(d,u);for(const e of Array.from(u.getChildren()))r.append(e,s);r.append(s,l)};return e=>{e.on("element:drupal-media",t,{priority:"low"})}}(e)),e.conversion.for("editingDowncast").elementToElement({model:"caption",view:(e,{writer:n})=>{if(!a(e.parent))return null;const r=n.createEditableElement("figcaption");return(0,V.enablePlaceholder)({view:i,element:r,text:Drupal.t("Enter media caption"),keepOnFocus:!0}),(0,t.toWidgetEditable)(r,n)}}),e.editing.mapper.on("modelToViewPosition",(n=i,(e,t)=>{const i=t.modelPosition,r=i.parent;if(!a(r))return;const o=t.mapper.toViewElement(r);t.viewPosition=n.createPositionAt(o,i.offset+1)})),e.conversion.for("dataDowncast").add(function(e){return t=>{t.on("insert:caption",((t,i,n)=>{const{consumable:r,writer:o,mapper:s}=n;if(!a(i.item.parent)||!r.consume(i.item,"insert"))return;const l=e.model.createRangeIn(i.item),d=o.createDocumentFragment();s.bindElements(i.item,d);for(const{item:t}of Array.from(l)){const i={item:t,range:e.model.createRangeOn(t)},a=`insert:${t.name||"$text"}`;e.data.downcastDispatcher.fire(a,i,n);for(const a of t.getAttributeKeys())Object.assign(i,{attributeKey:a,attributeOldValue:null,attributeNewValue:i.item.getAttribute(a)}),e.data.downcastDispatcher.fire(`attribute:${a}`,i,n)}for(const e of o.createRangeIn(d).getItems())s.unbindViewElement(e);s.unbindViewElement(d);const u=e.data.processor.toData(d);if(u){const e=s.toViewElement(i.item.parent);o.setAttribute("data-caption",u,e)}}))}}(e))}_getSavedCaption(e){const t=this._savedCaptionsMap.get(e);return t?V.Element.fromJSON(t):null}_saveCaption(e,t){this._savedCaptionsMap.set(e,t.toJSON())}}class le extends e.Plugin{static get requires(){return[]}static get pluginName(){return"DrupalMediaCaptionUI"}init(){const{editor:t}=this,i=t.editing.view;t.ui.componentFactory.add("toggleDrupalMediaCaption",(n=>{const a=new g.ButtonView(n),r=t.commands.get("toggleMediaCaption");return a.set({label:Drupal.t("Caption media"),icon:e.icons.caption,tooltip:!0,isToggleable:!0}),a.bind("isOn","isEnabled").to(r,"value","isEnabled"),a.bind("label").to(r,"value",(e=>e?Drupal.t("Toggle caption off"):Drupal.t("Toggle caption on"))),this.listenTo(a,"execute",(()=>{t.execute("toggleMediaCaption",{focusCaptionOnShow:!0});const e=ae(t.model.document.selection);if(e){const n=t.editing.mapper.toViewElement(e);i.scrollToTheSelection(),i.change((e=>{e.addClass("drupal-media__caption_highlighted",n)}))}t.editing.view.focus()})),a}))}}class de extends e.Plugin{static get requires(){return[se,le]}static get pluginName(){return"DrupalMediaCaption"}}var ue={DrupalMedia:x,MediaImageTextAlternative:D,MediaImageTextAlternativeEditing:y,MediaImageTextAlternativeUi:k,DrupalLinkMedia:B,DrupalMediaCaption:de,DrupalElementStyle:ne}}(),n=n.default}()})); \ No newline at end of file diff --git a/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imagealternativetext/drupalimagealternativetextui.js b/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imagealternativetext/drupalimagealternativetextui.js index 6d29ea57468e95719ed32a9cff28837d556d38ff..597ebda91e0b6d3397bb48b42982fac510e290a1 100644 --- a/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imagealternativetext/drupalimagealternativetextui.js +++ b/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/imagealternativetext/drupalimagealternativetextui.js @@ -61,20 +61,26 @@ export default class DrupalImageAlternativeTextUi extends Plugin { this._createForm(); this._createMissingAltTextComponent(); + const showAlternativeTextForm = () => { + const imageUtils = this.editor.plugins.get('ImageUtils'); + // Show form after upload if there's an image widget in the current + // selection. + if ( + imageUtils.getClosestSelectedImageWidget( + this.editor.editing.view.document.selection, + ) + ) { + this._showForm(); + } + }; + + if (this.editor.commands.get('insertImage')) { + const insertImage = this.editor.commands.get('insertImage'); + insertImage.on('execute', showAlternativeTextForm); + } if (this.editor.plugins.has('ImageUploadEditing')) { const imageUploadEditing = this.editor.plugins.get('ImageUploadEditing'); - const imageUtils = this.editor.plugins.get('ImageUtils'); - imageUploadEditing.on('uploadComplete', () => { - // Show form after upload if there's image widget in the current - // selection. - if ( - imageUtils.getClosestSelectedImageWidget( - this.editor.editing.view.document.selection, - ) - ) { - this._showForm(); - } - }); + imageUploadEditing.on('uploadComplete', showAlternativeTextForm); } } diff --git a/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/index.js b/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/index.js index a1d1bf2f238342392f68ac1b7ef1e5e51569092b..18e04bdbf97b38d53537385ab08da845f65046c0 100644 --- a/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/index.js +++ b/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/index.js @@ -1,7 +1,8 @@ -// cspell:ignore imageupload imageresize drupalimage drupalimageupload drupalimageresize +// cspell:ignore imageupload imageresize insertimage drupalimage drupalimageupload drupalimageresize drupalinsertimage import DrupalImage from './drupalimage'; import DrupalImageUpload from './imageupload/drupalimageupload'; +import DrupalInsertImage from './insertimage/drupalinsertimage'; /** * @private @@ -9,4 +10,5 @@ import DrupalImageUpload from './imageupload/drupalimageupload'; export default { DrupalImage, DrupalImageUpload, + DrupalInsertImage, }; diff --git a/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/insertimage/drupalinsertimage.js b/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/insertimage/drupalinsertimage.js new file mode 100644 index 0000000000000000000000000000000000000000..b75c8a851f89861941a121c8ccd67c59357189b9 --- /dev/null +++ b/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalImage/src/insertimage/drupalinsertimage.js @@ -0,0 +1,43 @@ +/* eslint-disable import/no-extraneous-dependencies */ +import { Plugin } from 'ckeditor5/src/core'; + +/** + * Provides a toolbar item for inserting images. + * + * @private + */ +class DrupalInsertImage extends Plugin { + /** + * @inheritdoc + */ + init() { + const { editor } = this; + editor.ui.componentFactory.add('drupalInsertImage', () => { + // Use upstream insertImage component when ImageInsertUI is enabled. The + // upstream insertImage button supports inserting of external images + // and uploading images. Out-of-the-box Drupal only uses the insertImage + // button for inserting external images. + if (editor.plugins.has('ImageInsertUI')) { + return editor.ui.componentFactory.create('insertImage'); + } + // If ImageInsertUI plugin is not enabled, fallback to using uploadImage + // upstream button. + if (editor.plugins.has('ImageUpload')) { + return editor.ui.componentFactory.create('uploadImage'); + } + + throw new Error( + 'drupalInsertImage requires either ImageUpload or ImageInsertUI plugin to be enabled.', + ); + }); + } + + /** + * @inheritdoc + */ + static get pluginName() { + return 'DrupalInsertImage'; + } +} + +export default DrupalInsertImage; diff --git a/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmediaediting.js b/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmediaediting.js index 04432fe8603c72e812162cc8983bf64255c6c50a..658e6ee66b9f952e7e37ee25f3d684a7247c8d59 100644 --- a/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmediaediting.js +++ b/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupallinkmedia/drupallinkmediaediting.js @@ -160,7 +160,7 @@ function editingDowncastMediaLink() { // element which makes caused re-render of the media preview, making // the media preview flicker once when media is unlinked. // @todo ensure that this doesn't cause flickering after - // https://www.drupal.org/i/3246380 has been addressed. + // https://www.drupal.org/i/3304834 has been addressed. writer.move( writer.createRangeIn(linkInMedia), writer.createPositionAt(mediaContainer, 0), diff --git a/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediacaption/drupalmediacaptionui.js b/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediacaption/drupalmediacaptionui.js index f77ec170983987636da296221635afe27785f7eb..c5f89893c8ecdef5b83897d3dd6aadddf0c3529c 100644 --- a/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediacaption/drupalmediacaptionui.js +++ b/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediacaption/drupalmediacaptionui.js @@ -70,6 +70,7 @@ export default class DrupalMediaCaptionUI extends Plugin { ); }); } + editor.editing.view.focus(); }); return button; diff --git a/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediaediting.js b/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediaediting.js index 5f94ca74631b6e6743c216a919d814007cb6caec..4cc4ca70c851f25ca8cb0aacbedf8029564ecb43 100644 --- a/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediaediting.js +++ b/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/drupalmediaediting.js @@ -27,15 +27,26 @@ export default class DrupalMediaEditing extends Plugin { return [Widget]; } - /** - * @inheritdoc - */ - init() { + constructor(editor) { + super(editor); + this.attrs = { drupalMediaAlt: 'alt', drupalMediaEntityType: 'data-entity-type', drupalMediaEntityUuid: 'data-entity-uuid', }; + this.converterAttributes = [ + 'drupalMediaEntityUuid', + 'drupalElementStyleViewMode', + 'drupalMediaEntityType', + 'drupalMediaAlt', + ]; + } + + /** + * @inheritdoc + */ + init() { const options = this.editor.config.get('drupalMedia'); if (!options) { return; @@ -360,13 +371,9 @@ export default class DrupalMediaEditing extends Plugin { // List all attributes that should trigger re-rendering of the // preview. - dispatcher.on('attribute:drupalMediaEntityUuid:drupalMedia', converter); - dispatcher.on( - 'attribute:drupalElementStyleViewMode:drupalMedia', - converter, - ); - dispatcher.on('attribute:drupalMediaEntityType:drupalMedia', converter); - dispatcher.on('attribute:drupalMediaAlt:drupalMedia', converter); + this.converterAttributes.forEach((attribute) => { + dispatcher.on(`attribute:${attribute}:drupalMedia`, converter); + }); return dispatcher; }); diff --git a/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeediting.js b/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeediting.js index 78021cd85fae8beadf93c0fec4cf972998063010..994c6b83fc40566bf11d7dc4186fb0566e1ac404 100644 --- a/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeediting.js +++ b/web/core/modules/ckeditor5/js/ckeditor5_plugins/drupalMedia/src/mediaimagetextalternative/mediaimagetextalternativeediting.js @@ -2,7 +2,7 @@ /* cspell:words mediaimagetextalternativecommand drupalmediametadatarepository insertdrupalmediacommand */ import { Plugin } from 'ckeditor5/src/core'; -import { TooltipView, Template } from 'ckeditor5/src/ui'; +import { Template } from 'ckeditor5/src/ui'; import MediaImageTextAlternativeCommand from './mediaimagetextalternativecommand'; import DrupalMediaMetadataRepository from '../drupalmediametadatarepository'; import { METADATA_ERROR } from './utils'; @@ -74,10 +74,6 @@ export default class MediaImageTextAlternativeEditing extends Plugin { 'Not all functionality may be available because some information could not be retrieved.', ); - const tooltip = new TooltipView(); - tooltip.text = message; - tooltip.position = 'sw'; - const html = new Template({ tag: 'span', children: [ @@ -85,9 +81,9 @@ export default class MediaImageTextAlternativeEditing extends Plugin { tag: 'span', attributes: { class: 'drupal-media__metadata-error-icon', + 'data-cke-tooltip-text': message, }, }, - tooltip, ], }).render(); diff --git a/web/core/modules/ckeditor5/src/HTMLRestrictions.php b/web/core/modules/ckeditor5/src/HTMLRestrictions.php index 25503760afcc9244264c7dccf2db7eb83978b30e..f7be01a33d5a3cc38a84d76fc1a388eec4e0c4e3 100644 --- a/web/core/modules/ckeditor5/src/HTMLRestrictions.php +++ b/web/core/modules/ckeditor5/src/HTMLRestrictions.php @@ -38,9 +38,6 @@ * * @see ::WILDCARD_ELEMENT_METHODS * - * NOTE: Currently only supports the 'allowed' portion. - * @todo Add support for "forbidden" tags in https://www.drupal.org/project/drupal/issues/3231336 - * * @internal */ final class HTMLRestrictions { @@ -238,6 +235,9 @@ private static function validateAllowedRestrictionsPhase4(array $elements): void if ($html_tag_attribute_restrictions === []) { throw new \InvalidArgumentException(sprintf('The "%s" HTML tag has an attribute restriction "%s" which is set to the empty array. This is not permitted, specify either TRUE to allow all attribute values, or list the attribute value restrictions.', $html_tag_name, $html_tag_attribute_name)); } + if (array_key_exists('*', $html_tag_attribute_restrictions)) { + throw new \InvalidArgumentException(sprintf('The "%s" HTML tag has an attribute restriction "%s" with a "*" allowed attribute value. This implies all attributes values are allowed. Remove the attribute value restriction instead, or use a prefix (`*-foo`), infix (`*-foo-*`) or suffix (`foo-*`) wildcard restriction instead.', $html_tag_name, $html_tag_attribute_name)); + } // @codingStandardsIgnoreLine if (!Inspector::assertAll(function ($v) { return $v === TRUE; }, $html_tag_attribute_restrictions)) { throw new \InvalidArgumentException(sprintf('The "%s" HTML tag has attribute restriction "%s", but it is not an array of key-value pairs, with HTML tag attribute values as keys and TRUE as values.', $html_tag_name, $html_tag_attribute_name)); @@ -308,7 +308,6 @@ public static function fromTextFormat(FilterFormatInterface $text_format): HTMLR * @return \Drupal\ckeditor5\HTMLRestrictions */ private static function unrestricted(): self { - // @todo Refine in https://www.drupal.org/project/drupal/issues/3231336, including adding support for all operations. $restrictions = HTMLRestrictions::emptySet(); $restrictions->unrestricted = TRUE; return $restrictions; @@ -337,28 +336,20 @@ private static function fromObjectWithHtmlRestrictions(object $object): HTMLRest throw new \InvalidArgumentException(); } - if ($object->getHtmlRestrictions() === FALSE) { - // @todo Refine in https://www.drupal.org/project/drupal/issues/3231336 - return self::unrestricted(); - } - $restrictions = $object->getHTMLRestrictions(); - if (!isset($restrictions['allowed'])) { - // @todo Handle HTML restrictor filters that only set forbidden_tags - // https://www.drupal.org/project/ckeditor5/issues/3231336. - throw new \DomainException('text formats with only filters that forbid tags rather than allowing tags are not yet supported.'); + if ($restrictions === FALSE || $restrictions === []) { + return self::unrestricted(); } // When allowing all tags on an attribute, transform FilterHtml output from // ['tag' => ['*'=> TRUE]] to ['tag' => TRUE] - foreach ($restrictions['allowed'] as $element => $attributes) { + $allowed = $restrictions['allowed']; + foreach ($allowed as $element => $attributes) { if (is_array($attributes) && isset($attributes['*']) && $attributes['*'] === TRUE) { - $restrictions['allowed'][$element] = TRUE; + $allowed[$element] = TRUE; } } - $allowed = $restrictions['allowed']; - return new self($allowed); } diff --git a/web/core/modules/ckeditor5/src/Plugin/CKEditor4To5Upgrade/Core.php b/web/core/modules/ckeditor5/src/Plugin/CKEditor4To5Upgrade/Core.php index 14b3c74eebb0df87f043060911e217a815ec0e7a..64cca06877d3d4cdee20a1bf6bea7679be7b1b80 100644 --- a/web/core/modules/ckeditor5/src/Plugin/CKEditor4To5Upgrade/Core.php +++ b/web/core/modules/ckeditor5/src/Plugin/CKEditor4To5Upgrade/Core.php @@ -80,7 +80,7 @@ public function mapCKEditor4ToolbarButtonToCKEditor5ToolbarItem(string $cke4_but switch ($cke4_button) { // @see \Drupal\ckeditor\Plugin\CKEditorPlugin\DrupalImage case 'DrupalImage': - return ['uploadImage']; + return ['drupalInsertImage']; // @see \Drupal\ckeditor\Plugin\CKEditorPlugin\DrupalLink case 'DrupalLink': diff --git a/web/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/DynamicPluginConfigWithCsrfTokenUrlTrait.php b/web/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/DynamicPluginConfigWithCsrfTokenUrlTrait.php index 953cec0ac10565ffc0b36309d46150ea10f840de..997a984df16c45d04be4da598d9458e7f0f8f95d 100644 --- a/web/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/DynamicPluginConfigWithCsrfTokenUrlTrait.php +++ b/web/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/DynamicPluginConfigWithCsrfTokenUrlTrait.php @@ -23,7 +23,7 @@ * @see \Drupal\Core\Access\RouteProcessorCsrf::processOutbound() * @see \Drupal\Core\Render\BubbleableMetadata * @see \Drupal\editor\Plugin\EditorPluginInterface::getJSSettings() - * @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\ImageUpload::getDynamicPluginConfig() + * @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Image::getDynamicPluginConfig() * @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Media::getDynamicPluginConfig() * @see https://www.drupal.org/project/drupal/issues/2512132 * diff --git a/web/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/ImageUpload.php b/web/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Image.php similarity index 60% rename from web/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/ImageUpload.php rename to web/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Image.php index aa1d68267bf9453270b169abace39102252b290f..e2fa3d90062105a07ad8fe1e995e38a5dc182c4b 100644 --- a/web/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/ImageUpload.php +++ b/web/core/modules/ckeditor5/src/Plugin/CKEditor5Plugin/Image.php @@ -11,41 +11,13 @@ use Drupal\Core\Url; use Drupal\editor\EditorInterface; -// cspell:ignore imageupload - /** * CKEditor 5 Image plugin. * - * @CKEditor5Plugin( - * id = "ckeditor5_imageUpload", - * ckeditor5 = @CKEditor5AspectsOfCKEditor5Plugin( - * plugins = {"image.ImageUpload", "drupalImage.DrupalImageUpload"}, - * config = { - * "image" = { - * "upload" = { - * "types" = { "jpeg", "png", "gif" } - * } - * } - * }, - * ), - * drupal = @DrupalAspectsOfCKEditor5Plugin( - * label = @Translation("Image Upload"), - * elements = false, - * admin_library = "ckeditor5/admin.imageupload", - * toolbar_items = { - * "uploadImage" = { "label" = "Image upload" } - * }, - * conditions = { - * "toolbarItem" = "uploadImage", - * "imageUploadStatus" = true, - * } - * ) - * ) - * * @internal * Plugin classes are internal. */ -class ImageUpload extends CKEditor5PluginDefault implements CKEditor5PluginConfigurableInterface { +class Image extends CKEditor5PluginDefault implements CKEditor5PluginConfigurableInterface { use CKEditor5PluginConfigurableTrait; use DynamicPluginConfigWithCsrfTokenUrlTrait; @@ -54,16 +26,20 @@ class ImageUpload extends CKEditor5PluginDefault implements CKEditor5PluginConfi * {@inheritdoc} */ public function getDynamicPluginConfig(array $static_plugin_config, EditorInterface $editor): array { - return $static_plugin_config + [ - 'drupalImageUpload' => [ - 'uploadUrl' => self::getUrlWithReplacedCsrfTokenPlaceholder( - Url::fromRoute('ckeditor5.upload_image') - ->setRouteParameter('editor', $editor->getFilterFormat()->id()) - ), - 'withCredentials' => TRUE, - 'headers' => ['Accept' => 'application/json', 'text/javascript'], - ], - ]; + $config = $static_plugin_config; + if ($editor->getImageUploadSettings()['status'] === TRUE) { + $config += [ + 'drupalImageUpload' => [ + 'uploadUrl' => self::getUrlWithReplacedCsrfTokenPlaceholder( + Url::fromRoute('ckeditor5.upload_image') + ->setRouteParameter('editor', $editor->getFilterFormat()->id()) + ), + 'withCredentials' => TRUE, + 'headers' => ['Accept' => 'application/json', 'text/javascript'], + ], + ]; + } + return $config; } /** diff --git a/web/core/modules/ckeditor5/src/Plugin/CKEditor5PluginDefinition.php b/web/core/modules/ckeditor5/src/Plugin/CKEditor5PluginDefinition.php index 7c84ff59b0bd73c72ba0cf495f8801fa807c73a7..1f6e96e64e89bd3576cf557f02e7594bfcb2c2e6 100644 --- a/web/core/modules/ckeditor5/src/Plugin/CKEditor5PluginDefinition.php +++ b/web/core/modules/ckeditor5/src/Plugin/CKEditor5PluginDefinition.php @@ -444,13 +444,18 @@ public function hasAdminLibrary(): bool { /** * Gets the list of elements and attributes this plugin allows to create/edit. * - * @return string[]|false - * FALSE if this plugin does not create/edit any elements or attributes. - * Otherwise a list. + * @return string[] + * A list of elements and attributes. * * @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin::$elements + * + * @throws \LogicException + * When called on a plugin definition that has no elements. */ - public function getElements() { + public function getElements(): array { + if (!$this->hasElements()) { + throw new \LogicException('::getElements() should only be called if ::hasElements() returns TRUE.'); + } return $this->drupal['elements']; } @@ -498,7 +503,7 @@ public static function isCreatableElement(string $element): bool { * @see \Drupal\ckeditor5\Annotation\DrupalAspectsOfCKEditor5Plugin::$elements */ public function hasElements(): bool { - return $this->getElements() !== FALSE; + return $this->drupal['elements'] !== FALSE; } /** diff --git a/web/core/modules/ckeditor5/src/Plugin/CKEditor5PluginManager.php b/web/core/modules/ckeditor5/src/Plugin/CKEditor5PluginManager.php index fe2d7992cd013ca49a6a76714a3574d67f3e9ae1..a5f58e55cb336fdf9b26ca6d0031cbe783f932c5 100644 --- a/web/core/modules/ckeditor5/src/Plugin/CKEditor5PluginManager.php +++ b/web/core/modules/ckeditor5/src/Plugin/CKEditor5PluginManager.php @@ -432,10 +432,7 @@ protected function isPluginDisabled(CKEditor5PluginInterface $plugin, EditorInte case 'imageUploadStatus': $image_upload_status = $editor->getImageUploadSettings()['status'] ?? FALSE; - if (!$image_upload_status) { - return TRUE; - } - break; + return $image_upload_status !== $required_value; case 'filter': $filters = $editor->getFilterFormat()->filters(); diff --git a/web/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php b/web/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php index eb3c6df06e2d80c0607c899c8bba1137af2a9f26..a31831a2c5b7d3030ecfa3f7a2009bf51fcc7fb4 100644 --- a/web/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php +++ b/web/core/modules/ckeditor5/src/Plugin/Editor/CKEditor5.php @@ -296,7 +296,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta // Ensure that CKEditor 5 plugins that need to interact with the Editor // config entity are able to access the computed Editor, which was cloned // from $form_state->get('editor'). - // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\ImageUpload::buildConfigurationForm + // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Image::buildConfigurationForm $form_state->set('editor', $editor); } @@ -374,7 +374,7 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta $editor_settings = $editor->getSettings(); // This form field requires a JSON-style array of valid toolbar items. - // e.g. ["bold","italic","|","uploadImage"]. + // e.g. ["bold","italic","|","drupalInsertImage"]. // CKEditor 5 config for toolbar items takes an array of strings which // correspond to the keys under toolbar_items in a plugin yml or annotation. // @see https://ckeditor.com/docs/ckeditor5/latest/features/toolbar/toolbar.html @@ -633,7 +633,7 @@ public function validateConfigurationForm(array &$form, FormStateInterface $form $plugin = $this->ckeditor5PluginManager->getPlugin($plugin_id, NULL); // If this plugin is configurable but it has empty default configuration, // that means the configuration must be stored out of band. - // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\ImageUpload + // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Image // @see editor_image_upload_settings_form() $default_configuration = $plugin->defaultConfiguration(); $configuration_stored_out_of_band = empty($default_configuration); diff --git a/web/core/modules/ckeditor5/src/Plugin/Validation/Constraint/EnabledConfigurablePluginsConstraintValidator.php b/web/core/modules/ckeditor5/src/Plugin/Validation/Constraint/EnabledConfigurablePluginsConstraintValidator.php index d4d350c27d635aea5c9c4324692163b18d79f5b3..1a01b4212d470c0da084c85afc05dab755b72c57 100644 --- a/web/core/modules/ckeditor5/src/Plugin/Validation/Constraint/EnabledConfigurablePluginsConstraintValidator.php +++ b/web/core/modules/ckeditor5/src/Plugin/Validation/Constraint/EnabledConfigurablePluginsConstraintValidator.php @@ -40,12 +40,15 @@ public function validate($settings, Constraint $constraint) { } foreach ($configurable_enabled_definitions as $id => $definition) { - if ($definition->hasConditions() && isset($definition->getConditions()['imageUploadStatus']) && $definition->getConditions()['imageUploadStatus'] === TRUE) { - // This is the exception to the rule: this is a privileged plugin due to - // the Text Editor config entity's built-in image upload settings. - // @see \Drupal\editor\Entity\Editor::getImageUploadSettings() - // @see editor_image_upload_settings_form() - // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\ImageUpload::buildConfigurationForm() + // Create a fresh instance of this CKEditor 5 plugin, not tied to a text + // editor configuration entity. + $plugin = $this->pluginManager->getPlugin($id, NULL); + // If this plugin is configurable but it has empty default configuration, + // that means the configuration must be stored out of band. + // @see \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Image + // @see editor_image_upload_settings_form() + $default_configuration = $plugin->defaultConfiguration(); + if ($default_configuration === []) { continue; } diff --git a/web/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraint.php b/web/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraint.php index 26f3757574406b3f0d1e4a43e5ccdda00c60e114..72407dd539d6bb7b0b142de9e9c50f586cfbc4bc 100644 --- a/web/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraint.php +++ b/web/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraint.php @@ -25,13 +25,6 @@ class FundamentalCompatibilityConstraint extends Constraint { */ public $noMarkupFiltersMessage = 'CKEditor 5 only works with HTML-based text formats. The "%filter_label" (%filter_plugin_id) filter implies this text format is not HTML anymore.'; - /** - * The violation message when fundamental HTML elements are forbidden. - * - * @var string - */ - public $forbiddenElementsMessage = 'CKEditor 5 needs at least the <p> and <br> tags to be allowed to be able to function. They are forbidden by the "%filter_label" (%filter_plugin_id) filter.'; - /** * The violation message when fundamental HTML elements are not allowed. * diff --git a/web/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraintValidator.php b/web/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraintValidator.php index c072222f043b528f676f567aa291e47eeb49a039..16e54a8ed8f0c2f92edc8d7c33e3bbf39fd0289d 100644 --- a/web/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraintValidator.php +++ b/web/core/modules/ckeditor5/src/Plugin/Validation/Constraint/FundamentalCompatibilityConstraintValidator.php @@ -119,27 +119,13 @@ private function checkNoMarkupFilters(FilterFormatInterface $text_format, Fundam * The constraint to validate. */ private function checkHtmlRestrictionsAreCompatible(FilterFormatInterface $text_format, FundamentalCompatibilityConstraint $constraint): void { - $fundamental = new HTMLRestrictions($this->pluginManager->getProvidedElements(self::FUNDAMENTAL_CKEDITOR5_PLUGINS)); - - // @todo Remove in favor of HTMLRestrictions::diff() in https://www.drupal.org/project/drupal/issues/3231336 - $html_restrictions = $text_format->getHtmlRestrictions(); - $minimum_tags = array_keys($fundamental->getAllowedElements()); - $forbidden_minimum_tags = isset($html_restrictions['forbidden_tags']) - ? array_diff($minimum_tags, $html_restrictions['forbidden_tags']) - : []; - if (!empty($forbidden_minimum_tags)) { - $offending_filter = static::findHtmlRestrictorFilterForbiddingTags($text_format, $minimum_tags); - $this->context->buildViolation($constraint->forbiddenElementsMessage) - ->setParameter('%filter_label', (string) $offending_filter->getLabel()) - ->setParameter('%filter_plugin_id', $offending_filter->getPluginId()) - ->addViolation(); - } - - // @todo Remove early return in https://www.drupal.org/project/drupal/issues/3231336 - if (!isset($html_restrictions['allowed'])) { + $html_restrictions = HTMLRestrictions::fromTextFormat($text_format); + if ($html_restrictions->isUnrestricted()) { return; } - if (!$fundamental->diff(HTMLRestrictions::fromTextFormat($text_format))->allowsNothing()) { + + $fundamental = new HTMLRestrictions($this->pluginManager->getProvidedElements(self::FUNDAMENTAL_CKEDITOR5_PLUGINS)); + if (!$fundamental->diff($html_restrictions)->allowsNothing()) { $offending_filter = static::findHtmlRestrictorFilterNotAllowingTags($text_format, $fundamental); $this->context->buildViolation($constraint->nonAllowedElementsMessage) ->setParameter('%filter_label', (string) $offending_filter->getLabel()) @@ -287,47 +273,6 @@ private static function getFiltersInFormatOfType(FilterFormatInterface $text_for } } - /** - * Analyzes a text format to find the filter not allowing required tags. - * - * @param \Drupal\filter\FilterFormatInterface $text_format - * A text format whose filters to check for compatibility. - * @param string[] $required_tags - * A list of HTML tags that are required. - * - * @return \Drupal\filter\Plugin\FilterInterface - * The filter plugin instance not allowing the required tags. - * - * @throws \InvalidArgumentException - */ - private static function findHtmlRestrictorFilterForbiddingTags(FilterFormatInterface $text_format, array $required_tags): FilterInterface { - // Get HTML restrictor filters that actually restrict HTML. - $filters = static::getFiltersInFormatOfType( - $text_format, - FilterInterface::TYPE_HTML_RESTRICTOR, - function (FilterInterface $filter) { - return $filter->getHTMLRestrictions() !== FALSE; - } - ); - - foreach ($filters as $filter) { - $restrictions = $filter->getHTMLRestrictions(); - - // @todo Fix - // \Drupal\filter_test\Plugin\Filter\FilterTestRestrictTagsAndAttributes::getHTMLRestrictions(), - // whose computed value for forbidden_tags does not comply with the API - // https://www.drupal.org/project/drupal/issues/3231331. - if (array_keys($restrictions['forbidden_tags']) != range(0, count($restrictions['forbidden_tags']))) { - $restrictions['forbidden_tags'] = array_keys($restrictions['forbidden_tags']); - } - if (isset($restrictions['forbidden_tags']) && !empty(array_intersect($required_tags, $restrictions['forbidden_tags']))) { - return $filter; - } - } - - throw new \InvalidArgumentException('This text format does not have a "tags forbidden" restriction that includes the required tags.'); - } - /** * Analyzes a text format to find the filter not allowing required tags. * diff --git a/web/core/modules/ckeditor5/src/Plugin/Validation/Constraint/StyleSensibleElementConstraintValidator.php b/web/core/modules/ckeditor5/src/Plugin/Validation/Constraint/StyleSensibleElementConstraintValidator.php index 4be7d8ba1402b272f055325487c7bdf5176d4833..9c0622716a46a9aeb16bf4fa0d5a73e3ee0a0795 100644 --- a/web/core/modules/ckeditor5/src/Plugin/Validation/Constraint/StyleSensibleElementConstraintValidator.php +++ b/web/core/modules/ckeditor5/src/Plugin/Validation/Constraint/StyleSensibleElementConstraintValidator.php @@ -107,7 +107,24 @@ private static function intersectionWithClasses(HTMLRestrictions $a, HTMLRestric $tags_from_b = array_diff(array_keys($b->getConcreteSubset()->getAllowedElements()), ['*']); $a = $a->merge(new HTMLRestrictions(array_fill_keys($tags_from_b, FALSE))); $b = $b->merge(new HTMLRestrictions(array_fill_keys($tags_from_a, FALSE))); - $intersection = $a->intersect($b); + // When a plugin allows all classes on a tag, we assume there is no + // problem with having the style plugin adding classes to that element. + // When allowing all classes we don't expect a specific user experience + // so adding a class through a plugin or the style plugin is the same. + $b_without_class_wildcard = $b->getAllowedElements(); + foreach ($b_without_class_wildcard as $allowedElement => $config) { + // When all classes are allowed, remove the configuration so that + // the intersect below does not include classes. + if (!empty($config['class']) && $config['class'] === TRUE) { + unset($b_without_class_wildcard[$allowedElement]['class']); + } + // HTMLRestrictions does not accept a tag with an empty array, make sure + // to remove them here. + if (empty($b_without_class_wildcard[$allowedElement])) { + unset($b_without_class_wildcard[$allowedElement]); + } + } + $intersection = $a->intersect(new HTMLRestrictions($b_without_class_wildcard)); // Leverage the "GHS configuration" representation to easily find whether // there is an intersection for classes. Other implementations are possible. diff --git a/web/core/modules/ckeditor5/src/SmartDefaultSettings.php b/web/core/modules/ckeditor5/src/SmartDefaultSettings.php index bfff98d50ca5a14fea95aa2df3dff677e18be036..8be6e9c72937de1e83c59e30e915456d70905a49 100644 --- a/web/core/modules/ckeditor5/src/SmartDefaultSettings.php +++ b/web/core/modules/ckeditor5/src/SmartDefaultSettings.php @@ -122,7 +122,7 @@ public function computeSmartDefaultSettings(?EditorInterface $text_editor, Filte // Overwrite the Editor config entity object's $filterFormat property, to // prevent calls to Editor::hasAssociatedFilterFormat() and // Editor::getFilterFormat() from loading the FilterFormat from storage. - // @todo Remove in https://www.drupal.org/project/ckeditor5/issues/3218985. + // @todo Remove in https://www.drupal.org/project/drupal/issues/3231347. $reflector = new \ReflectionObject($text_editor); $property = $reflector->getProperty('filterFormat'); $property->setAccessible(TRUE); @@ -150,10 +150,13 @@ public function computeSmartDefaultSettings(?EditorInterface $text_editor, Filte // if it exists. $old_editor = $editor->id() ? Editor::load($editor->id()) : NULL; $old_editor_restrictions = $old_editor ? HTMLRestrictions::fromTextFormat($old_editor->getFilterFormat()) : HTMLRestrictions::emptySet(); + // @todo Remove in https://www.drupal.org/project/drupal/issues/3245351 + if ($old_editor) { + $editor->setImageUploadSettings($old_editor->getImageUploadSettings()); + } if ($old_editor && $old_editor->getEditor() === 'ckeditor') { [$upgraded_settings, $messages] = $this->createSettingsFromCKEditor4($old_editor->getSettings(), HTMLRestrictions::fromTextFormat($old_editor->getFilterFormat())); $editor->setSettings($upgraded_settings); - $editor->setImageUploadSettings($old_editor->getImageUploadSettings()); // *Before* determining which elements are still needed for this text // format, ensure that all already enabled plugins that are configurable // have valid settings. @@ -926,14 +929,15 @@ private function addDefaultSettingsForEnabledConfigurablePlugins(EditorInterface }); foreach ($configurable_definitions as $plugin_name => $definition) { - // Skip image upload as its configuration is stored in a discrete - // property of the $editor object, not its settings. Also skip any plugin + $default_plugin_configuration = $this->pluginManager->getPlugin($plugin_name, NULL)->defaultConfiguration(); + // Skip plugins with an empty default configuration, the plugin + // configuration is most likely stored elsewhere. Also skip any plugin // that already has configuration data as default values are not needed. - if ($plugin_name === 'ckeditor5_imageUpload' || isset($settings['plugins'][$plugin_name])) { + if ($default_plugin_configuration === [] || isset($settings['plugins'][$plugin_name])) { continue; } $update_settings = TRUE; - $settings['plugins'][$plugin_name] = $this->pluginManager->getPlugin($plugin_name, NULL)->defaultConfiguration(); + $settings['plugins'][$plugin_name] = $default_plugin_configuration; } if ($update_settings) { diff --git a/web/core/modules/ckeditor5/tests/fixtures/update/ckeditor5-3222756.php b/web/core/modules/ckeditor5/tests/fixtures/update/ckeditor5-3222756.php new file mode 100644 index 0000000000000000000000000000000000000000..4d4b348ab6ca4cbab504d7a008fd016e3e4e76ce --- /dev/null +++ b/web/core/modules/ckeditor5/tests/fixtures/update/ckeditor5-3222756.php @@ -0,0 +1,75 @@ +<?php + +/** + * @file + * Test fixture. + */ + +use Drupal\Core\Database\Database; +use Drupal\Core\Serialization\Yaml; + +$connection = Database::getConnection(); + +// Update core.extension. +$extensions = $connection->select('config') + ->fields('config', ['data']) + ->condition('collection', '') + ->condition('name', 'core.extension') + ->execute() + ->fetchField(); +$extensions = unserialize($extensions); +$extensions['module']['ckeditor5'] = 0; +$connection->update('config') + ->fields(['data' => serialize($extensions)]) + ->condition('collection', '') + ->condition('name', 'core.extension') + ->execute(); + +// Add all ckeditor5_removed_post_updates() as existing updates. +require_once __DIR__ . '/../../../../ckeditor5/ckeditor5.post_update.php'; +if (function_exists('ckeditor5_removed_post_updates')) { + $existing_updates = $connection->select('key_value') + ->fields('key_value', ['value']) + ->condition('collection', 'post_update') + ->condition('name', 'existing_updates') + ->execute() + ->fetchField(); + $existing_updates = unserialize($existing_updates); + $existing_updates = array_merge( + $existing_updates, + array_keys(ckeditor5_removed_post_updates()), + ); + $connection->update('key_value') + ->fields(['value' => serialize($existing_updates)]) + ->condition('collection', 'post_update') + ->condition('name', 'existing_updates') + ->execute(); +} + +$test_format_image_format = Yaml::decode(file_get_contents(__DIR__ . '/filter.format.test_format_image.yml')); +$connection->insert('config') + ->fields([ + 'collection', + 'name', + 'data', + ]) + ->values([ + 'collection' => '', + 'name' => 'filter.format.test_format_image', + 'data' => serialize($test_format_image_format), + ]) + ->execute(); + +$test_format_image_editor = Yaml::decode(file_get_contents(__DIR__ . '/editor.editor.test_format_image.yml')); +$connection->insert('config') + ->fields([ + 'collection', + 'name', + 'data', + ]) + ->values([ + 'collection' => '', + 'name' => 'editor.editor.test_format_image', + 'data' => serialize($test_format_image_editor), + ]) + ->execute(); diff --git a/web/core/modules/ckeditor5/tests/fixtures/update/editor.editor.test_format_image.yml b/web/core/modules/ckeditor5/tests/fixtures/update/editor.editor.test_format_image.yml new file mode 100644 index 0000000000000000000000000000000000000000..d2648ae9f098673c33803d960e6cb25d5d7f845c --- /dev/null +++ b/web/core/modules/ckeditor5/tests/fixtures/update/editor.editor.test_format_image.yml @@ -0,0 +1,31 @@ +uuid: f962b8c7-4c74-4100-b6de-08e6a65ff43c +langcode: en +status: true +dependencies: + config: + - filter.format.test_format_image + module: + - ckeditor5 +format: test_format_image +editor: ckeditor5 +settings: + toolbar: + items: + - bold + - italic + - uploadImage + - sourceEditing + plugins: + ckeditor5_imageResize: + allow_resize: false + ckeditor5_sourceEditing: + allowed_tags: + - <img data-foo> +image_upload: + status: true + scheme: public + directory: inline-images + max_size: '' + max_dimensions: + width: 0 + height: 0 diff --git a/web/core/modules/ckeditor5/tests/fixtures/update/filter.format.test_format_image.yml b/web/core/modules/ckeditor5/tests/fixtures/update/filter.format.test_format_image.yml new file mode 100644 index 0000000000000000000000000000000000000000..8a627257557817f64e55b12feb56413b14bde0d5 --- /dev/null +++ b/web/core/modules/ckeditor5/tests/fixtures/update/filter.format.test_format_image.yml @@ -0,0 +1,17 @@ +uuid: 343a36d6-5852-45f5-b4de-437551cb9cae +langcode: en +status: true +dependencies: { } +name: 'Test format with image toolbar item' +format: test_format_image +weight: 0 +filters: + filter_html: + id: filter_html + provider: filter + status: true + weight: -10 + settings: + allowed_html: '<br> <p> <strong> <em> <img src alt data-entity-uuid data-entity-type height width data-foo>' + filter_html_help: true + filter_html_nofollow: false diff --git a/web/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_conditions_test/ckeditor5_plugin_conditions_test.ckeditor5.yml b/web/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_conditions_test/ckeditor5_plugin_conditions_test.ckeditor5.yml index 6319b3c588e0303dba78ba54d5c0516655a40b53..9a4623964a2f29d988db8de47e079cb073aec753 100644 --- a/web/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_conditions_test/ckeditor5_plugin_conditions_test.ckeditor5.yml +++ b/web/core/modules/ckeditor5/tests/modules/ckeditor5_plugin_conditions_test/ckeditor5_plugin_conditions_test.ckeditor5.yml @@ -12,3 +12,15 @@ ckeditor5_plugin_conditions_test_plugins_condition: - ckeditor5_table elements: - <foo> + +ckeditor5_plugin_conditions_test_plugin_allow_all_classes_on_kbd: + ckeditor5: + plugins: {} + drupal: + label: TEST — Allow all classes on kbd + toolbar_items: + kbdAllClasses: + label: All classes on kbd (Test Plugins Condition) + elements: + - <kbd> + - <kbd class> diff --git a/web/core/modules/ckeditor5/tests/src/Functional/AddedStylesheetsTest.php b/web/core/modules/ckeditor5/tests/src/Functional/AddedStylesheetsTest.php index ca685439fb55f12d12a75ce780412e9e08795cb4..50ed5a93ae63060962eac30d6ffabdaeb483ca58 100644 --- a/web/core/modules/ckeditor5/tests/src/Functional/AddedStylesheetsTest.php +++ b/web/core/modules/ckeditor5/tests/src/Functional/AddedStylesheetsTest.php @@ -83,6 +83,7 @@ function (ConstraintViolation $v) { 'use text format llama', 'administer themes', 'view the administration theme', + 'administer filters', ]); $this->drupalLogin($this->adminUser); } @@ -102,6 +103,11 @@ public function testCkeditorStylesheets() { $this->drupalGet('node/add/article'); $assert_session->responseNotContains('test_ckeditor_stylesheets_relative/css/yokotsoko.css'); + // Confirm that the missing ckeditor5-stylesheets configuration can be + // bypassed. + $this->drupalGet('admin/config/content/formats/manage/llama'); + $assert_session->pageTextNotContains('ckeditor_stylesheets configured without a corresponding ckeditor5-stylesheets configuration.'); + // Install a theme with ckeditor5-stylesheets configured. Do this manually // to confirm `library_info` cache tags are invalidated. $this->drupalGet('admin/appearance'); diff --git a/web/core/modules/ckeditor5/tests/src/Functional/ImageUploadTest.php b/web/core/modules/ckeditor5/tests/src/Functional/ImageUploadTest.php index bfd749851408cef4f72251b165ffb3e8ba2d7985..038e4a6afa2fe144dad92b6e5dff29b7dca4bd8e 100644 --- a/web/core/modules/ckeditor5/tests/src/Functional/ImageUploadTest.php +++ b/web/core/modules/ckeditor5/tests/src/Functional/ImageUploadTest.php @@ -221,7 +221,7 @@ protected function createEditorWithUpload(array $upload_config) { 'settings' => [ 'toolbar' => [ 'items' => [ - 'uploadImage', + 'drupalInsertImage', ], ], 'plugins' => [], diff --git a/web/core/modules/ckeditor5/tests/src/Functional/Update/CKEditor5UpdateAlignmentTest.php b/web/core/modules/ckeditor5/tests/src/Functional/Update/CKEditor5UpdateAlignmentTest.php index 7ba87460f18095784e0124201b96928a3e5ce701..e05e7108108701599a365543f9cfaaac84cf33a5 100644 --- a/web/core/modules/ckeditor5/tests/src/Functional/Update/CKEditor5UpdateAlignmentTest.php +++ b/web/core/modules/ckeditor5/tests/src/Functional/Update/CKEditor5UpdateAlignmentTest.php @@ -25,7 +25,7 @@ class CKEditor5UpdateAlignmentTest extends UpdatePathTestBase { */ protected function setDatabaseDumpFiles() { $this->databaseDumpFiles = [ - __DIR__ . '/../../../../../system/tests/fixtures/update/drupal-9.3.0.filled.standard.php.gz', + __DIR__ . '/../../../../../system/tests/fixtures/update/drupal-9.3.0.bare.standard.php.gz', __DIR__ . '/../../../fixtures/update/ckeditor5-3259593.php', ]; } diff --git a/web/core/modules/ckeditor5/tests/src/Functional/Update/CKEditor5UpdateImageToolbarItemTest.php b/web/core/modules/ckeditor5/tests/src/Functional/Update/CKEditor5UpdateImageToolbarItemTest.php new file mode 100644 index 0000000000000000000000000000000000000000..a08f314f223cbcf4c21ccaefa8e09f447b8be3d9 --- /dev/null +++ b/web/core/modules/ckeditor5/tests/src/Functional/Update/CKEditor5UpdateImageToolbarItemTest.php @@ -0,0 +1,205 @@ +<?php + +namespace Drupal\Tests\ckeditor5\Functional\Update; + +use Drupal\ckeditor5\HTMLRestrictions; +use Drupal\ckeditor5\Plugin\Editor\CKEditor5; +use Drupal\editor\EditorInterface; +use Drupal\editor\Entity\Editor; +use Drupal\filter\Entity\FilterFormat; +use Drupal\filter\FilterFormatInterface; +use Drupal\FunctionalTests\Update\UpdatePathTestBase; +use Drupal\Tests\ckeditor5\Traits\CKEditor5TestTrait; +use Symfony\Component\Validator\ConstraintViolation; + +/** + * Tests the update path for the CKEditor 5 image toolbar item. + * + * @group Update + */ +class CKEditor5UpdateImageToolbarItemTest extends UpdatePathTestBase { + + use CKEditor5TestTrait; + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + /** + * {@inheritdoc} + */ + protected function setDatabaseDumpFiles() { + $this->databaseDumpFiles = [ + __DIR__ . '/../../../../../system/tests/fixtures/update/drupal-9.3.0.bare.standard.php.gz', + __DIR__ . '/../../../fixtures/update/ckeditor5-3222756.php', + ]; + } + + /** + * Tests that `uploadImage` toolbar item is updated to `drupalInsertImage`. + * + * @dataProvider provider + */ + public function test(bool $filter_html_is_enabled, bool $image_uploads_are_enabled, bool $source_editing_is_already_enabled, array $expected_source_editing_additions): void { + // Apply tweaks for the currently provided test case. + $format = FilterFormat::load('test_format_image'); + if (!$filter_html_is_enabled) { + $format->setFilterConfig('filter_html', ['status' => FALSE]); + } + $editor = Editor::load('test_format_image'); + if (!$image_uploads_are_enabled) { + $editor->setImageUploadSettings(['status' => FALSE]); + } + if (!$source_editing_is_already_enabled) { + $settings = $editor->getSettings(); + // Remove the `sourceEditing` toolbar item. + unset($settings['toolbar']['items'][3]); + // Remove the corresponding plugin settings (allowing `<img data-foo>`). + unset($settings['plugins']['ckeditor5_sourceEditing']); + $editor->setSettings($settings); + if ($filter_html_is_enabled) { + // Stop allowing `<img data-foo>`. + $filter_html_config = $format->filters('filter_html') + ->getConfiguration(); + $filter_html_config['settings']['allowed_html'] = str_replace('data-foo', '', $filter_html_config['settings']['allowed_html']); + $format->setFilterConfig('filter_html', $filter_html_config); + } + } + $format->trustData()->save(); + $editor->trustData()->save(); + + // Run update path; snapshot the Text Format and Editor before and after. + $editor_before = Editor::load('test_format_image'); + $filter_format_before = $editor->getFilterFormat(); + $this->runUpdates(); + $editor_after = Editor::load('test_format_image'); + $filter_format_after = $editor->getFilterFormat(); + + // 1. Toolbar item: `uploadImage` -> `drupalInsertImage`, position must be + // unchanged. + $this->assertContains('uploadImage', $editor_before->getSettings()['toolbar']['items']); + $this->assertNotContains('drupalInsertImage', $editor_before->getSettings()['toolbar']['items']); + $this->assertNotContains('uploadImage', $editor_after->getSettings()['toolbar']['items']); + $this->assertContains('drupalInsertImage', $editor_after->getSettings()['toolbar']['items']); + $this->assertSame( + array_search('uploadImage', $editor_before->getSettings()['toolbar']['items']), + array_search('drupalInsertImage', $editor_after->getSettings()['toolbar']['items']) + ); + + // 2. Even though `sourceEditing` may not be enabled before this update, it + // must be after, at least if image uploads are disabled: extra mark-up will + // be added to its configuration to avoid breaking backwards compatibility. + if (!$image_uploads_are_enabled) { + if (!$source_editing_is_already_enabled) { + $this->assertNotContains('sourceEditing', $editor_before->getSettings()['toolbar']['items']); + } + $this->assertContains('sourceEditing', $editor_after->getSettings()['toolbar']['items']); + $source_editing_before = $source_editing_is_already_enabled + ? static::getSourceEditingRestrictions($editor_before) + : HTMLRestrictions::emptySet(); + $source_editing_after = static::getSourceEditingRestrictions($editor_after); + if ($source_editing_is_already_enabled) { + // Nothing has been removed from the allowed source editing tags. + $this->assertFalse($source_editing_before->allowsNothing()); + $this->assertTrue($source_editing_before->diff($source_editing_after) + ->allowsNothing()); + } + $this->assertSame($expected_source_editing_additions, $source_editing_after->diff($source_editing_before) + ->toCKEditor5ElementsArray()); + } + // Otherwise verify that sourceEditing configuration remains unchanged. + else { + if (!$source_editing_is_already_enabled) { + $this->assertNotContains('sourceEditing', $editor_before->getSettings()['toolbar']['items']); + } + else { + $this->assertContains('sourceEditing', $editor_before->getSettings()['toolbar']['items']); + $this->assertSame( + static::getSourceEditingRestrictions($editor_before)->toCKEditor5ElementsArray(), + static::getSourceEditingRestrictions($editor_after)->toCKEditor5ElementsArray() + ); + } + } + + // 3. `filter_html` restrictions MUST remain unchanged. + if ($filter_html_is_enabled) { + $filter_html_before = static::getFilterHtmlRestrictions($filter_format_before); + $filter_html_after = static::getFilterHtmlRestrictions($filter_format_after); + $this->assertTrue($filter_html_before->diff($filter_html_after)->allowsNothing()); + $this->assertTrue($filter_html_after->diff($filter_html_before)->allowsNothing()); + } + + // 4. After: text format and editor still form a valid pair. + $this->assertSame([], array_map( + function (ConstraintViolation $v) { + return (string) $v->getMessage(); + }, + iterator_to_array(CKEditor5::validatePair($editor_after, $filter_format_after)) + )); + } + + /** + * Data provider for ::test(). + * + * @return array + * The test cases. + */ + public function provider(): array { + // There are 3 aspects that need to be verified, each can be true or false, + // making for 8 test cases in total. + $test_cases = []; + foreach ([TRUE, FALSE] as $filter_html_is_enabled) { + $test_case_label_part_one = sprintf("filter_html %s", $filter_html_is_enabled ? 'enabled' : 'disabled'); + foreach ([TRUE, FALSE] as $image_uploads_enabled) { + $test_case_label_part_two = sprintf("image uploads %s", $image_uploads_enabled ? 'enabled' : 'disabled'); + foreach ([TRUE, FALSE] as $source_editing_already_enabled) { + $test_case_label_part_three = sprintf("sourceEditing initially %s", $source_editing_already_enabled ? 'enabled' : 'disabled'); + // Generate the test case. + $label = implode(', ', [$test_case_label_part_one, $test_case_label_part_two, $test_case_label_part_three]); + $test_cases[$label] = [ + 'filter_html' => $filter_html_is_enabled, + 'image uploads' => $image_uploads_enabled, + 'sourceEditing already enabled' => $source_editing_already_enabled, + 'expected sourceEditing additions' => $image_uploads_enabled + ? [] + : ['<img data-entity-uuid data-entity-type>'], + ]; + } + } + } + return $test_cases; + } + + /** + * Gets the configured HTML restrictions for the Source Editing plugin. + * + * @param \Drupal\editor\EditorInterface $editor + * Text editor configured to use CKEditor 5, with Source Editing enabled. + * + * @return \Drupal\ckeditor5\HTMLRestrictions + * The configured HTML restrictions. + */ + private static function getSourceEditingRestrictions(EditorInterface $editor): HTMLRestrictions { + $settings = $editor->getSettings(); + $source_editing_allowed_tags = $settings['plugins']['ckeditor5_sourceEditing']['allowed_tags']; + return HTMLRestrictions::fromString(implode(' ', $source_editing_allowed_tags)); + } + + /** + * Gets the configured restrictions for the `filter_html` filter plugin. + * + * @param \Drupal\filter\FilterFormatInterface $format + * Text format configured to use `filter_html`. + * + * @return \Drupal\ckeditor5\HTMLRestrictions + * The configured HTML restrictions. + */ + private static function getFilterHtmlRestrictions(FilterFormatInterface $format): HTMLRestrictions { + $allowed_html = $format + ->filters('filter_html') + ->getConfiguration()['settings']['allowed_html']; + return HTMLRestrictions::fromString($allowed_html); + } + +} diff --git a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/AdminUiTest.php b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/AdminUiTest.php index 2d237aaeb4560214834443f923a7ec08a1ee9a8e..2de19d1813833aee7a0ffcfaa4545d6bd66b0141 100644 --- a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/AdminUiTest.php +++ b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/AdminUiTest.php @@ -17,7 +17,7 @@ class AdminUiTest extends CKEditor5TestBase { */ protected static $modules = [ 'media_library', - 'ckeditor', + 'editor_test', 'ckeditor5_incompatible_filter_test', ]; @@ -28,7 +28,7 @@ public function testSettingsOnlyFireAjaxWithCkeditor5() { $page = $this->getSession()->getPage(); $assert_session = $this->assertSession(); $this->addNewTextFormat($page, $assert_session); - $this->addNewTextFormat($page, $assert_session, 'ckeditor'); + $this->addNewTextFormat($page, $assert_session, 'unicorn'); $this->drupalGet('admin/config/content/formats/manage/ckeditor5'); $number_ajax_instances_before = $this->getSession()->evaluateScript('Drupal.ajax.instances.length'); @@ -47,7 +47,7 @@ public function testSettingsOnlyFireAjaxWithCkeditor5() { // Perform the same steps as above with CKEditor, and confirm AJAX callbacks // are not triggered on settings changes. - $this->drupalGet('admin/config/content/formats/manage/ckeditor'); + $this->drupalGet('admin/config/content/formats/manage/unicorn'); $number_ajax_instances_before = $this->getSession()->evaluateScript('Drupal.ajax.instances.length'); // Enable media embed to confirm a format not using CKEditor 5 will not @@ -105,7 +105,7 @@ public function testSettingsOnlyFireAjaxWithCkeditor5() { public function testUnavailableFiltersHiddenWhenSwitching() { $page = $this->getSession()->getPage(); $assert_session = $this->assertSession(); - $this->createNewTextFormat($page, $assert_session, 'ckeditor'); + $this->createNewTextFormat($page, $assert_session, 'unicorn'); $assert_session->assertWaitOnAjaxRequest(); $assert_session->pageTextNotContains('Filter settings'); diff --git a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5AllowedTagsTest.php b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5AllowedTagsTest.php index f668d63da65ab5d6f0ceb1bdf47ab17613ca530b..737cb527b1834c2b9d170b6b7a26c3cce7ab6fa4 100644 --- a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5AllowedTagsTest.php +++ b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5AllowedTagsTest.php @@ -22,7 +22,7 @@ class CKEditor5AllowedTagsTest extends CKEditor5TestBase { */ protected static $modules = [ 'node', - 'ckeditor', + 'editor_test', 'ckeditor5', 'media', 'media_library', @@ -37,18 +37,20 @@ class CKEditor5AllowedTagsTest extends CKEditor5TestBase { protected $allowedElements = '<br> <p> <h2> <h3> <h4> <h5> <h6> <strong> <em>'; /** - * The default allowed elements when updating a non-CKEditor 5 editor. + * The default allowed elements for filter_html's "allowed_html" setting. + * + * @see \Drupal\filter\Plugin\Filter\FilterHtml * * @var string */ - protected $defaultElementsWhenUpdatingNotCkeditor5 = '<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <img src alt data-entity-type data-entity-uuid>'; + protected $defaultElementsWhenUpdatingNotCkeditor5 = "<a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type='1 A I'> <li> <dl> <dt> <dd> <h2 id='jump-*'> <h3 id> <h4 id> <h5 id> <h6 id>"; /** - * The expected allowed elements after updating to CKEditor5. + * The expected allowed elements after updating to CKEditor 5. * * @var string */ - protected $defaultElementsAfterUpdatingToCkeditor5 = '<br> <p> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <cite> <dl> <dt> <dd> <img src alt data-entity-type data-entity-uuid> <a hreflang href> <blockquote cite> <ul type> <ol type start> <strong> <em> <code> <li>'; + protected $defaultElementsAfterUpdatingToCkeditor5 = '<br> <p> <h2 id="jump-*"> <h3 id> <h4 id> <h5 id> <h6 id> <cite> <dl> <dt> <dd> <a hreflang href> <blockquote cite> <ul type> <ol type="1 A I" start> <strong> <em> <code> <li>'; /** * Test enabling CKEditor 5 in a way that triggers validation. @@ -60,8 +62,8 @@ public function testEnablingToVersion5Validation() { $incompatible_filter_name = 'filters[filter_incompatible][status]'; $filter_warning = 'CKEditor 5 only works with HTML-based text formats. The "A TYPE_MARKUP_LANGUAGE filter incompatible with CKEditor 5" (filter_incompatible) filter implies this text format is not HTML anymore.'; - $this->createNewTextFormat($page, $assert_session, 'ckeditor'); - $page->selectFieldOption('editor[editor]', 'ckeditor'); + $this->createNewTextFormat($page, $assert_session, 'unicorn'); + $page->selectFieldOption('editor[editor]', 'unicorn'); $assert_session->assertWaitOnAjaxRequest(); $page->checkField('filters[filter_html][status]'); $page->checkField($incompatible_filter_name); @@ -81,31 +83,16 @@ public function testEnablingToVersion5Validation() { } /** - * Tests that when image uploads are enabled in CKEditor 4, they remain in 5. + * Tests that when image uploads were enabled, they remain enabled. */ public function testImageUploadsRemainEnabled(): void { FilterFormat::create([ - 'format' => 'cke4_image_uploads', - 'name' => 'CKEditor 4, image uploads', + 'format' => 'editor_with_image_uploads', + 'name' => 'Text Editor with image uploads enabled', ])->save(); Editor::create([ - 'format' => 'cke4_image_uploads', - 'editor' => 'ckeditor', - 'settings' => [ - 'toolbar' => [ - 'rows' => [ - 0 => [ - [ - 'name' => 'Media', - 'items' => [ - 'DrupalImage', - ], - ], - ], - ], - ], - 'plugins' => [], - ], + 'format' => 'editor_with_image_uploads', + 'editor' => 'unicorn', 'image_upload' => [ 'status' => TRUE, 'scheme' => 'public', @@ -122,13 +109,19 @@ public function testImageUploadsRemainEnabled(): void { $assert_session = $this->assertSession(); // Assert that image uploads are enabled initially. - $this->drupalGet('admin/config/content/formats/manage/cke4_image_uploads'); + $this->drupalGet('admin/config/content/formats/manage/editor_with_image_uploads'); $this->assertTrue($page->hasCheckedField('Enable image uploads')); // Switch the text format to CKEditor 5. $page->selectFieldOption('editor[editor]', 'ckeditor5'); $assert_session->assertWaitOnAjaxRequest(); + // Enable the image toolbar item. This does NOT enable image uploads: it + // triggers the image upload settings form to become visible, to allow the + // image upload status to be checked. + $this->triggerKeyUp('.ckeditor5-toolbar-item-drupalInsertImage', 'ArrowDown'); + $assert_session->assertWaitOnAjaxRequest(); + // Assert that image uploads are still enabled. $this->assertTrue($page->hasCheckedField('Enable image uploads')); } @@ -140,7 +133,7 @@ public function testSwitchToVersion5() { $page = $this->getSession()->getPage(); $assert_session = $this->assertSession(); - $this->createNewTextFormat($page, $assert_session, 'ckeditor'); + $this->createNewTextFormat($page, $assert_session, 'unicorn'); $assert_session->assertWaitOnAjaxRequest(); // Enable the HTML filter. @@ -148,15 +141,15 @@ public function testSwitchToVersion5() { $page->checkField('filters[filter_html][status]'); $assert_session->assertWaitOnAjaxRequest(); - // Confirm the allowed HTML tags are the defaults for non-Ckeditor5 editors. + // Confirm the allowed HTML tags are the defaults initially. $this->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', $this->defaultElementsWhenUpdatingNotCkeditor5); $this->saveNewTextFormat($page, $assert_session); - $assert_session->pageTextContains('Added text format ckeditor'); + $assert_session->pageTextContains('Added text format unicorn'); // Return to the config form to confirm that switching text editors on // existing formats will properly switch allowed tags. - $this->drupalGet('admin/config/content/formats/manage/ckeditor'); + $this->drupalGet('admin/config/content/formats/manage/unicorn'); $assert_session->assertWaitOnAjaxRequest(); $this->assertHtmlEsqueFieldValueEquals('filters[filter_html][settings][allowed_html]', $this->defaultElementsWhenUpdatingNotCkeditor5); @@ -167,24 +160,7 @@ public function testSwitchToVersion5() { $page->pressButton('Save configuration'); - $assert_session->pageTextContains('The Image upload toolbar item requires image uploads to be enabled.'); - $page->clickLink('Image Upload'); - $assert_session->waitForText('Enable image uploads'); - $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_imageUpload][status]')); - $page->checkField('editor[settings][plugins][ckeditor5_imageUpload][status]'); - $assert_session->assertWaitOnAjaxRequest(); - $page->pressButton('Save configuration'); - $this->assertSession()->pageTextContains('The following attribute(s) are already supported by enabled plugins and should not be added to the Source Editing "Manually editable HTML tags" field: Image (<img src alt data-entity-uuid data-entity-type>)'); - - $assert_session->assertWaitOnAjaxRequest(); - $assert_session->waitForText('Manually editable HTML tags'); - $source_edit_tags_field = $assert_session->fieldExists('editor[settings][plugins][ckeditor5_sourceEditing][allowed_tags]'); - $source_edit_tags_field_value = $source_edit_tags_field->getValue(); - $source_edit_tags_field->setValue(str_replace('<img src alt data-entity-type data-entity-uuid>', '', $source_edit_tags_field_value)); - $assert_session->assertWaitOnAjaxRequest(); - $page->pressButton('Save configuration'); - - $assert_session->pageTextContains('The text format ckeditor has been updated'); + $assert_session->pageTextContains('The text format unicorn has been updated'); } /** @@ -206,50 +182,57 @@ public function testImgAddedViaUploadPlugin() { // The image upload settings form should not be present. $assert_session->elementNotExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-imageupload"]'); - $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-uploadImage')); - $this->triggerKeyUp('.ckeditor5-toolbar-item-uploadImage', 'ArrowDown'); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-drupalInsertImage')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-drupalInsertImage', 'ArrowDown'); $assert_session->assertWaitOnAjaxRequest(); // The image upload settings form should now be present. - $assert_session->elementExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-imageupload"]'); + $assert_session->elementExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-image"]'); - $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-active .ckeditor5-toolbar-item-uploadImage')); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-active .ckeditor5-toolbar-item-drupalInsertImage')); - // The image upload plugin is enabled, but <img> not yet allowed. - $this->assertEquals($this->allowedElements, $allowed_html_field->getValue()); + // The image insert plugin is enabled and inserting <img> is allowed. + $this->assertEquals($this->allowedElements . ' <img src alt height width>', $allowed_html_field->getValue()); - $page->clickLink('Image Upload'); + $page->clickLink('Image'); $assert_session->waitForText('Enable image uploads'); - $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_imageUpload][status]')); - $page->checkField('editor[settings][plugins][ckeditor5_imageUpload][status]'); + $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_image][status]')); + $page->checkField('editor[settings][plugins][ckeditor5_image][status]'); $assert_session->assertWaitOnAjaxRequest(); // Enabling image uploads adds <img> with several attributes to allowed // tags. - $this->assertEquals($this->allowedElements . ' <img src alt data-entity-uuid data-entity-type height width>', $allowed_html_field->getValue()); + $this->assertEquals($this->allowedElements . ' <img src alt height width data-entity-uuid data-entity-type>', $allowed_html_field->getValue()); // Also enabling the caption filter will add the data-caption attribute to // <img>. $this->assertTrue($page->hasUncheckedField('filters[filter_caption][status]')); $page->checkField('filters[filter_caption][status]'); $assert_session->assertWaitOnAjaxRequest(); - $this->assertEquals($this->allowedElements . ' <img src alt data-entity-uuid data-entity-type height width data-caption>', $allowed_html_field->getValue()); + $this->assertEquals($this->allowedElements . ' <img src alt height width data-entity-uuid data-entity-type data-caption>', $allowed_html_field->getValue()); // Also enabling the alignment filter will add the data-align attribute to // <img>. $this->assertTrue($page->hasUncheckedField('filters[filter_align][status]')); $page->checkField('filters[filter_align][status]'); $assert_session->assertWaitOnAjaxRequest(); - $this->assertEquals($this->allowedElements . ' <img src alt data-entity-uuid data-entity-type height width data-caption data-align>', $allowed_html_field->getValue()); + $this->assertEquals($this->allowedElements . ' <img src alt height width data-entity-uuid data-entity-type data-caption data-align>', $allowed_html_field->getValue()); // Disable image upload. - $page->clickLink('Image Upload'); + $page->clickLink('Image'); $assert_session->waitForText('Enable image uploads'); - $this->assertTrue($page->hasCheckedField('editor[settings][plugins][ckeditor5_imageUpload][status]')); - $page->uncheckField('editor[settings][plugins][ckeditor5_imageUpload][status]'); + $this->assertTrue($page->hasCheckedField('editor[settings][plugins][ckeditor5_image][status]')); + $page->uncheckField('editor[settings][plugins][ckeditor5_image][status]'); $assert_session->assertWaitOnAjaxRequest(); - // Confirm <img> is no longer an allowed tag, once image upload disabled. + // The image insert is still allowed when image uploads are disabled. + $this->assertEquals($this->allowedElements . ' <img src alt height width data-caption data-align>', $allowed_html_field->getValue()); + + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-drupalInsertImage')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-drupalInsertImage', 'ArrowUp'); + $assert_session->assertWaitOnAjaxRequest(); + + // Confirm <img> is no longer an allowed tag, once image insert is disabled. $this->assertEquals($this->allowedElements, $allowed_html_field->getValue()); } @@ -472,7 +455,7 @@ public function testFullHtml() { // Add a node with text rendered via the Plain Text format. $this->drupalGet('node/add'); $page->fillField('title[0][value]', 'My test content'); - $page->fillField('body[0][value]', '<p><a style="color:#ff0000;" foo="bar" hreflang="en" href="https://example.com"><abbr title="National Aeronautics and Space Administration">NASA</abbr> is an acronym.</a></p>'); + $page->fillField('body[0][value]', '<foo bar="baz">⬅️✌️➡️</foo><p><a style="color:#ff0000;" foo="bar" hreflang="en" href="https://example.com"><abbr title="National Aeronautics and Space Administration">NASA</abbr> is an acronym.</a></p>'); $page->pressButton('Save'); // Configure Full HTML text format to use CKEditor 5. @@ -495,7 +478,7 @@ public function testFullHtml() { // But note that the `style` attribute was stripped by // \Drupal\editor\EditorXssFilter\Standard. - $assert_session->responseContains('<p><a foo="bar" hreflang="en" href="https://example.com"><abbr title="National Aeronautics and Space Administration">NASA</abbr> is an acronym.</a></p>'); + $assert_session->responseContains('<foo bar="baz">⬅️✌️➡️</foo><p><a foo="bar" hreflang="en" href="https://example.com"><abbr title="National Aeronautics and Space Administration">NASA</abbr> is an acronym.</a></p>'); // Ensure attributes are retained after enabling link plugin. $this->drupalGet('admin/config/content/formats/manage/full_html'); @@ -529,8 +512,8 @@ public function testFullHtml() { $page->pressButton('Save'); // The `style` and foo` attributes should have been removed, as should the - // `<abbr>` tag. - $assert_session->responseContains('<p><a href="https://example.com" hreflang="en">NASA is an acronym.</a></p>'); + // `<abbr>` and `<foo>` tags. + $assert_session->responseContains('<p>⬅️✌️➡️</p><p><a href="https://example.com" hreflang="en">NASA is an acronym.</a></p>'); } } diff --git a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5OffCanvasTest.php b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5OffCanvasTest.php index b8e2f102ec45c54df4fd7e46b0ef61ccee0d0a89..2d30acc475df7fe0683275846ae1896a43ebca8d 100644 --- a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5OffCanvasTest.php +++ b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5OffCanvasTest.php @@ -42,7 +42,7 @@ public function testOffCanvasStyles() { $assert_session->elementExists('css', '.ck'); $ckeditor_toolbar_bg_color = $this->getSession()->evaluateScript('window.getComputedStyle(document.querySelector(\'.ck.ck-toolbar\')).backgroundColor'); - $this->assertEquals('rgb(250, 250, 250)', $ckeditor_toolbar_bg_color, 'Toolbar background-color should be unaffected by off-canvas'); + $this->assertEquals('rgb(255, 255, 255)', $ckeditor_toolbar_bg_color, 'Toolbar background-color should be unaffected by off-canvas'); // Editable area should be visible. $assert_session->elementExists('css', '.ck .ck-content'); $ckeditor_editable_bg_color = $this->getSession()->evaluateScript('window.getComputedStyle(document.querySelector(\'.ck.ck-content\')).backgroundColor'); diff --git a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php index 8866082e43889fc8cf0d610080f8ff584dafc496..488da26194a908d26c4c545e3c00bdb266c34e42 100644 --- a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php +++ b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/CKEditor5Test.php @@ -85,7 +85,7 @@ public function testAttributeEncoding() { 'editor' => 'ckeditor5', 'settings' => [ 'toolbar' => [ - 'items' => ['uploadImage'], + 'items' => ['drupalInsertImage'], ], 'plugins' => ['ckeditor5_imageResize' => ['allow_resize' => FALSE]], ], @@ -323,17 +323,17 @@ public function testActiveTabsMaintained() { $assert_session->assertWaitOnAjaxRequest(); // Enable upload image to add one plugin config form. - $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-uploadImage')); - $this->triggerKeyUp('.ckeditor5-toolbar-item-uploadImage', 'ArrowDown'); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-drupalInsertImage')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-drupalInsertImage ', 'ArrowDown'); // cSpell:disable-next-line - $this->assertNotEmpty($assert_session->waitForElement('css', 'a[href^="#edit-editor-settings-plugins-ckeditor5-imageupload"]')); - $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-active .ckeditor5-toolbar-item-uploadImage')); + $this->assertNotEmpty($assert_session->waitForElement('css', 'a[href^="#edit-editor-settings-plugins-ckeditor5-image"]')); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-active .ckeditor5-toolbar-item-drupalInsertImage')); $assert_session->assertWaitOnAjaxRequest(); - $page->clickLink('Image Upload'); + $page->clickLink('Image'); $assert_session->waitForText('Enable image uploads'); - $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_imageUpload][status]')); - $page->checkField('editor[settings][plugins][ckeditor5_imageUpload][status]'); + $this->assertTrue($page->hasUncheckedField('editor[settings][plugins][ckeditor5_image][status]')); + $page->checkField('editor[settings][plugins][ckeditor5_image][status]'); $assert_session->assertWaitOnAjaxRequest(); // Enable Heading to add a second plugin config form. @@ -393,11 +393,11 @@ public function testEditorFileReferenceIntegration() { $assert_session = $this->assertSession(); $this->createNewTextFormat($page, $assert_session); - $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-uploadImage')); - $this->triggerKeyUp('.ckeditor5-toolbar-item-uploadImage', 'ArrowDown'); + $this->assertNotEmpty($assert_session->waitForElement('css', '.ckeditor5-toolbar-item-drupalInsertImage')); + $this->triggerKeyUp('.ckeditor5-toolbar-item-drupalInsertImage', 'ArrowDown'); $assert_session->assertWaitOnAjaxRequest(); - $page->clickLink('Image Upload'); - $page->checkField('editor[settings][plugins][ckeditor5_imageUpload][status]'); + $page->clickLink('Image'); + $page->checkField('editor[settings][plugins][ckeditor5_image][status]'); $assert_session->assertWaitOnAjaxRequest(); $page->checkField('filters[editor_file_reference][status]'); $assert_session->assertWaitOnAjaxRequest(); diff --git a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageTest.php b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageTest.php index b9246d155fe7b9bf8feba475d753065db321d7e5..ec957bb8c986158643db7e1ddc1e580d80908d18 100644 --- a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageTest.php +++ b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageTest.php @@ -2,34 +2,20 @@ namespace Drupal\Tests\ckeditor5\FunctionalJavascript; -use Drupal\Component\Utility\Html; use Drupal\editor\Entity\Editor; use Drupal\file\Entity\File; use Drupal\filter\Entity\FilterFormat; -use Drupal\node\Entity\Node; -use Drupal\Tests\TestFileCreationTrait; -use Drupal\Tests\ckeditor5\Traits\CKEditor5TestTrait; use Drupal\ckeditor5\Plugin\Editor\CKEditor5; use Symfony\Component\Validator\ConstraintViolation; // cspell:ignore imageresize imageupload /** - * @coversDefaultClass \Drupal\ckeditor5\Plugin\CKEditor5Plugin\ImageUpload + * @coversDefaultClass \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Image * @group ckeditor5 * @internal */ -class ImageTest extends CKEditor5TestBase { - - use CKEditor5TestTrait; - use TestFileCreationTrait; - - /** - * The user to use during testing. - * - * @var \Drupal\user\UserInterface - */ - protected $adminUser; +class ImageTest extends ImageTestBase { /** * The sample image File entity to embed. @@ -38,27 +24,6 @@ class ImageTest extends CKEditor5TestBase { */ protected $file; - /** - * A host entity with a body field to embed images in. - * - * @var \Drupal\node\NodeInterface - */ - protected $host; - - /** - * {@inheritdoc} - */ - protected static $modules = [ - 'ckeditor5', - 'node', - 'text', - ]; - - /** - * {@inheritdoc} - */ - protected $defaultTheme = 'classy'; - /** * {@inheritdoc} */ @@ -85,7 +50,7 @@ protected function setUp(): void { 'settings' => [ 'toolbar' => [ 'items' => [ - 'uploadImage', + 'drupalInsertImage', 'sourceEditing', 'link', 'italic', @@ -142,575 +107,23 @@ function (ConstraintViolation $v) { } /** - * Ensures that attributes are retained on conversion. - */ - public function testAttributeRetentionDuringUpcasting() { - // Run test cases in a single test to make the test run faster. - $attributes_to_retain = [ - '-none-' => 'inline', - 'data-caption="test caption 🦙"' => 'block', - 'data-align="left"' => 'inline', - ]; - - foreach ($attributes_to_retain as $attribute_to_retain => $expected_upcast_behavior_when_wrapped_in_block_element) { - if ($attribute_to_retain === '-none-') { - $attribute_to_retain = ''; - } - $img_tag = '<img ' . $attribute_to_retain . ' alt="drupalimage test image" data-entity-type="file" data-entity-uuid="' . $this->file->uuid() . '" src="' . $this->file->createFileUrl() . '" />'; - $test_cases = [ - // Plain image tag for a baseline. - [ - $img_tag, - $img_tag, - ], - // Image tag wrapped with <p>. - [ - "<p>$img_tag</p>", - $expected_upcast_behavior_when_wrapped_in_block_element === 'inline' ? "<p>$img_tag</p>" : $img_tag, - ], - // Image tag wrapped with an unallowed paragraph-like element (<div). - // When inline is the expected upcast behavior, it will wrap in <p> - // because it still must wrap in a paragraph-like element, and <p> is - // available to be that element. - [ - "<div>$img_tag</div>", - $expected_upcast_behavior_when_wrapped_in_block_element === 'inline' ? "<p>$img_tag</p>" : $img_tag, - ], - ]; - - foreach ($test_cases as $test_case) { - [$markup, $expected] = $test_case; - $this->host->body->value = $markup; - $this->host->save(); - - $this->drupalGet($this->host->toUrl('edit-form')); - $this->waitForEditor(); - - // Ensure that the image is rendered in preview. - $this->assertNotEmpty($this->assertSession()->waitForElementVisible('css', ".ck-content .ck-widget img")); - $editor_dom = $this->getEditorDataAsDom(); - $expected_dom = Html::load($expected); - $xpath = new \DOMXPath($this->getEditorDataAsDom()); - $this->assertEquals($expected_dom->getElementsByTagName('body')->item(0)->C14N(), $editor_dom->getElementsByTagName('body')->item(0)->C14N()); - - // Ensure the test attribute is persisted on downcast. - if ($attribute_to_retain) { - $this->assertNotEmpty($xpath->query("//img[@$attribute_to_retain]")); - } - } - } - } - - /** - * Tests that arbitrary attributes are allowed via GHS. - * - * @dataProvider providerLinkability - */ - public function testImageArbitraryHtml(string $image_type, bool $unrestricted) { - $editor = Editor::load('test_format'); - $settings = $editor->getSettings(); - - // Allow the data-foo attribute in img via GHS. - $settings['plugins']['ckeditor5_sourceEditing']['allowed_tags'] = ['<img data-foo>']; - $editor->setSettings($settings); - $editor->save(); - - // Disable filter_html. - if ($unrestricted) { - FilterFormat::load('test_format') - ->setFilterConfig('filter_html', ['status' => FALSE]) - ->save(); - } - - // Make the test content have either a block image or an inline image. - $img_tag = '<img data-foo="bar" alt="drupalimage test image" data-entity-type="file" data-entity-uuid="' . $this->file->uuid() . '" src="' . $this->file->createFileUrl() . '" />'; - $this->host->body->value .= $image_type === 'block' - ? $img_tag - : "<p>$img_tag</p>"; - $this->host->save(); - - $expected_widget_selector = $image_type === 'block' ? 'image img' : 'image-inline'; - - $this->drupalGet($this->host->toUrl('edit-form')); - $this->waitForEditor(); - - $drupalimage = $this->assertSession()->waitForElementVisible('css', ".ck-content .ck-widget.$expected_widget_selector"); - $this->assertNotEmpty($drupalimage); - $this->assertEquals('bar', $drupalimage->getAttribute('data-foo')); - - $xpath = new \DOMXPath($this->getEditorDataAsDom()); - $this->assertNotEmpty($xpath->query('//img[@data-foo="bar"]')); - } - - /** - * Tests linkability of the image CKEditor widget. - * - * Due to the complex overrides that `drupalImage.DrupalImage` is making, this - * is explicitly testing the "editingDowncast" and "dataDowncast" results. - * These are CKEditor 5 concepts. - * - * @see https://ckeditor.com/docs/ckeditor5/latest/framework/guides/architecture/editing-engine.html#conversion - * - * @dataProvider providerLinkability - */ - public function testLinkability(string $image_type, bool $unrestricted) { - assert($image_type === 'inline' || $image_type === 'block'); - - // Disable filter_html. - if ($unrestricted) { - FilterFormat::load('test_format') - ->setFilterConfig('filter_html', ['status' => FALSE]) - ->save(); - } - - // Make the test content have either a block image or an inline image. - $img_tag = '<img alt="drupalimage test image" data-entity-type="file" data-entity-uuid="' . $this->file->uuid() . '" src="' . $this->file->createFileUrl() . '" />'; - $this->host->body->value .= $image_type === 'block' - ? $img_tag - : "<p>$img_tag</p>"; - $this->host->save(); - // Adjust the expectations accordingly. - $expected_widget_class = $image_type === 'block' ? 'image' : 'image-inline'; - - $page = $this->getSession()->getPage(); - - $this->drupalGet($this->host->toUrl('edit-form')); - $this->waitForEditor(); - $assert_session = $this->assertSession(); - - // Initial state: the image CKEditor Widget is not selected. - $drupalimage = $assert_session->waitForElementVisible('css', ".ck-content .ck-widget.$expected_widget_class"); - $this->assertNotEmpty($drupalimage); - $this->assertFalse($drupalimage->hasClass('.ck-widget_selected')); - - // Assert the "editingDowncast" HTML before making changes. - $assert_session->elementExists('css', '.ck-content .ck-widget.' . $expected_widget_class . ' > img[src*="image-test.png"][alt="drupalimage test image"]'); - - // Assert the "dataDowncast" HTML before making changes. - $xpath = new \DOMXPath($this->getEditorDataAsDom()); - $this->assertNotEmpty($xpath->query('//img[@alt="drupalimage test image"]')); - $this->assertEmpty($xpath->query('//a')); - - // Assert the link button is present and not pressed. - $link_button = $this->getEditorButton('Link'); - $this->assertSame('false', $link_button->getAttribute('aria-pressed')); - - // Tests linking images. - $drupalimage->click(); - $this->assertTrue($drupalimage->hasClass('ck-widget_selected')); - $this->assertEditorButtonEnabled('Link'); - // Assert structure of image toolbar balloon. - $this->assertVisibleBalloon('.ck-toolbar[aria-label="Image toolbar"]'); - $link_image_button = $this->getBalloonButton('Link image'); - // Click the "Link image" button. - $this->assertSame('false', $link_image_button->getAttribute('aria-pressed')); - $link_image_button->press(); - // Assert structure of link form balloon. - $balloon = $this->assertVisibleBalloon('.ck-link-form'); - $url_input = $balloon->find('css', '.ck-labeled-field-view__input-wrapper .ck-input-text'); - // Fill in link form balloon's <input> and hit "Save". - $url_input->setValue('http://www.drupal.org/association'); - $balloon->pressButton('Save'); - - // Assert the "editingDowncast" HTML after making changes. First assert the - // link exists, then assert the expected DOM structure in detail. - $assert_session->elementExists('css', '.ck-content a[href*="//www.drupal.org/association"]'); - // For inline images, the link is wrapping the widget; for block images the - // link lives inside the widget. (This is how it is implemented upstream, it - // could be implemented differently, we just want to ensure we do not break - // it. Drupal only cares about having its own "dataDowncast", the - // "editingDowncast" is considered an implementation detail.) - $assert_session->elementExists('css', $image_type === 'inline' - ? '.ck-content a[href*="//www.drupal.org/association"] .ck-widget.' . $expected_widget_class . ' > img[src*="image-test.png"][alt="drupalimage test image"]' - : '.ck-content .ck-widget.' . $expected_widget_class . ' a[href*="//www.drupal.org/association"] > img[src*="image-test.png"][alt="drupalimage test image"]' - ); - - // Assert the "dataDowncast" HTML after making changes. - $xpath = new \DOMXPath($this->getEditorDataAsDom()); - $this->assertCount(1, $xpath->query('//a[@href="http://www.drupal.org/association"]/img[@alt="drupalimage test image"]')); - $this->assertEmpty($xpath->query('//a[@href="http://www.drupal.org/association" and @class="trusted"]')); - - // Add `class="trusted"` to the link. - $xpath = new \DOMXPath($this->getEditorDataAsDom()); - $this->assertEmpty($xpath->query('//a[@href="http://www.drupal.org/association" and @class="trusted"]')); - $this->pressEditorButton('Source'); - $source_text_area = $assert_session->waitForElement('css', '.ck-source-editing-area textarea'); - $this->assertNotEmpty($source_text_area); - $new_value = str_replace('<a ', '<a class="trusted" ', $source_text_area->getValue()); - $source_text_area->setValue('<p>temp</p>'); - $source_text_area->setValue($new_value); - $this->pressEditorButton('Source'); - - // When unrestricted, additional attributes on links should be retained. - $xpath = new \DOMXPath($this->getEditorDataAsDom()); - $this->assertCount($unrestricted ? 1 : 0, $xpath->query('//a[@href="http://www.drupal.org/association" and @class="trusted"]')); - - // Save the entity whose text field is being edited. - $page->pressButton('Save'); - - // Assert the HTML the end user sees. - $assert_session->elementExists('css', $unrestricted - ? 'a[href="http://www.drupal.org/association"].trusted img[src*="image-test.png"]' - : 'a[href="http://www.drupal.org/association"] img[src*="image-test.png"]'); - - // Go back to edit the now *linked* <drupal-media>. Everything from this - // point onwards is effectively testing "upcasting" and proving there is no - // data loss. - $this->drupalGet($this->host->toUrl('edit-form')); - $this->waitForEditor(); - - // Assert the "dataDowncast" HTML before making changes. - $xpath = new \DOMXPath($this->getEditorDataAsDom()); - $this->assertNotEmpty($xpath->query('//img[@alt="drupalimage test image"]')); - $this->assertNotEmpty($xpath->query('//a[@href="http://www.drupal.org/association"]')); - $this->assertNotEmpty($xpath->query('//a[@href="http://www.drupal.org/association"]/img[@alt="drupalimage test image"]')); - $this->assertCount($unrestricted ? 1 : 0, $xpath->query('//a[@href="http://www.drupal.org/association" and @class="trusted"]')); - - // Tests unlinking images. - $drupalimage->click(); - $this->assertEditorButtonEnabled('Link'); - $this->assertSame('true', $this->getEditorButton('Link')->getAttribute('aria-pressed')); - // Assert structure of image toolbar balloon. - $this->assertVisibleBalloon('.ck-toolbar[aria-label="Image toolbar"]'); - $link_image_button = $this->getBalloonButton('Link image'); - $this->assertSame('true', $link_image_button->getAttribute('aria-pressed')); - $link_image_button->click(); - // Assert structure of link actions balloon. - $this->getBalloonButton('Edit link'); - $unlink_image_button = $this->getBalloonButton('Unlink'); - // Click the "Unlink" button. - $unlink_image_button->click(); - $this->assertSame('false', $this->getEditorButton('Link')->getAttribute('aria-pressed')); - - // Assert the "editingDowncast" HTML after making changes. Assert the - // widget exists but not the link, or *any* link for that matter. Then - // assert the expected DOM structure in detail. - $assert_session->elementExists('css', '.ck-content .ck-widget.' . $expected_widget_class); - $assert_session->elementNotExists('css', '.ck-content a'); - $assert_session->elementExists('css', '.ck-content .ck-widget.' . $expected_widget_class . ' > img[src*="image-test.png"][alt="drupalimage test image"]'); - - // Assert the "dataDowncast" HTML after making changes. - $xpath = new \DOMXPath($this->getEditorDataAsDom()); - $this->assertCount(0, $xpath->query('//a[@href="http://www.drupal.org/association"]/img[@alt="drupalimage test image"]')); - $this->assertCount(1, $xpath->query('//img[@alt="drupalimage test image"]')); - $this->assertCount(0, $xpath->query('//a')); - } - - /** - * Tests that alt text is required for images. - * - * @see https://ckeditor.com/docs/ckeditor5/latest/framework/guides/architecture/editing-engine.html#conversion - * - * @dataProvider providerAltTextRequired - */ - public function testAltTextRequired(bool $unrestricted) { - // Disable filter_html. - if ($unrestricted) { - FilterFormat::load('test_format') - ->setFilterConfig('filter_html', ['status' => FALSE]) - ->save(); - } - - // Make the test content has a block image and an inline image. - $img_tag = '<img data-entity-type="file" data-entity-uuid="' . $this->file->uuid() . '" src="' . $this->file->createFileUrl() . '" width="500" />'; - $this->host->body->value .= $img_tag . "<p>$img_tag</p>"; - $this->host->save(); - - $page = $this->getSession()->getPage(); - - $this->drupalGet($this->host->toUrl('edit-form')); - $this->waitForEditor(); - $assert_session = $this->assertSession(); - - // Confirm both of the images exist. - $this->assertNotEmpty($image_block = $assert_session->waitForElementVisible('css', ".ck-content .ck-widget.image")); - $this->assertNotEmpty($image_inline = $assert_session->waitForElementVisible('css', ".ck-content .ck-widget.image-inline")); - - // Confirm both of the images have an alt text required warning. - $this->assertNotEmpty($image_block->find('css', '.image-alternative-text-missing-wrapper')); - $this->assertNotEmpty($image_inline->find('css', '.image-alternative-text-missing-wrapper')); - - // Add alt text to the block image. - $image_block->find('css', '.image-alternative-text-missing button')->click(); - $this->assertNotEmpty($assert_session->waitForElementVisible('css', '.ck-balloon-panel')); - $this->assertVisibleBalloon('.ck-text-alternative-form'); - - // Ensure that the missing alt text warning is hidden when the alternative - // text form is open. - $assert_session->waitForElement('css', '.ck-content .ck-widget.image .image-alternative-text-missing.ck-hidden'); - $assert_session->elementExists('css', '.ck-content .ck-widget.image-inline .image-alternative-text-missing'); - $assert_session->elementNotExists('css', '.ck-content .ck-widget.image-inline .image-alternative-text-missing.ck-hidden'); - - // Ensure that the missing alt text error is not added to decorative images. - $this->assertNotEmpty($decorative_button = $this->getBalloonButton('Decorative image')); - $assert_session->elementExists('css', '.ck-balloon-panel .ck-text-alternative-form input[type=text]'); - $decorative_button->click(); - $assert_session->elementExists('css', '.ck-content .ck-widget.image .image-alternative-text-missing.ck-hidden'); - $assert_session->elementExists('css', ".ck-content .ck-widget.image-inline .image-alternative-text-missing-wrapper"); - $assert_session->elementNotExists('css', '.ck-content .ck-widget.image-inline .image-alternative-text-missing.ck-hidden'); - - // Ensure that the missing alt text error is removed after saving the - // changes. - $this->assertNotEmpty($save_button = $this->getBalloonButton('Save')); - $save_button->click(); - $this->assertTrue($assert_session->waitForElementRemoved('css', ".ck-content .ck-widget.image .image-alternative-text-missing-wrapper")); - $assert_session->elementExists('css', '.ck-content .ck-widget.image-inline .image-alternative-text-missing-wrapper'); - - // Ensure that the decorative image downcasts into empty alt attribute. - $editor_dom = $this->getEditorDataAsDom(); - $decorative_img = $editor_dom->getElementsByTagName('img')->item(0); - $this->assertTrue($decorative_img->hasAttribute('alt')); - $this->assertEmpty($decorative_img->getAttribute('alt')); - - // Ensure that missing alt text error is not added to images with alt text. - $this->assertNotEmpty($alt_text_button = $this->getBalloonButton('Change image alternative text')); - $alt_text_button->click(); - - $decorative_button->click(); - $this->assertNotEmpty($save_button = $this->getBalloonButton('Save')); - $this->assertTrue($save_button->hasClass('ck-disabled')); - - $this->assertNotEmpty($alt_override_input = $page->find('css', '.ck-balloon-panel .ck-text-alternative-form input[type=text]')); - $alt_override_input->setValue('There is now alt text'); - $this->assertTrue($assert_session->waitForElementRemoved('css', '.ck-balloon-panel .ck-text-alternative-form .ck-disabled')); - $this->assertFalse($save_button->hasClass('ck-disabled')); - $save_button->click(); - - // Save the node and confirm that the alt text is retained. - $page->pressButton('Save'); - $this->assertNotEmpty($assert_session->waitForElement('css', 'img[alt="There is now alt text"]')); - - // Ensure that alt form is opened after image upload. - $this->drupalGet($this->host->toUrl('edit-form')); - $this->waitForEditor(); - $this->assertNotEmpty($image_upload_field = $page->find('css', '.ck-file-dialog-button input[type="file"]')); - $image = $this->getTestFiles('image')[0]; - $image_upload_field->attachFile($this->container->get('file_system')->realpath($image->uri)); - $this->assertNotEmpty($assert_session->waitForElementVisible('css', '.ck-widget.image')); - $this->assertNotEmpty($assert_session->waitForElementVisible('css', '.ck-balloon-panel')); - $this->assertVisibleBalloon('.ck-text-alternative-form'); - } - - public function providerAltTextRequired(): array { - return [ - 'Restricted' => [FALSE], - 'Unrestricted' => [TRUE], - ]; - } - - public function providerLinkability(): array { - return [ - 'BLOCK image, restricted' => ['block', FALSE], - 'BLOCK image, unrestricted' => ['block', TRUE], - 'INLINE image, restricted' => ['inline', FALSE], - 'INLINE image, unrestricted' => ['inline', TRUE], - ]; - } - - /** - * Tests alignment integration. + * Provides the relevant image attributes. * - * @dataProvider providerAlignment + * @return string[] */ - public function testAlignment(string $image_type): void { - $assert_session = $this->assertSession(); - $page = $this->getSession()->getPage(); - // Make the test content have either a block image or an inline image. - $img_tag = '<img alt="drupalimage test image" data-entity-type="file" data-entity-uuid="' . $this->file->uuid() . '" src="' . $this->file->createFileUrl() . '" />'; - $this->host->body->value .= $image_type === 'block' - ? $img_tag - : "<p>$img_tag</p>"; - $this->host->save(); - - $image_selector = $image_type === 'block' ? '.ck-widget.image' : '.ck-widget.image-inline'; - $default_alignment = $image_type === 'block' ? 'Break text' : 'In line'; - - $this->drupalGet($this->host->toUrl('edit-form')); - $this->waitForEditor(); - $this->assertNotEmpty($assert_session->waitForElementVisible('css', $image_selector)); - - // Ensure that the default alignment option matches expectation. - $this->click($image_selector); - $this->assertVisibleBalloon('[aria-label="Image toolbar"]'); - $this->assertTrue($this->getBalloonButton($default_alignment)->hasClass('ck-on')); - $editor_dom = $this->getEditorDataAsDom(); - $drupal_media_element = $editor_dom->getElementsByTagName('img') - ->item(0); - $this->assertFalse($drupal_media_element->hasAttribute('data-align')); - $this->getBalloonButton('Align center and break text')->click(); - - // Assert the alignment class exists after editing downcast. - $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-widget.image.image-style-align-center')); - $editor_dom = $this->getEditorDataAsDom(); - $drupal_media_element = $editor_dom->getElementsByTagName('img') - ->item(0); - $this->assertEquals('center', $drupal_media_element->getAttribute('data-align')); - - $page->pressButton('Save'); - // Check that the 'content has been updated' message status appears to confirm we left the editor. - $this->assertNotEmpty($assert_session->waitForElementVisible('css', '.messages.messages--status')); - // Check that the class is correct in the front end. - $assert_session->elementExists('css', 'img.align-center'); - // Go back to the editor to check that the alignment class still exists. - $edit_url = $this->getSession()->getCurrentURL() . '/edit'; - $this->drupalGet($edit_url); - $this->waitForEditor(); - $assert_session->elementExists('css', '.ck-widget.image.image-style-align-center'); - - // Ensure that "Centered image" alignment option is selected. - $this->click('.ck-widget.image'); - $this->assertVisibleBalloon('[aria-label="Image toolbar"]'); - $this->assertTrue($this->getBalloonButton('Align center and break text')->hasClass('ck-on')); - $this->getBalloonButton('Break text')->click(); - $this->assertTrue($assert_session->waitForElementRemoved('css', '.ck-widget.image.image-style-align-center')); - $editor_dom = $this->getEditorDataAsDom(); - $drupal_media_element = $editor_dom->getElementsByTagName('img') - ->item(0); - $this->assertFalse($drupal_media_element->hasAttribute('data-align')); - } - - public function providerAlignment() { + protected function imageAttributes() { return [ - 'Block image' => ['block'], - 'Inline image' => ['inline'], + 'data-entity-type' => 'file', + 'data-entity-uuid' => $this->file->uuid(), + 'src' => $this->file->createFileUrl(), ]; } - /** - * Ensures that width attribute upcasts and downcasts correctly. - * - * @param string $width - * The width input for the image. - * - * @dataProvider providerWidth - */ - public function testWidth(string $width): void { + protected function addImage() { $page = $this->getSession()->getPage(); - $assert_session = $this->assertSession(); - - // Add image to the host body. - $this->host->body->value = sprintf('<img data-foo="bar" alt="drupalimage test image" data-entity-type="file" data-entity-uuid="%s" src="%s" width="%s" />', $this->file->uuid(), $this->file->createFileUrl(), $width); - $this->host->save(); - - $this->drupalGet($this->host->toUrl('edit-form')); - $this->waitForEditor(); - - // Ensure that the image is upcast as expected. In the editing view, the - // width attribute should downcast to an inline style on the container - // element. - $this->assertNotEmpty($assert_session->waitForElementVisible('css', '.ck-widget.image[style] img')); - - // Ensure that the width attribute is retained on downcast. - $editor_data = $this->getEditorDataAsDom(); - $width_from_editor = $editor_data->getElementsByTagName('img')->item(0)->getAttribute('width'); - $this->assertSame($width, $width_from_editor); - - // Save the node and ensure that the width attribute is retained. - $page->pressButton('Save'); - $this->assertNotEmpty($assert_session->waitForElement('css', "img[width='$width']")); - } - - /** - * Ensures that images can have caption set. - */ - public function testImageCaption() { - $page = $this->getSession()->getPage(); - $assert_session = $this->assertSession(); - - // The foo attribute is added to be removed later by CKEditor 5 to make sure - // CKEditor 5 was able to downcast data. - $img_tag = '<img alt="drupalimage test image" data-caption="Alpacas <em>are</em> cute" foo="bar" data-entity-type="file" data-entity-uuid="' . $this->file->uuid() . '" src="' . $this->file->createFileUrl() . '">'; - $this->host->body->value = $img_tag; - $this->host->save(); - - $this->drupalGet($this->host->toUrl('edit-form')); - $this->waitForEditor(); - - $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-editor')); - $this->assertNotEmpty($figcaption = $assert_session->waitForElement('css', '.image figcaption')); - $this->assertSame('Alpacas <em>are</em> cute', $figcaption->getHtml()); - $page->pressButton('Source'); - $editor_dom = $this->getEditorDataAsDom(); - $data_caption = $editor_dom->getElementsByTagName('img')->item(0)->getAttribute('data-caption'); - $this->assertSame('Alpacas <em>are</em> cute', $data_caption); - - $page->pressButton('Save'); - - $this->assertEquals('<img src="' . $this->file->createFileUrl() . '" data-entity-uuid="' . $this->file->uuid() . '" data-entity-type="file" alt="drupalimage test image" data-caption="Alpacas <em>are</em> cute">', Node::load(1)->get('body')->value); - $assert_session->elementExists('xpath', '//figure/img[@src="' . $this->file->createFileUrl() . '" and not(@data-caption)]'); - $assert_session->responseContains('<figcaption>Alpacas <em>are</em> cute</figcaption>'); - } - - /** - * Data provider for ::testWidth(). - * - * @return \string[][] - */ - public function providerWidth(): array { - return [ - 'Image resize with percent unit (only allowed in HTML 4)' => [ - 'width' => '33%', - ], - 'Image resize with (implied) px unit' => [ - 'width' => '100', - ], - ]; - } - - /** - * Tests the image resize plugin. - * - * Confirms that enabling the resize plugin introduces the resize class to - * images within CKEditor 5. - * - * @param bool $is_resize_enabled - * Boolean flag to test enabled or disabled. - * - * @dataProvider providerResize - */ - public function testResize(bool $is_resize_enabled): void { - // Disable resize plugin because it is enabled by default. - if (!$is_resize_enabled) { - Editor::load('test_format')->setSettings([ - 'toolbar' => [ - 'items' => [ - 'uploadImage', - ], - ], - 'plugins' => [ - 'ckeditor5_imageResize' => [ - 'allow_resize' => FALSE, - ], - ], - ])->save(); - } - - $page = $this->getSession()->getPage(); - $assert_session = $this->assertSession(); - $this->drupalGet('node/add'); - $page->fillField('title[0][value]', 'My test content'); $this->assertNotEmpty($image_upload_field = $page->find('css', '.ck-file-dialog-button input[type="file"]')); $image = $this->getTestFiles('image')[0]; $image_upload_field->attachFile($this->container->get('file_system')->realpath($image->uri)); - $image_figure = $assert_session->waitForElementVisible('css', 'figure'); - $this->assertSame($is_resize_enabled, $image_figure->hasClass('ck-widget_with-resizer')); - } - - /** - * Data provider for ::testResize(). - * - * @return array - * The test cases. - */ - public function providerResize(): array { - return [ - 'Image resize is enabled' => [ - 'is_resize_enabled' => TRUE, - ], - 'Image resize is disabled' => [ - 'is_resize_enabled' => FALSE, - ], - ]; } /** @@ -723,21 +136,21 @@ public function testImageSettingsForm() { // The image resize and upload plugin settings forms should be present. $assert_session->elementExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-imageresize"]'); - $assert_session->elementExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-imageupload"]'); + $assert_session->elementExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-image"]'); - // Removing the imageUpload button from the toolbar must remove the plugin - // settings forms too. - $this->triggerKeyUp('.ckeditor5-toolbar-item-uploadImage', 'ArrowUp'); + // Removing the drupalImageInsert button from the toolbar must remove the + // plugin settings forms too. + $this->triggerKeyUp('.ckeditor5-toolbar-item-drupalInsertImage', 'ArrowUp'); $assert_session->assertWaitOnAjaxRequest(); $assert_session->elementNotExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-imageresize"]'); - $assert_session->elementNotExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-imageupload"]'); + $assert_session->elementNotExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-image"]'); - // Re-adding the imageUpload button to the toolbar must re-add the plugin - // settings forms too. - $this->triggerKeyUp('.ckeditor5-toolbar-item-uploadImage', 'ArrowDown'); + // Re-adding the drupalImageInsert button to the toolbar must re-add the + // plugin settings forms too. + $this->triggerKeyUp('.ckeditor5-toolbar-item-drupalInsertImage', 'ArrowDown'); $assert_session->assertWaitOnAjaxRequest(); $assert_session->elementExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-imageresize"]'); - $assert_session->elementExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-imageupload"]'); + $assert_session->elementExists('css', '[data-drupal-selector="edit-editor-settings-plugins-ckeditor5-image"]'); } } diff --git a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageTestBase.php b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageTestBase.php new file mode 100644 index 0000000000000000000000000000000000000000..42863411758f2b2962463e73620171aae1c1c4e5 --- /dev/null +++ b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageTestBase.php @@ -0,0 +1,664 @@ +<?php + +namespace Drupal\Tests\ckeditor5\FunctionalJavascript; + +use Drupal\Component\Utility\Html; +use Drupal\editor\Entity\Editor; +use Drupal\filter\Entity\FilterFormat; +use Drupal\node\Entity\Node; +use Drupal\Tests\TestFileCreationTrait; +use Drupal\Tests\ckeditor5\Traits\CKEditor5TestTrait; + +// cspell:ignore imageresize imageupload + +/** + * @coversDefaultClass \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Image + * @group ckeditor5 + * @internal + */ +abstract class ImageTestBase extends CKEditor5TestBase { + + use CKEditor5TestTrait; + use TestFileCreationTrait; + + /** + * The user to use during testing. + * + * @var \Drupal\user\UserInterface + */ + protected $adminUser; + + /** + * A host entity with a body field to embed images in. + * + * @var \Drupal\node\NodeInterface + */ + protected $host; + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'ckeditor5', + 'node', + 'text', + ]; + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + /** + * Provides the relevant image attributes. + * + * @return string[] + */ + protected function imageAttributes() { + return ['src' => '/core/misc/druplicon.png']; + } + + /** + * Helper to format attributes. + * + * @param bool $reverse + * Reverse attributes when printing them. + * + * @return string + */ + protected function imageAttributesAsString($reverse = FALSE) { + $string = []; + foreach ($this->imageAttributes() as $key => $value) { + $string[] = $key . '="' . $value . '"'; + } + if ($reverse) { + $string = array_reverse($string); + } + return implode(' ', $string); + } + + /** + * Add an image to the CKEditor 5 editable zone. + */ + protected function addImage() { + $page = $this->getSession()->getPage(); + $src = $this->imageAttributes()['src']; + $this->waitForEditor(); + $this->pressEditorButton('Insert image'); + $panel = $page->find('css', '.ck-dropdown__panel.ck-image-insert__panel'); + $src_input = $panel->find('css', 'input[type=text]'); + $src_input->setValue($src); + $panel->find('xpath', "//button[span[text()='Insert']]")->click(); + } + + /** + * Ensures that attributes are retained on conversion. + */ + public function testAttributeRetentionDuringUpcasting() { + // Run test cases in a single test to make the test run faster. + $attributes_to_retain = [ + '-none-' => 'inline', + 'data-caption="test caption 🦙"' => 'block', + 'data-align="left"' => 'inline', + ]; + + foreach ($attributes_to_retain as $attribute_to_retain => $expected_upcast_behavior_when_wrapped_in_block_element) { + if ($attribute_to_retain === '-none-') { + $attribute_to_retain = ''; + } + $img_tag = '<img ' . $attribute_to_retain . ' alt="drupalimage test image" ' . $this->imageAttributesAsString() . ' />'; + $test_cases = [ + // Plain image tag for a baseline. + [ + $img_tag, + $img_tag, + ], + // Image tag wrapped with <p>. + [ + "<p>$img_tag</p>", + $expected_upcast_behavior_when_wrapped_in_block_element === 'inline' ? "<p>$img_tag</p>" : $img_tag, + ], + // Image tag wrapped with an unallowed paragraph-like element (<div). + // When inline is the expected upcast behavior, it will wrap in <p> + // because it still must wrap in a paragraph-like element, and <p> is + // available to be that element. + [ + "<div>$img_tag</div>", + $expected_upcast_behavior_when_wrapped_in_block_element === 'inline' ? "<p>$img_tag</p>" : $img_tag, + ], + ]; + + foreach ($test_cases as $test_case) { + [$markup, $expected] = $test_case; + $this->host->body->value = $markup; + $this->host->save(); + + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + + // Ensure that the image is rendered in preview. + $this->assertNotEmpty($this->assertSession()->waitForElementVisible('css', ".ck-content .ck-widget img")); + $editor_dom = $this->getEditorDataAsDom(); + $expected_dom = Html::load($expected); + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertEquals($expected_dom->getElementsByTagName('body')->item(0)->C14N(), $editor_dom->getElementsByTagName('body')->item(0)->C14N()); + + // Ensure the test attribute is persisted on downcast. + if ($attribute_to_retain) { + $this->assertNotEmpty($xpath->query("//img[@$attribute_to_retain]")); + } + } + } + } + + /** + * Tests that arbitrary attributes are allowed via GHS. + * + * @dataProvider providerLinkability + */ + public function testImageArbitraryHtml(string $image_type, bool $unrestricted) { + $editor = Editor::load('test_format'); + $settings = $editor->getSettings(); + + // Allow the data-foo attribute in img via GHS. + $settings['plugins']['ckeditor5_sourceEditing']['allowed_tags'] = ['<img data-foo>']; + $editor->setSettings($settings); + $editor->save(); + + // Disable filter_html. + if ($unrestricted) { + FilterFormat::load('test_format') + ->setFilterConfig('filter_html', ['status' => FALSE]) + ->save(); + } + + // Make the test content have either a block image or an inline image. + $img_tag = '<img data-foo="bar" alt="drupalimage test image" data-entity-type="file" ' . $this->imageAttributesAsString() . ' />'; + $this->host->body->value .= $image_type === 'block' + ? $img_tag + : "<p>$img_tag</p>"; + $this->host->save(); + + $expected_widget_selector = $image_type === 'block' ? 'image img' : 'image-inline'; + + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + + $drupalimage = $this->assertSession()->waitForElementVisible('css', ".ck-content .ck-widget.$expected_widget_selector"); + $this->assertNotEmpty($drupalimage); + $this->assertEquals('bar', $drupalimage->getAttribute('data-foo')); + + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertNotEmpty($xpath->query('//img[@data-foo="bar"]')); + } + + /** + * Tests linkability of the image CKEditor widget. + * + * Due to the complex overrides that `drupalImage.DrupalImage` is making, this + * is explicitly testing the "editingDowncast" and "dataDowncast" results. + * These are CKEditor 5 concepts. + * + * @see https://ckeditor.com/docs/ckeditor5/latest/framework/guides/architecture/editing-engine.html#conversion + * + * @dataProvider providerLinkability + */ + public function testLinkability(string $image_type, bool $unrestricted) { + assert($image_type === 'inline' || $image_type === 'block'); + + // Disable filter_html. + if ($unrestricted) { + FilterFormat::load('test_format') + ->setFilterConfig('filter_html', ['status' => FALSE]) + ->save(); + } + + // Make the test content have either a block image or an inline image. + $img_tag = '<img alt="drupalimage test image" data-entity-type="file" ' . $this->imageAttributesAsString() . ' />'; + $this->host->body->value .= $image_type === 'block' + ? $img_tag + : "<p>$img_tag</p>"; + $this->host->save(); + // Adjust the expectations accordingly. + $expected_widget_class = $image_type === 'block' ? 'image' : 'image-inline'; + + $page = $this->getSession()->getPage(); + + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + $assert_session = $this->assertSession(); + + // Initial state: the image CKEditor Widget is not selected. + $drupalimage = $assert_session->waitForElementVisible('css', ".ck-content .ck-widget.$expected_widget_class"); + $this->assertNotEmpty($drupalimage); + $this->assertFalse($drupalimage->hasClass('.ck-widget_selected')); + + $src = basename($this->imageAttributes()['src']); + // Assert the "editingDowncast" HTML before making changes. + $assert_session->elementExists('css', '.ck-content .ck-widget.' . $expected_widget_class . ' > img[src*="' . $src . '"][alt="drupalimage test image"]'); + + // Assert the "dataDowncast" HTML before making changes. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertNotEmpty($xpath->query('//img[@alt="drupalimage test image"]')); + $this->assertEmpty($xpath->query('//a')); + + // Assert the link button is present and not pressed. + $link_button = $this->getEditorButton('Link'); + $this->assertSame('false', $link_button->getAttribute('aria-pressed')); + + // Tests linking images. + $drupalimage->click(); + $this->assertTrue($drupalimage->hasClass('ck-widget_selected')); + $this->assertEditorButtonEnabled('Link'); + // Assert structure of image toolbar balloon. + $this->assertVisibleBalloon('.ck-toolbar[aria-label="Image toolbar"]'); + $link_image_button = $this->getBalloonButton('Link image'); + // Click the "Link image" button. + $this->assertSame('false', $link_image_button->getAttribute('aria-pressed')); + $link_image_button->press(); + // Assert structure of link form balloon. + $balloon = $this->assertVisibleBalloon('.ck-link-form'); + $url_input = $balloon->find('css', '.ck-labeled-field-view__input-wrapper .ck-input-text'); + // Fill in link form balloon's <input> and hit "Save". + $url_input->setValue('http://www.drupal.org/association'); + $balloon->pressButton('Save'); + + // Assert the "editingDowncast" HTML after making changes. First assert the + // link exists, then assert the expected DOM structure in detail. + $assert_session->elementExists('css', '.ck-content a[href*="//www.drupal.org/association"]'); + // For inline images, the link is wrapping the widget; for block images the + // link lives inside the widget. (This is how it is implemented upstream, it + // could be implemented differently, we just want to ensure we do not break + // it. Drupal only cares about having its own "dataDowncast", the + // "editingDowncast" is considered an implementation detail.) + $assert_session->elementExists('css', $image_type === 'inline' + ? '.ck-content a[href*="//www.drupal.org/association"] .ck-widget.' . $expected_widget_class . ' > img[src*="' . $src . '"][alt="drupalimage test image"]' + : '.ck-content .ck-widget.' . $expected_widget_class . ' a[href*="//www.drupal.org/association"] > img[src*="' . $src . '"][alt="drupalimage test image"]' + ); + + // Assert the "dataDowncast" HTML after making changes. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertCount(1, $xpath->query('//a[@href="http://www.drupal.org/association"]/img[@alt="drupalimage test image"]')); + $this->assertEmpty($xpath->query('//a[@href="http://www.drupal.org/association" and @class="trusted"]')); + + // Add `class="trusted"` to the link. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertEmpty($xpath->query('//a[@href="http://www.drupal.org/association" and @class="trusted"]')); + $this->pressEditorButton('Source'); + $source_text_area = $assert_session->waitForElement('css', '.ck-source-editing-area textarea'); + $this->assertNotEmpty($source_text_area); + $new_value = str_replace('<a ', '<a class="trusted" ', $source_text_area->getValue()); + $source_text_area->setValue('<p>temp</p>'); + $source_text_area->setValue($new_value); + $this->pressEditorButton('Source'); + + // When unrestricted, additional attributes on links should be retained. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertCount($unrestricted ? 1 : 0, $xpath->query('//a[@href="http://www.drupal.org/association" and @class="trusted"]')); + + // Save the entity whose text field is being edited. + $page->pressButton('Save'); + + // Assert the HTML the end user sees. + $assert_session->elementExists('css', $unrestricted + ? 'a[href="http://www.drupal.org/association"].trusted img[src*="' . $src . '"]' + : 'a[href="http://www.drupal.org/association"] img[src*="' . $src . '"]'); + + // Go back to edit the now *linked* <drupal-media>. Everything from this + // point onwards is effectively testing "upcasting" and proving there is no + // data loss. + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + + // Assert the "dataDowncast" HTML before making changes. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertNotEmpty($xpath->query('//img[@alt="drupalimage test image"]')); + $this->assertNotEmpty($xpath->query('//a[@href="http://www.drupal.org/association"]')); + $this->assertNotEmpty($xpath->query('//a[@href="http://www.drupal.org/association"]/img[@alt="drupalimage test image"]')); + $this->assertCount($unrestricted ? 1 : 0, $xpath->query('//a[@href="http://www.drupal.org/association" and @class="trusted"]')); + + // Tests unlinking images. + $drupalimage->click(); + $this->assertEditorButtonEnabled('Link'); + $this->assertSame('true', $this->getEditorButton('Link')->getAttribute('aria-pressed')); + // Assert structure of image toolbar balloon. + $this->assertVisibleBalloon('.ck-toolbar[aria-label="Image toolbar"]'); + $link_image_button = $this->getBalloonButton('Link image'); + $this->assertSame('true', $link_image_button->getAttribute('aria-pressed')); + $link_image_button->click(); + // Assert structure of link actions balloon. + $this->getBalloonButton('Edit link'); + $unlink_image_button = $this->getBalloonButton('Unlink'); + // Click the "Unlink" button. + $unlink_image_button->click(); + $this->assertSame('false', $this->getEditorButton('Link')->getAttribute('aria-pressed')); + + // Assert the "editingDowncast" HTML after making changes. Assert the + // widget exists but not the link, or *any* link for that matter. Then + // assert the expected DOM structure in detail. + $assert_session->elementExists('css', '.ck-content .ck-widget.' . $expected_widget_class); + $assert_session->elementNotExists('css', '.ck-content a'); + $assert_session->elementExists('css', '.ck-content .ck-widget.' . $expected_widget_class . ' > img[src*="' . $src . '"][alt="drupalimage test image"]'); + + // Assert the "dataDowncast" HTML after making changes. + $xpath = new \DOMXPath($this->getEditorDataAsDom()); + $this->assertCount(0, $xpath->query('//a[@href="http://www.drupal.org/association"]/img[@alt="drupalimage test image"]')); + $this->assertCount(1, $xpath->query('//img[@alt="drupalimage test image"]')); + $this->assertCount(0, $xpath->query('//a')); + } + + /** + * Tests that alt text is required for images. + * + * @see https://ckeditor.com/docs/ckeditor5/latest/framework/guides/architecture/editing-engine.html#conversion + * + * @dataProvider providerAltTextRequired + */ + public function testAltTextRequired(bool $unrestricted) { + // Disable filter_html. + if ($unrestricted) { + FilterFormat::load('test_format') + ->setFilterConfig('filter_html', ['status' => FALSE]) + ->save(); + } + + // Make the test content has a block image and an inline image. + $img_tag = '<img ' . $this->imageAttributesAsString() . ' width="500" />'; + $this->host->body->value .= $img_tag . "<p>$img_tag</p>"; + $this->host->save(); + + $page = $this->getSession()->getPage(); + + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + $assert_session = $this->assertSession(); + + // Confirm both of the images exist. + $this->assertNotEmpty($image_block = $assert_session->waitForElementVisible('css', ".ck-content .ck-widget.image")); + $this->assertNotEmpty($image_inline = $assert_session->waitForElementVisible('css', ".ck-content .ck-widget.image-inline")); + + // Confirm both of the images have an alt text required warning. + $this->assertNotEmpty($image_block->find('css', '.image-alternative-text-missing-wrapper')); + $this->assertNotEmpty($image_inline->find('css', '.image-alternative-text-missing-wrapper')); + + // Add alt text to the block image. + $image_block->find('css', '.image-alternative-text-missing button')->click(); + $this->assertNotEmpty($assert_session->waitForElementVisible('css', '.ck-balloon-panel')); + $this->assertVisibleBalloon('.ck-text-alternative-form'); + + // Ensure that the missing alt text warning is hidden when the alternative + // text form is open. + $assert_session->waitForElement('css', '.ck-content .ck-widget.image .image-alternative-text-missing.ck-hidden'); + $assert_session->elementExists('css', '.ck-content .ck-widget.image-inline .image-alternative-text-missing'); + $assert_session->elementNotExists('css', '.ck-content .ck-widget.image-inline .image-alternative-text-missing.ck-hidden'); + + // Ensure that the missing alt text error is not added to decorative images. + $this->assertNotEmpty($decorative_button = $this->getBalloonButton('Decorative image')); + $assert_session->elementExists('css', '.ck-balloon-panel .ck-text-alternative-form input[type=text]'); + $decorative_button->click(); + $assert_session->elementExists('css', '.ck-content .ck-widget.image .image-alternative-text-missing.ck-hidden'); + $assert_session->elementExists('css', ".ck-content .ck-widget.image-inline .image-alternative-text-missing-wrapper"); + $assert_session->elementNotExists('css', '.ck-content .ck-widget.image-inline .image-alternative-text-missing.ck-hidden'); + + // Ensure that the missing alt text error is removed after saving the + // changes. + $this->assertNotEmpty($save_button = $this->getBalloonButton('Save')); + $save_button->click(); + $this->assertTrue($assert_session->waitForElementRemoved('css', ".ck-content .ck-widget.image .image-alternative-text-missing-wrapper")); + $assert_session->elementExists('css', '.ck-content .ck-widget.image-inline .image-alternative-text-missing-wrapper'); + + // Ensure that the decorative image downcasts into empty alt attribute. + $editor_dom = $this->getEditorDataAsDom(); + $decorative_img = $editor_dom->getElementsByTagName('img')->item(0); + $this->assertTrue($decorative_img->hasAttribute('alt')); + $this->assertEmpty($decorative_img->getAttribute('alt')); + + // Ensure that missing alt text error is not added to images with alt text. + $this->assertNotEmpty($alt_text_button = $this->getBalloonButton('Change image alternative text')); + $alt_text_button->click(); + + $decorative_button->click(); + $this->assertNotEmpty($save_button = $this->getBalloonButton('Save')); + $this->assertTrue($save_button->hasClass('ck-disabled')); + + $this->assertNotEmpty($alt_override_input = $page->find('css', '.ck-balloon-panel .ck-text-alternative-form input[type=text]')); + $alt_override_input->setValue('There is now alt text'); + $this->assertTrue($assert_session->waitForElementRemoved('css', '.ck-balloon-panel .ck-text-alternative-form .ck-disabled')); + $this->assertFalse($save_button->hasClass('ck-disabled')); + $save_button->click(); + + // Save the node and confirm that the alt text is retained. + $page->pressButton('Save'); + $this->assertNotEmpty($assert_session->waitForElement('css', 'img[alt="There is now alt text"]')); + + // Ensure that alt form is opened after image upload. + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + $this->addImage(); + $this->assertNotEmpty($assert_session->waitForElementVisible('css', '.ck-widget.image')); + $this->assertNotEmpty($assert_session->waitForElementVisible('css', '.ck-balloon-panel')); + $this->assertVisibleBalloon('.ck-text-alternative-form'); + } + + public function providerAltTextRequired(): array { + return [ + 'Restricted' => [FALSE], + 'Unrestricted' => [TRUE], + ]; + } + + public function providerLinkability(): array { + return [ + 'BLOCK image, restricted' => ['block', FALSE], + 'BLOCK image, unrestricted' => ['block', TRUE], + 'INLINE image, restricted' => ['inline', FALSE], + 'INLINE image, unrestricted' => ['inline', TRUE], + ]; + } + + /** + * Tests alignment integration. + * + * @dataProvider providerAlignment + */ + public function testAlignment(string $image_type): void { + $assert_session = $this->assertSession(); + $page = $this->getSession()->getPage(); + // Make the test content have either a block image or an inline image. + $img_tag = '<img alt="drupalimage test image" ' . $this->imageAttributesAsString() . ' />'; + $this->host->body->value .= $image_type === 'block' + ? $img_tag + : "<p>$img_tag</p>"; + $this->host->save(); + + $image_selector = $image_type === 'block' ? '.ck-widget.image' : '.ck-widget.image-inline'; + $default_alignment = $image_type === 'block' ? 'Break text' : 'In line'; + + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + $this->assertNotEmpty($assert_session->waitForElementVisible('css', $image_selector)); + + // Ensure that the default alignment option matches expectation. + $this->click($image_selector); + $this->assertVisibleBalloon('[aria-label="Image toolbar"]'); + $this->assertTrue($this->getBalloonButton($default_alignment)->hasClass('ck-on')); + $editor_dom = $this->getEditorDataAsDom(); + $drupal_media_element = $editor_dom->getElementsByTagName('img') + ->item(0); + $this->assertFalse($drupal_media_element->hasAttribute('data-align')); + $this->getBalloonButton('Align center and break text')->click(); + + // Assert the alignment class exists after editing downcast. + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-widget.image.image-style-align-center')); + $editor_dom = $this->getEditorDataAsDom(); + $drupal_media_element = $editor_dom->getElementsByTagName('img') + ->item(0); + $this->assertEquals('center', $drupal_media_element->getAttribute('data-align')); + + $page->pressButton('Save'); + // Check that the 'content has been updated' message status appears to confirm we left the editor. + $this->assertNotEmpty($assert_session->waitForElementVisible('css', '[data-drupal-messages]')); + // Check that the class is correct in the front end. + $assert_session->elementExists('css', 'img.align-center'); + // Go back to the editor to check that the alignment class still exists. + $edit_url = $this->getSession()->getCurrentURL() . '/edit'; + $this->drupalGet($edit_url); + $this->waitForEditor(); + $assert_session->elementExists('css', '.ck-widget.image.image-style-align-center'); + + // Ensure that "Centered image" alignment option is selected. + $this->click('.ck-widget.image'); + $this->assertVisibleBalloon('[aria-label="Image toolbar"]'); + $this->assertTrue($this->getBalloonButton('Align center and break text')->hasClass('ck-on')); + $this->getBalloonButton('Break text')->click(); + $this->assertTrue($assert_session->waitForElementRemoved('css', '.ck-widget.image.image-style-align-center')); + $editor_dom = $this->getEditorDataAsDom(); + $drupal_media_element = $editor_dom->getElementsByTagName('img') + ->item(0); + $this->assertFalse($drupal_media_element->hasAttribute('data-align')); + } + + public function providerAlignment() { + return [ + 'Block image' => ['block'], + 'Inline image' => ['inline'], + ]; + } + + /** + * Ensures that width attribute upcasts and downcasts correctly. + * + * @param string $width + * The width input for the image. + * + * @dataProvider providerWidth + */ + public function testWidth(string $width): void { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + // Add image to the host body. + $this->host->body->value = sprintf('<img data-foo="bar" alt="drupalimage test image" ' . $this->imageAttributesAsString() . ' width="%s" />', $width); + $this->host->save(); + + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + + // Ensure that the image is upcast as expected. In the editing view, the + // width attribute should downcast to an inline style on the container + // element. + $this->assertNotEmpty($assert_session->waitForElementVisible('css', '.ck-widget.image[style] img')); + + // Ensure that the width attribute is retained on downcast. + $editor_data = $this->getEditorDataAsDom(); + $width_from_editor = $editor_data->getElementsByTagName('img')->item(0)->getAttribute('width'); + $this->assertSame($width, $width_from_editor); + + // Save the node and ensure that the width attribute is retained. + $page->pressButton('Save'); + $this->assertNotEmpty($assert_session->waitForElement('css', "img[width='$width']")); + } + + /** + * Ensures that images can have caption set. + */ + public function testImageCaption() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + // The foo attribute is added to be removed later by CKEditor 5 to make sure + // CKEditor 5 was able to downcast data. + $img_tag = '<img ' . $this->imageAttributesAsString() . ' alt="drupalimage test image" data-caption="Alpacas <em>are</em> cute" foo="bar">'; + $this->host->body->value = $img_tag; + $this->host->save(); + + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + + $this->assertNotEmpty($assert_session->waitForElement('css', '.ck-editor')); + $this->assertNotEmpty($figcaption = $assert_session->waitForElement('css', '.image figcaption')); + $this->assertSame('Alpacas <em>are</em> cute', $figcaption->getHtml()); + $page->pressButton('Source'); + $editor_dom = $this->getEditorDataAsDom(); + $data_caption = $editor_dom->getElementsByTagName('img')->item(0)->getAttribute('data-caption'); + $this->assertSame('Alpacas <em>are</em> cute', $data_caption); + + $page->pressButton('Save'); + + $src = $this->imageAttributes()['src']; + $this->assertEquals('<img ' . $this->imageAttributesAsString(TRUE) . ' alt="drupalimage test image" data-caption="Alpacas <em>are</em> cute">', Node::load(1)->get('body')->value); + $assert_session->elementExists('xpath', '//figure/img[@src="' . $src . '" and not(@data-caption)]'); + $assert_session->responseContains('<figcaption>Alpacas <em>are</em> cute</figcaption>'); + } + + /** + * Data provider for ::testWidth(). + * + * @return \string[][] + */ + public function providerWidth(): array { + return [ + 'Image resize with percent unit (only allowed in HTML 4)' => [ + 'width' => '33%', + ], + 'Image resize with (implied) px unit' => [ + 'width' => '100', + ], + ]; + } + + /** + * Tests the image resize plugin. + * + * Confirms that enabling the resize plugin introduces the resize class to + * images within CKEditor 5. + * + * @param bool $is_resize_enabled + * Boolean flag to test enabled or disabled. + * + * @dataProvider providerResize + */ + public function testResize(bool $is_resize_enabled): void { + // Disable resize plugin because it is enabled by default. + if (!$is_resize_enabled) { + Editor::load('test_format')->setSettings([ + 'toolbar' => [ + 'items' => [ + 'drupalInsertImage', + ], + ], + 'plugins' => [ + 'ckeditor5_imageResize' => [ + 'allow_resize' => FALSE, + ], + ], + ])->save(); + } + + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + $this->drupalGet('node/add'); + $page->fillField('title[0][value]', 'My test content'); + $this->addImage(); + $image_figure = $assert_session->waitForElementVisible('css', 'figure'); + $this->assertSame($is_resize_enabled, $image_figure->hasClass('ck-widget_with-resizer')); + } + + /** + * Data provider for ::testResize(). + * + * @return array + * The test cases. + */ + public function providerResize(): array { + return [ + 'Image resize is enabled' => [ + 'is_resize_enabled' => TRUE, + ], + 'Image resize is disabled' => [ + 'is_resize_enabled' => FALSE, + ], + ]; + } + +} diff --git a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageUrlTest.php b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageUrlTest.php new file mode 100644 index 0000000000000000000000000000000000000000..6b0e38fc96024cbce66dd7d0ef393c3fa128568b --- /dev/null +++ b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/ImageUrlTest.php @@ -0,0 +1,121 @@ +<?php + +namespace Drupal\Tests\ckeditor5\FunctionalJavascript; + +use Drupal\ckeditor5\Plugin\Editor\CKEditor5; +use Drupal\editor\Entity\Editor; +use Drupal\filter\Entity\FilterFormat; +use Symfony\Component\Validator\ConstraintViolation; + +// cspell:ignore imageresize + +/** + * @coversDefaultClass \Drupal\ckeditor5\Plugin\CKEditor5Plugin\Image + * @group ckeditor5 + * @internal + */ +class ImageUrlTest extends ImageTestBase { + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + + FilterFormat::create([ + 'format' => 'test_format', + 'name' => 'Test format', + 'filters' => [ + 'filter_html' => [ + 'status' => TRUE, + 'settings' => [ + 'allowed_html' => '<p> <br> <em> <a href> <img alt height width src data-caption data-align>', + ], + ], + 'filter_align' => ['status' => TRUE], + 'filter_caption' => ['status' => TRUE], + ], + ])->save(); + Editor::create([ + 'editor' => 'ckeditor5', + 'format' => 'test_format', + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'drupalInsertImage', + 'sourceEditing', + 'link', + 'italic', + ], + ], + 'plugins' => [ + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => [], + ], + 'ckeditor5_imageResize' => [ + 'allow_resize' => TRUE, + ], + ], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + ])->save(); + $this->assertSame([], array_map( + function (ConstraintViolation $v) { + return (string) $v->getMessage(); + }, + iterator_to_array(CKEditor5::validatePair( + Editor::load('test_format'), + FilterFormat::load('test_format') + )) + )); + $this->adminUser = $this->drupalCreateUser([ + 'use text format test_format', + 'bypass node access', + 'administer filters', + ]); + + $this->host = $this->createNode([ + 'type' => 'page', + 'title' => 'Animals with strange names', + 'body' => [ + 'value' => '<p>The pirate is irate.</p>', + 'format' => 'test_format', + ], + ]); + $this->host->save(); + + $this->drupalLogin($this->adminUser); + } + + /** + * Tests the Drupal image URL widget. + */ + public function testImageUrlWidget(): void { + $assert_session = $this->assertSession(); + $page = $this->getSession()->getPage(); + + $image_selector = '.ck-widget.image-inline'; + $src = $this->imageAttributes()['src']; + + $this->drupalGet($this->host->toUrl('edit-form')); + $this->waitForEditor(); + + $this->pressEditorButton('Insert image'); + $panel = $page->find('css', '.ck-dropdown__panel.ck-image-insert__panel'); + $src_input = $panel->find('css', 'input[type=text]'); + $src_input->setValue($src); + $panel->find('xpath', "//button[span[text()='Insert']]")->click(); + + $this->assertNotEmpty($assert_session->waitForElementVisible('css', $image_selector)); + $this->click($image_selector); + $this->assertVisibleBalloon('[aria-label="Image toolbar"]'); + + $this->pressEditorButton('Insert image'); + $panel = $page->find('css', '.ck-dropdown__panel.ck-image-insert__panel'); + $src_input = $panel->find('css', 'input[type=text]'); + $this->assertEquals($src, $src_input->getValue()); + } + +} diff --git a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php index 87ad11e711fe3aa5b52f9f6807aaf5bd515e9fd9..ee61a6f463c8dada3fc0047d4b32f44306dc3c62 100644 --- a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php +++ b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/MediaTest.php @@ -739,16 +739,14 @@ public function testAlt() { // Test that setting alt value to two double quotes will signal to the // MediaEmbed filter to unset the attribute on the media image field. - // We intentionally add a space space after the two double quotes to test - // the string is trimmed to two quotes. + // We intentionally add a space after the two double quotes to test that the + // string is trimmed to two quotes. $alt_override_input->setValue('"" '); $this->getBalloonButton('Save')->click(); // Verify that the two double quote empty alt indicator ('""') set in - // the dialog has successfully resulted in a media image field with the - // alt attribute present but without a value. - // @todo Uncomment this in https://www.drupal.org/project/ckeditor5/issues/3206522. - // @codingStandardsIgnoreLine -// $this->assertNotEmpty($assert_session->waitForElementVisible('css', 'drupal-media img[alt=""]')); + // the alt text form balloon has successfully resulted in a media image + // field with the alt attribute present but without a value. + $this->assertNotEmpty($assert_session->waitForElementVisible('css', '[data-media-embed-test-view-mode] img[alt=""]')); // Test that the downcast drupal-media element's alt attribute now has the // empty string indicator. diff --git a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/SourceEditingTest.php b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/SourceEditingTest.php index db3d25864ed02c497f757779a23f69eadbe16d2f..d93a756d6d39b0625d26f191c6de1256ae731019 100644 --- a/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/SourceEditingTest.php +++ b/web/core/modules/ckeditor5/tests/src/FunctionalJavascript/SourceEditingTest.php @@ -320,7 +320,7 @@ public function providerAllowingExtraAttributes(): array { ], // Edge case: `style`. - // @todo https://www.drupal.org/project/drupal/issues/3260857 + // @todo https://www.drupal.org/project/drupal/issues/3304832 // Edge case: `type` attribute on lists. // @todo Remove in https://www.drupal.org/project/drupal/issues/3274635. diff --git a/web/core/modules/ckeditor5/tests/src/Kernel/ConfigurablePluginTest.php b/web/core/modules/ckeditor5/tests/src/Kernel/ConfigurablePluginTest.php index 39a78d9a0a5502bb919b8ddb493038b0e152d296..a786cb43325dbd016e3008ee8c293d8166a90c3c 100644 --- a/web/core/modules/ckeditor5/tests/src/Kernel/ConfigurablePluginTest.php +++ b/web/core/modules/ckeditor5/tests/src/Kernel/ConfigurablePluginTest.php @@ -82,13 +82,13 @@ public function testDefaults() { 3 => 'justify', ], ], + 'ckeditor5_image' => [], 'ckeditor5_imageResize' => [ 'allow_resize' => TRUE, ], 'ckeditor5_language' => [ 'language_list' => 'un', ], - 'ckeditor5_imageUpload' => [], ]; $this->assertSame($expected_default_plugin_settings, $default_plugin_settings); } diff --git a/web/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php b/web/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php index 49ec1af0e8d423ceee326aa6f66f6b67deff38cf..1af0b8041fa742bdca0357a2cc56f28d960bc054 100644 --- a/web/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php +++ b/web/core/modules/ckeditor5/tests/src/Kernel/SmartDefaultSettingsTest.php @@ -23,6 +23,17 @@ class SmartDefaultSettingsTest extends KernelTestBase { use SchemaCheckTestTrait; use CKEditor5ValidationTestTrait; + /** + * Exempt from strict schema checking, because using CKEditor 4. + * + * The updated Text Format & Text Editors are explicitly checked. + * + * @see \Drupal\Core\Config\Development\ConfigSchemaChecker + * + * @var bool + */ + protected $strictConfigSchema = FALSE; + /** * The manager for "CKEditor 5 plugin" plugins. * @@ -55,8 +66,6 @@ class SmartDefaultSettingsTest extends KernelTestBase { * {@inheritdoc} */ protected static $modules = [ - 'ckeditor', - 'ckeditor_test', 'ckeditor5', 'editor', 'filter', @@ -65,8 +74,6 @@ class SmartDefaultSettingsTest extends KernelTestBase { 'media', 'media_library', 'views', - // @todo Remove in https://www.drupal.org/project/drupal/issues/3263384 - 'ckeditor5_plugin_conditions_test', 'dblog', 'help', ]; @@ -90,17 +97,27 @@ protected function setUp(): void { ->save(); Editor::create( Yaml::parseFile('core/profiles/standard/config/install/editor.editor.full_html.yml') - )->save(); + )->setSyncing(TRUE)->save(); $basic_html_format = Yaml::parseFile('core/profiles/standard/config/install/filter.format.basic_html.yml'); FilterFormat::create($basic_html_format)->save(); Editor::create( Yaml::parseFile('core/profiles/standard/config/install/editor.editor.basic_html.yml') - )->save(); + )->setSyncing(TRUE)->save(); FilterFormat::create( Yaml::parseFile('core/profiles/standard/config/install/filter.format.restricted_html.yml') - )->save(); + )->setSyncing(TRUE)->save(); + + $basic_html_format_without_image_uploads = $basic_html_format; + $basic_html_format_without_image_uploads['name'] .= ' (without image uploads)'; + $basic_html_format_without_image_uploads['format'] = 'basic_html_without_image_uploads'; + FilterFormat::create($basic_html_format_without_image_uploads)->save(); + Editor::create( + ['format' => 'basic_html_without_image_uploads'] + + + Yaml::parseFile('core/profiles/standard/config/install/editor.editor.basic_html.yml') + )->setImageUploadSettings(['status' => FALSE])->setSyncing(TRUE)->save(); $allowed_html_parents = ['filters', 'filter_html', 'settings', 'allowed_html']; $current_value = NestedArray::getValue($basic_html_format, $allowed_html_parents); @@ -109,58 +126,58 @@ protected function setUp(): void { $basic_html_format_without_h4_h6['name'] .= ' (without H4 and H6)'; $basic_html_format_without_h4_h6['format'] = 'basic_html_without_h4_h6'; NestedArray::setValue($basic_html_format_without_h4_h6, $allowed_html_parents, $new_value); - FilterFormat::create($basic_html_format_without_h4_h6)->save(); + FilterFormat::create($basic_html_format_without_h4_h6)->setSyncing(TRUE)->save(); Editor::create( ['format' => 'basic_html_without_h4_h6'] + Yaml::parseFile('core/profiles/standard/config/install/editor.editor.basic_html.yml') - )->save(); + )->setSyncing(TRUE)->save(); $new_value = str_replace(['<h2 id> ', '<h3 id> ', '<h4 id> ', '<h5 id> ', '<h6 id> '], '', $current_value); $basic_html_format_without_headings = $basic_html_format; $basic_html_format_without_headings['name'] .= ' (without H*)'; $basic_html_format_without_headings['format'] = 'basic_html_without_headings'; NestedArray::setValue($basic_html_format_without_headings, $allowed_html_parents, $new_value); - FilterFormat::create($basic_html_format_without_headings)->save(); + FilterFormat::create($basic_html_format_without_headings)->setSyncing(TRUE)->save(); Editor::create( ['format' => 'basic_html_without_headings'] + Yaml::parseFile('core/profiles/standard/config/install/editor.editor.basic_html.yml') - )->save(); + )->setSyncing(TRUE)->save(); $basic_html_format_with_pre = $basic_html_format; $basic_html_format_with_pre['name'] .= ' (with <pre>)'; $basic_html_format_with_pre['format'] = 'basic_html_with_pre'; NestedArray::setValue($basic_html_format_with_pre, $allowed_html_parents, $current_value . ' <pre>'); - FilterFormat::create($basic_html_format_with_pre)->save(); + FilterFormat::create($basic_html_format_with_pre)->setSyncing(TRUE)->save(); Editor::create( ['format' => 'basic_html_with_pre'] + Yaml::parseFile('core/profiles/standard/config/install/editor.editor.basic_html.yml') - )->save(); + )->setSyncing(TRUE)->save(); $basic_html_format_with_h1 = $basic_html_format; $basic_html_format_with_h1['name'] .= ' (with <h1>)'; $basic_html_format_with_h1['format'] = 'basic_html_with_h1'; NestedArray::setValue($basic_html_format_with_h1, $allowed_html_parents, $current_value . ' <h1>'); - FilterFormat::create($basic_html_format_with_h1)->save(); + FilterFormat::create($basic_html_format_with_h1)->setSyncing(TRUE)->save(); Editor::create( ['format' => 'basic_html_with_h1'] + Yaml::parseFile('core/profiles/standard/config/install/editor.editor.basic_html.yml') - )->save(); + )->setSyncing(TRUE)->save(); $new_value = str_replace('<p>', '<p class="text-align-center text-align-justify">', $current_value); $basic_html_format_with_alignable_p = $basic_html_format; $basic_html_format_with_alignable_p['name'] .= ' (with alignable paragraph support)'; $basic_html_format_with_alignable_p['format'] = 'basic_html_with_alignable_p'; NestedArray::setValue($basic_html_format_with_alignable_p, $allowed_html_parents, $new_value); - FilterFormat::create($basic_html_format_with_alignable_p)->save(); + FilterFormat::create($basic_html_format_with_alignable_p)->setSyncing(TRUE)->save(); Editor::create( ['format' => 'basic_html_with_alignable_p'] + Yaml::parseFile('core/profiles/standard/config/install/editor.editor.basic_html.yml') - )->save(); + )->setSyncing(TRUE)->save(); $basic_html_format_with_media_embed = $basic_html_format; $basic_html_format_with_media_embed['name'] .= ' (with Media Embed support)'; @@ -169,7 +186,7 @@ protected function setUp(): void { $basic_html_format_with_media_embed['filters']['media_embed'] = ['status' => TRUE]; $new_value = $current_value . ' <drupal-media data-entity-type data-entity-uuid data-align data-caption alt>'; NestedArray::setValue($basic_html_format_with_media_embed, $allowed_html_parents, $new_value); - FilterFormat::create($basic_html_format_with_media_embed)->save(); + FilterFormat::create($basic_html_format_with_media_embed)->setSyncing(TRUE)->save(); $basic_html_editor_with_media_embed = Editor::create( ['format' => 'basic_html_with_media_embed'] + @@ -180,7 +197,7 @@ protected function setUp(): void { // pre-existing toolbar item group labeled "Media". $settings['toolbar']['rows'][0][3]['items'][] = 'DrupalMediaLibrary'; $basic_html_editor_with_media_embed->setSettings($settings); - $basic_html_editor_with_media_embed->save(); + $basic_html_editor_with_media_embed->setSyncing(TRUE)->save(); $basic_html_format_with_media_embed_view_mode_invalid = $basic_html_format_with_media_embed; $basic_html_format_with_media_embed_view_mode_invalid['name'] = ' (with Media Embed support, view mode enabled but no view modes configured)'; @@ -188,7 +205,7 @@ protected function setUp(): void { $current_value_media_embed = NestedArray::getValue($basic_html_format_with_media_embed, $allowed_html_parents); $new_value = str_replace('<drupal-media data-entity-type data-entity-uuid data-align data-caption alt>', '<drupal-media data-entity-type data-entity-uuid data-align data-caption alt data-view-mode>', $current_value_media_embed); NestedArray::setValue($basic_html_format_with_media_embed_view_mode_invalid, $allowed_html_parents, $new_value); - FilterFormat::create($basic_html_format_with_media_embed_view_mode_invalid)->save(); + FilterFormat::create($basic_html_format_with_media_embed_view_mode_invalid)->setSyncing(TRUE)->save(); $basic_html_editor_with_media_embed_view_mode_enabled_no_view_modes_configured = Editor::create( ['format' => 'basic_html_with_media_embed_view_mode_enabled_no_view_modes_configured'] + @@ -199,24 +216,24 @@ protected function setUp(): void { // pre-existing toolbar item group labeled "Media". $settings['toolbar']['rows'][0][3]['items'][] = 'DrupalMediaLibrary'; $basic_html_editor_with_media_embed_view_mode_enabled_no_view_modes_configured->setSettings($settings); - $basic_html_editor_with_media_embed_view_mode_enabled_no_view_modes_configured->save(); + $basic_html_editor_with_media_embed_view_mode_enabled_no_view_modes_configured->setSyncing(TRUE)->save(); $new_value = str_replace('<img src alt height width data-entity-type data-entity-uuid data-align data-caption>', '<img src alt height width data-*>', $current_value); $basic_html_format_with_any_data_attr = $basic_html_format; $basic_html_format_with_any_data_attr['name'] .= ' (with any data-* attribute on images)'; $basic_html_format_with_any_data_attr['format'] = 'basic_html_with_any_data_attr'; NestedArray::setValue($basic_html_format_with_any_data_attr, $allowed_html_parents, $new_value); - FilterFormat::create($basic_html_format_with_any_data_attr)->save(); + FilterFormat::create($basic_html_format_with_any_data_attr)->setSyncing(TRUE)->save(); Editor::create( ['format' => 'basic_html_with_any_data_attr'] + Yaml::parseFile('core/profiles/standard/config/install/editor.editor.basic_html.yml') - )->save(); + )->setSyncing(TRUE)->save(); $basic_html_format_with_media_embed_view_mode_enabled_two_view_modes_configured = $basic_html_format_with_media_embed_view_mode_invalid; $basic_html_format_with_media_embed_view_mode_enabled_two_view_modes_configured['name'] = ' (with Media Embed support, view mode enabled and two view modes configured )'; $basic_html_format_with_media_embed_view_mode_enabled_two_view_modes_configured['format'] = 'basic_html_with_media_embed_view_mode_enabled_two_view_modes_configured'; - FilterFormat::create($basic_html_format_with_media_embed_view_mode_enabled_two_view_modes_configured)->save(); + FilterFormat::create($basic_html_format_with_media_embed_view_mode_enabled_two_view_modes_configured)->setSyncing(TRUE)->save(); $basic_html_editor_with_media_embed_view_mode_enabled_two_view_modes_configured = Editor::create( ['format' => 'basic_html_with_media_embed_view_mode_enabled_two_view_modes_configured'] + @@ -227,21 +244,21 @@ protected function setUp(): void { // pre-existing toolbar item group labeled "Media". $settings['toolbar']['rows'][0][3]['items'][] = 'DrupalMediaLibrary'; $basic_html_editor_with_media_embed_view_mode_enabled_two_view_modes_configured->setSettings($settings); - $basic_html_editor_with_media_embed_view_mode_enabled_two_view_modes_configured->save(); + $basic_html_editor_with_media_embed_view_mode_enabled_two_view_modes_configured->setSyncing(TRUE)->save(); EntityViewMode::create([ 'id' => 'media.view_mode_1', 'targetEntityType' => 'media', 'status' => TRUE, 'enabled' => TRUE, 'label' => 'View Mode 1', - ])->save(); + ])->setSyncing(TRUE)->save(); EntityViewMode::create([ 'id' => 'media.view_mode_2', 'targetEntityType' => 'media', 'status' => TRUE, 'enabled' => TRUE, 'label' => 'View Mode 2', - ])->save(); + ])->setSyncing(TRUE)->save(); $filter_format = FilterFormat::load('basic_html_with_media_embed_view_mode_enabled_two_view_modes_configured'); $filter_format->setFilterConfig('media_embed', [ 'status' => TRUE, @@ -253,7 +270,7 @@ protected function setUp(): void { 'view_mode_2' => 'view_mode_2', ], ], - ])->save(); + ])->setSyncing(TRUE)->save(); $filter_plugin_manager = $this->container->get('plugin.manager.filter'); FilterFormat::create([ @@ -265,12 +282,12 @@ protected function setUp(): void { 'settings' => $filter_plugin_manager->getDefinition('filter_html')['settings'], ], ], - ])->save(); + ])->setSyncing(TRUE)->save(); FilterFormat::create([ 'format' => 'cke4_plugins_with_settings', 'name' => 'All CKEditor 4 core plugins with settings', - ])->save(); + ])->setSyncing(TRUE)->save(); Editor::create([ 'format' => 'cke4_plugins_with_settings', 'editor' => 'ckeditor', @@ -310,7 +327,7 @@ protected function setUp(): void { ], ], ], - ])->save(); + ])->setSyncing(TRUE)->save(); FilterFormat::create([ 'format' => 'cke4_stylescombo_span', @@ -323,7 +340,7 @@ protected function setUp(): void { ] + $filter_plugin_manager->getDefinition('filter_html')['settings'], ], ], - ])->save(); + ])->setSyncing(TRUE)->save(); Editor::create([ 'format' => 'cke4_stylescombo_span', 'editor' => 'ckeditor', @@ -346,12 +363,12 @@ protected function setUp(): void { ], ], ], - ])->save(); + ])->setSyncing(TRUE)->save(); FilterFormat::create([ 'format' => 'cke4_contrib_plugins_now_in_core', 'name' => 'All CKEditor 4 contrib plugins now in core', - ])->save(); + ])->setSyncing(TRUE)->save(); Editor::create([ 'format' => 'cke4_contrib_plugins_now_in_core', 'editor' => 'ckeditor', @@ -371,7 +388,7 @@ protected function setUp(): void { ], 'plugins' => [], ], - ])->save(); + ])->setSyncing(TRUE)->save(); } /** @@ -554,7 +571,7 @@ public function provider() { 'numberedList', '|', 'blockQuote', - 'uploadImage', + 'drupalInsertImage', '|', 'heading', '|', @@ -683,6 +700,39 @@ public function provider() { ], ]); + yield "basic_html_without_image_uploads can be switched to CKEditor 5 without problems, <img data-entity-type data-entity-uuid> support is retained via sourceEditing" => [ + 'format_id' => 'basic_html_without_image_uploads', + 'filters_to_drop' => $basic_html_test_case['filters_to_drop'], + 'expected_ckeditor5_settings' => [ + 'toolbar' => $basic_html_test_case['expected_ckeditor5_settings']['toolbar'], + 'plugins' => [ + 'ckeditor5_heading' => $basic_html_test_case['expected_ckeditor5_settings']['plugins']['ckeditor5_heading'], + 'ckeditor5_imageResize' => $basic_html_test_case['expected_ckeditor5_settings']['plugins']['ckeditor5_imageResize'], + 'ckeditor5_list' => $basic_html_test_case['expected_ckeditor5_settings']['plugins']['ckeditor5_list'], + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => array_merge( + $basic_html_test_case['expected_ckeditor5_settings']['plugins']['ckeditor5_sourceEditing']['allowed_tags'], + ['<img data-entity-type data-entity-uuid>'], + ), + ], + ], + ], + 'expected_superset' => $basic_html_test_case['expected_superset'], + 'expected_fundamental_compatibility_violations' => $basic_html_test_case['expected_fundamental_compatibility_violations'], + 'expected_db_logs' => [ + 'status' => [ + 'The CKEditor 5 migration enabled the following plugins to support tags that are allowed by the <em class="placeholder">Basic HTML (without image uploads)</em> text format: <em class="placeholder">Code (for tags: <code>)</em>. The text format must be saved to make these changes active.', + 'The following tags were permitted by the <em class="placeholder">Basic HTML (without image uploads)</em> text format\'s filter configuration, but no plugin was available that supports them. To ensure the tags remain supported by this text format, the following were added to the Source Editing plugin\'s <em>Manually editable HTML tags</em>: <cite> <dl> <dt> <dd> <span>. The text format must be saved to make these changes active.', + 'As part of migrating to CKEditor 5, it was found that the <em class="placeholder">Basic HTML (without image uploads)</em> text format\'s HTML filters includes plugins that support the following tags, but not some of their attributes. To ensure these attributes remain supported, the following were added to the Source Editing plugin\'s <em>Manually editable HTML tags</em>: <a hreflang> <blockquote cite> <ul type> <ol type> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <img data-entity-type data-entity-uuid>. The text format must be saved to make these changes active.', + ], + ], + 'expected_messages' => [ + 'status' => [ + 'To maintain the capabilities of this text format, <a target="_blank" href="/admin/help/ckeditor5#migration-settings">the CKEditor 5 migration</a> did the following: Enabled these plugins: (<em class="placeholder">Code</em>). Added these tags/attributes to the Source Editing Plugin\'s <a target="_blank" href="/admin/help/ckeditor5#source-editing">Manually editable HTML tags</a> setting: <cite> <dl> <dt> <dd> <span> <a hreflang> <blockquote cite> <ul type> <ol type> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id> <img data-entity-type data-entity-uuid>. Additional details are available in your logs.', + ], + ], + ]; + yield "basic_html_without_h4_h6 can be switched to CKEditor 5 without problems, heading configuration computed automatically" => [ 'format_id' => 'basic_html_without_h4_h6', 'filters_to_drop' => $basic_html_test_case['filters_to_drop'], @@ -1109,7 +1159,7 @@ public function provider() { 'numberedList', '|', 'blockQuote', - 'uploadImage', + 'drupalInsertImage', 'insertTable', 'horizontalLine', '|', diff --git a/web/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php b/web/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php index e6640679fffa98110e57886baed62b38a8fb99d0..d27563a488f0b51ee8a45c6facf56f56814f8de1 100644 --- a/web/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php +++ b/web/core/modules/ckeditor5/tests/src/Kernel/ValidatorsTest.php @@ -14,7 +14,7 @@ use Drupal\Tests\SchemaCheckTestTrait; use Symfony\Component\Yaml\Yaml; -// cspell:ignore onhover +// cspell:ignore onhover baguette /** * @covers \Drupal\ckeditor5\Plugin\Validation\Constraint\ToolbarItemConstraintValidator @@ -252,19 +252,6 @@ public function provider(): array { ], ]; - $data['uploadImage toolbar item condition not met: image uploads must be enabled'] = [ - 'settings' => [ - 'toolbar' => [ - 'items' => [ - 'uploadImage', - ], - ], - 'plugins' => [], - ], - 'violations' => [ - 'settings.toolbar.items.0' => 'The <em class="placeholder">Image upload</em> toolbar item requires image uploads to be enabled.', - ], - ]; $data['drupalMedia toolbar item condition not met: media filter enabled'] = [ 'settings' => [ 'toolbar' => [ @@ -1027,11 +1014,11 @@ public function providerPair(): array { ], ]; - $data['INVALID: uploadImage toolbar item condition NOT met: image uploads must be enabled'] = [ + $data['INVALID: drupalInsertImage without required dependent plugin configuration'] = [ 'settings' => [ 'toolbar' => [ 'items' => [ - 'uploadImage', + 'drupalInsertImage', ], ], 'plugins' => [], @@ -1041,14 +1028,14 @@ public function providerPair(): array { ], 'filters' => [], 'violations' => [ - 'settings.toolbar.items.0' => 'The <em class="placeholder">Image upload</em> toolbar item requires image uploads to be enabled.', + 'settings.plugins.ckeditor5_imageResize' => 'Configuration for the enabled plugin "<em class="placeholder">Image resize</em>" (<em class="placeholder">ckeditor5_imageResize</em>) is missing.', ], ]; - $data['VALID: uploadImage toolbar item condition met: image uploads must be enabled'] = [ + $data['VALID: drupalInsertImage toolbar item without image upload'] = [ 'settings' => [ 'toolbar' => [ 'items' => [ - 'uploadImage', + 'drupalInsertImage', ], ], 'plugins' => [ @@ -1058,6 +1045,25 @@ public function providerPair(): array { ], ], 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [], + 'violations' => [], + ]; + $data['VALID: drupalInsertImage image upload enabled'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'drupalInsertImage', + ], + ], + 'plugins' => [ + 'ckeditor5_imageResize' => [ + 'allow_resize' => FALSE, + ], + ], + ], + 'image' => [ 'status' => TRUE, ], 'filters' => [], @@ -1252,6 +1258,209 @@ public function providerPair(): array { 'settings.plugins.ckeditor5_style' => 'The <em class="placeholder">Style</em> plugin needs another plugin to create <code><blockquote></code>, for it to be able to create the following attributes: <code><blockquote class="highlighted"></code>. Enable a plugin that supports creating this tag. If none exists, you can configure the Source Editing plugin to support it.', ], ]; + $data['INVALID: Style plugin configured to add class already added by an other plugin'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'alignment', + 'style', + ], + ], + 'plugins' => [ + 'ckeditor5_alignment' => [ + 'enabled_alignments' => ['justify'], + ], + 'ckeditor5_style' => [ + 'styles' => [ + [ + 'label' => 'Text align', + 'element' => '<p class="text-align-justify">', + ], + ], + ], + ], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [ + 'filter_html' => [ + 'id' => 'filter_html', + 'provider' => 'filter', + 'status' => TRUE, + 'weight' => 0, + 'settings' => [ + 'allowed_html' => '<p class="text-align-justify"> <br>', + 'filter_html_help' => TRUE, + 'filter_html_nofollow' => TRUE, + ], + ], + ], + 'violations' => [ + 'settings.plugins.ckeditor5_style.styles.0.element' => 'A style must only specify classes not supported by other plugins. The <code>text-align-justify</code> classes on <code><p></code> are already supported by the enabled <em class="placeholder">Alignment</em> plugin.', + ], + ]; + $data['VALID: Style plugin configured to add new class to an already restricted tag'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'alignment', + 'style', + ], + ], + 'plugins' => [ + 'ckeditor5_alignment' => [ + 'enabled_alignments' => ['justify'], + ], + 'ckeditor5_style' => [ + 'styles' => [ + [ + 'label' => 'Add baguette class', + 'element' => '<p class="baguette">', + ], + ], + ], + ], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [ + 'filter_html' => [ + 'id' => 'filter_html', + 'provider' => 'filter', + 'status' => TRUE, + 'weight' => 0, + 'settings' => [ + 'allowed_html' => '<p class="text-align-justify baguette"> <br>', + 'filter_html_help' => TRUE, + 'filter_html_nofollow' => TRUE, + ], + ], + ], + 'violations' => [], + ]; + $data['VALID: Style plugin configured to add class to an element provided by an explicit plugin that already allows all classes'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'kbdAllClasses', + 'style', + ], + ], + 'plugins' => [ + 'ckeditor5_style' => [ + 'styles' => [ + [ + 'label' => 'Add baguette class', + 'element' => '<kbd class="baguette">', + ], + ], + ], + ], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [ + 'filter_html' => [ + 'id' => 'filter_html', + 'provider' => 'filter', + 'status' => TRUE, + 'weight' => 0, + 'settings' => [ + 'allowed_html' => '<p> <br> <kbd class>', + 'filter_html_help' => TRUE, + 'filter_html_nofollow' => TRUE, + ], + ], + ], + 'violations' => [], + ]; + $data['VALID: Style plugin configured to add class to GHS-supported HTML5 tag'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'style', + 'sourceEditing', + ], + ], + 'plugins' => [ + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => [ + '<kbd>', + ], + ], + 'ckeditor5_style' => [ + 'styles' => [ + [ + 'label' => 'Add baguette class', + 'element' => '<kbd class="baguette">', + ], + ], + ], + ], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [ + 'filter_html' => [ + 'id' => 'filter_html', + 'provider' => 'filter', + 'status' => TRUE, + 'weight' => 0, + 'settings' => [ + 'allowed_html' => '<p> <br> <kbd class="baguette">', + 'filter_html_help' => TRUE, + 'filter_html_nofollow' => TRUE, + ], + ], + ], + 'violations' => [], + ]; + $data['VALID: Style plugin configured to add class to GHS-supported HTML5 tag that already allows all classes'] = [ + 'settings' => [ + 'toolbar' => [ + 'items' => [ + 'style', + 'sourceEditing', + ], + ], + 'plugins' => [ + 'ckeditor5_sourceEditing' => [ + 'allowed_tags' => [ + '<bdi class>', + ], + ], + 'ckeditor5_style' => [ + 'styles' => [ + [ + 'label' => 'Bidirectional name', + 'element' => '<bdi class="name">', + ], + ], + ], + ], + ], + 'image_upload' => [ + 'status' => FALSE, + ], + 'filters' => [ + 'filter_html' => [ + 'id' => 'filter_html', + 'provider' => 'filter', + 'status' => TRUE, + 'weight' => 0, + 'settings' => [ + 'allowed_html' => '<p> <br> <bdi class>', + 'filter_html_help' => TRUE, + 'filter_html_nofollow' => TRUE, + ], + ], + ], + 'violations' => [], + ]; return $data; } diff --git a/web/core/modules/ckeditor5/tests/src/Unit/HTMLRestrictionsTest.php b/web/core/modules/ckeditor5/tests/src/Unit/HTMLRestrictionsTest.php index 41179261df8e3ad1f44c4459ba5fbcd83ffe5028..59b0f423504bd5a41d96346973a651f69f240f3b 100644 --- a/web/core/modules/ckeditor5/tests/src/Unit/HTMLRestrictionsTest.php +++ b/web/core/modules/ckeditor5/tests/src/Unit/HTMLRestrictionsTest.php @@ -91,6 +91,10 @@ public function providerConstruct(): \Generator { ['foo' => ['baz' => TRUE], 'bar' => ['qux' => ['a', 'b']]], 'The "bar" HTML tag has attribute restriction "qux", but it is not an array of key-value pairs, with HTML tag attribute values as keys and TRUE as values.', ]; + yield 'INVALID: keys valid, values invalid attribute restrictions due to broad wildcard instead of prefix/infix/suffix wildcard allowed attribute value' => [ + ['foo' => ['bar' => ['*' => TRUE]]], + 'The "foo" HTML tag has an attribute restriction "bar" with a "*" allowed attribute value. This implies all attributes values are allowed. Remove the attribute value restriction instead, or use a prefix (`*-foo`), infix (`*-foo-*`) or suffix (`foo-*`) wildcard restriction instead.', + ]; // Valid values. yield 'VALID: keys valid, boolean attribute restriction values: also valid' => [ @@ -125,8 +129,6 @@ public function providerConstruct(): \Generator { ['*' => ['foo' => ['a' => TRUE, 'b' => TRUE]]], NULL, ]; - // @todo Nothing in Drupal core uses this ability, and no custom/contrib - // module is known to use this. Therefore this is left for the future. yield 'VALID BUT NOT YET SUPPORTED: global attribute tag with attribute allowed, specific attribute values forbidden' => [ ['*' => ['foo' => ['a' => FALSE, 'b' => FALSE]]], 'The "*" HTML tag has attribute restriction "foo", but it is not an array of key-value pairs, with HTML tag attribute values as keys and TRUE as values.', @@ -278,6 +280,10 @@ public function providerConvenienceConstructors(): \Generator { '<a target>', ['a' => ['target' => TRUE]], ]; + yield 'tag with single attribute allowing any value unnecessarily explicitly' => [ + '<a target="*">', + ['a' => ['target' => TRUE]], + ]; yield 'tag with single attribute allowing single specific value' => [ '<a target="_blank">', ['a' => ['target' => ['_blank' => TRUE]]], diff --git a/web/core/modules/comment/comment.module b/web/core/modules/comment/comment.module index 8b3e026ba72a4c06d5a994ebe7e8de8bfd519830..cabade3fee95205c43adee51d8a4ed84912c4e39 100644 --- a/web/core/modules/comment/comment.module +++ b/web/core/modules/comment/comment.module @@ -460,8 +460,15 @@ function comment_user_cancel($edit, UserInterface $account, $method) { /** @var \Drupal\comment\CommentInterface[] $comments */ $comments = \Drupal::entityTypeManager()->getStorage('comment')->loadByProperties(['uid' => $account->id()]); foreach ($comments as $comment) { - $comment->setOwnerId(0); - $comment->setAuthorName(\Drupal::config('user.settings')->get('anonymous')); + $langcodes = array_keys($comment->getTranslationLanguages()); + // For efficiency manually save the original comment before applying any + // changes. + $comment->original = clone $comment; + foreach ($langcodes as $langcode) { + $comment_translated = $comment->getTranslation($langcode); + $comment_translated->setOwnerId(0); + $comment_translated->setAuthorName(\Drupal::config('user.settings')->get('anonymous')); + } $comment->save(); } break; diff --git a/web/core/modules/comment/tests/src/Functional/CommentCSSTest.php b/web/core/modules/comment/tests/src/Functional/CommentCSSTest.php index b7f739220044f09b0f7d8aa15ee7b2eca1182f17..8491e0ef9324962951dd56b06503e05653813c0a 100644 --- a/web/core/modules/comment/tests/src/Functional/CommentCSSTest.php +++ b/web/core/modules/comment/tests/src/Functional/CommentCSSTest.php @@ -95,43 +95,43 @@ public function testCommentClasses() { // Verify the data-history-node-id attribute, which is necessary for the // by-viewer class and the "new" indicator, see below. - $this->assertCount(1, $this->xpath('//*[@data-history-node-id="' . $node->id() . '"]'), 'data-history-node-id attribute is set on node.'); + $this->assertSession()->elementsCount('xpath', '//*[@data-history-node-id="' . $node->id() . '"]', 1); // Verify classes if the comment is visible for the current user. if ($case['comment_status'] == CommentInterface::PUBLISHED || $case['user'] == 'admin') { // Verify the by-anonymous class. - $comments = $this->xpath('//*[contains(@class, "comment") and contains(@class, "by-anonymous")]'); + $comments = '//*[contains(@class, "comment") and contains(@class, "by-anonymous")]'; if ($case['comment_uid'] == 0) { - $this->assertCount(1, $comments, 'by-anonymous class found.'); + $this->assertSession()->elementsCount('xpath', $comments, 1); } else { - $this->assertCount(0, $comments, 'by-anonymous class not found.'); + $this->assertSession()->elementNotExists('xpath', $comments); } // Verify the by-node-author class. - $comments = $this->xpath('//*[contains(@class, "comment") and contains(@class, "by-node-author")]'); + $comments = '//*[contains(@class, "comment") and contains(@class, "by-node-author")]'; if ($case['comment_uid'] > 0 && $case['comment_uid'] == $case['node_uid']) { - $this->assertCount(1, $comments, 'by-node-author class found.'); + $this->assertSession()->elementsCount('xpath', $comments, 1); } else { - $this->assertCount(0, $comments, 'by-node-author class not found.'); + $this->assertSession()->elementNotExists('xpath', $comments); } // Verify the data-comment-user-id attribute, which is used by the // drupal.comment-by-viewer library to add a by-viewer when the current // user (the viewer) was the author of the comment. We do this in Java- // Script to prevent breaking the render cache. - $this->assertCount(1, $this->xpath('//*[contains(@class, "comment") and @data-comment-user-id="' . $case['comment_uid'] . '"]'), 'data-comment-user-id attribute is set on comment.'); + $this->assertSession()->elementsCount('xpath', '//*[contains(@class, "comment") and @data-comment-user-id="' . $case['comment_uid'] . '"]', 1); $this->assertSession()->responseContains($this->getModulePath('comment') . '/js/comment-by-viewer.js'); } // Verify the unpublished class. - $comments = $this->xpath('//*[contains(@class, "comment") and contains(@class, "unpublished")]'); + $comments = '//*[contains(@class, "comment") and contains(@class, "unpublished")]'; if ($case['comment_status'] == CommentInterface::NOT_PUBLISHED && $case['user'] == 'admin') { - $this->assertCount(1, $comments, 'unpublished class found.'); + $this->assertSession()->elementsCount('xpath', $comments, 1); } else { - $this->assertCount(0, $comments, 'unpublished class not found.'); + $this->assertSession()->elementNotExists('xpath', $comments); } // Verify the data-comment-timestamp attribute, which is used by the @@ -139,7 +139,7 @@ public function testCommentClasses() { // comment that was created or changed after the last time the current // user read the corresponding node. if ($case['comment_status'] == CommentInterface::PUBLISHED || $case['user'] == 'admin') { - $this->assertCount(1, $this->xpath('//*[contains(@class, "comment")]/*[@data-comment-timestamp="' . $comment->getChangedTime() . '"]'), 'data-comment-timestamp attribute is set on comment'); + $this->assertSession()->elementsCount('xpath', '//*[contains(@class, "comment")]/*[@data-comment-timestamp="' . $comment->getChangedTime() . '"]', 1); $expectedJS = ($case['user'] !== 'anonymous'); $this->assertSame($expectedJS, isset($settings['ajaxPageState']['libraries']) && in_array('comment/drupal.comment-new-indicator', explode(',', $settings['ajaxPageState']['libraries'])), 'drupal.comment-new-indicator library is present.'); } diff --git a/web/core/modules/comment/tests/src/Functional/CommentInterfaceTest.php b/web/core/modules/comment/tests/src/Functional/CommentInterfaceTest.php index 098c50e40425be6638813c64571e4318d4e55f3e..eca7d143b421bdee46090de5a38f7d9de6f23f3b 100644 --- a/web/core/modules/comment/tests/src/Functional/CommentInterfaceTest.php +++ b/web/core/modules/comment/tests/src/Functional/CommentInterfaceTest.php @@ -87,12 +87,7 @@ public function testCommentInterface() { $this->drupalGet('node/' . $this->node->id()); $this->assertSession()->pageTextContains($subject_text); $this->assertSession()->pageTextContains($comment_text); - $arguments = [ - ':link' => base_path() . 'comment/' . $comment->id() . '#comment-' . $comment->id(), - ]; - $pattern_permalink = '//footer/a[contains(@href,:link) and text()="Permalink"]'; - $permalink = $this->xpath($pattern_permalink, $arguments); - $this->assertNotEmpty($permalink, 'Permalink link found.'); + $this->assertSession()->elementExists('xpath', '//footer/a[contains(@href,"' . base_path() . 'comment/' . $comment->id() . '#comment-' . $comment->id() . '") and text()="Permalink"]'); // Set comments to have subject and preview to optional. $this->drupalLogout(); diff --git a/web/core/modules/comment/tests/src/Functional/CommentNewIndicatorTest.php b/web/core/modules/comment/tests/src/Functional/CommentNewIndicatorTest.php index f0548a9433ad03878cefdaaed9194670bf4e94c7..a0e6e543ec5a060211ae3a66ebddbb1aea1094ee 100644 --- a/web/core/modules/comment/tests/src/Functional/CommentNewIndicatorTest.php +++ b/web/core/modules/comment/tests/src/Functional/CommentNewIndicatorTest.php @@ -66,7 +66,7 @@ public function testCommentNewCommentsIndicator() { // used by the drupal.node-new-comments-link library to determine whether // a "x new comments" link might be necessary or not. We do this in // JavaScript to prevent breaking the render cache. - $this->assertCount(0, $this->xpath('//*[@data-history-node-last-comment-timestamp]'), 'data-history-node-last-comment-timestamp attribute is not set.'); + $this->assertSession()->elementNotExists('xpath', '//*[@data-history-node-last-comment-timestamp]'); // Create a new comment. This helper function may be run with different // comment settings so use $comment->save() to avoid complex setup. @@ -94,8 +94,8 @@ public function testCommentNewCommentsIndicator() { // value, the drupal.node-new-comments-link library would determine that the // node received a comment after the user last viewed it, and hence it would // perform an HTTP request to render the "new comments" node link. - $this->assertCount(1, $this->xpath('//*[@data-history-node-last-comment-timestamp="' . $comment->getChangedTime() . '"]'), 'data-history-node-last-comment-timestamp attribute is set to the correct value.'); - $this->assertCount(1, $this->xpath('//*[@data-history-node-field-name="comment"]'), 'data-history-node-field-name attribute is set to the correct value.'); + $this->assertSession()->elementsCount('xpath', '//*[@data-history-node-last-comment-timestamp="' . $comment->getChangedTime() . '"]', 1); + $this->assertSession()->elementsCount('xpath', '//*[@data-history-node-field-name="comment"]', 1); // The data will be pre-seeded on this particular page in drupalSettings, to // avoid the need for the client to make a separate request to the server. $settings = $this->getDrupalSettings(); diff --git a/web/core/modules/comment/tests/src/Functional/CommentNonNodeTest.php b/web/core/modules/comment/tests/src/Functional/CommentNonNodeTest.php index 9820d25534054fa6f69d363f179f599dd5350a8b..0d93e544d4b6c49e47330dd73aee6513bdda65a3 100644 --- a/web/core/modules/comment/tests/src/Functional/CommentNonNodeTest.php +++ b/web/core/modules/comment/tests/src/Functional/CommentNonNodeTest.php @@ -286,8 +286,7 @@ public function testCommentFunctionality() { // Test breadcrumb on comment add page. $this->drupalGet('comment/reply/entity_test/' . $this->entity->id() . '/comment'); - $xpath = '//nav[@aria-labelledby="system-breadcrumb"]/ol/li[last()]/a'; - $this->assertEquals($this->entity->label(), current($this->xpath($xpath))->getText(), 'Last breadcrumb item is equal to node title on comment reply page.'); + $this->assertSession()->elementTextEquals('xpath', '//nav[@aria-labelledby="system-breadcrumb"]/ol/li[last()]/a', $this->entity->label()); // Post a comment. /** @var \Drupal\comment\CommentInterface $comment1 */ @@ -296,18 +295,15 @@ public function testCommentFunctionality() { // Test breadcrumb on comment reply page. $this->drupalGet('comment/reply/entity_test/' . $this->entity->id() . '/comment/' . $comment1->id()); - $xpath = '//nav[@aria-labelledby="system-breadcrumb"]/ol/li[last()]/a'; - $this->assertEquals($comment1->getSubject(), current($this->xpath($xpath))->getText(), 'Last breadcrumb item is equal to comment title on comment reply page.'); + $this->assertSession()->elementTextEquals('xpath', '//nav[@aria-labelledby="system-breadcrumb"]/ol/li[last()]/a', $comment1->getSubject()); // Test breadcrumb on comment edit page. $this->drupalGet('comment/' . $comment1->id() . '/edit'); - $xpath = '//nav[@aria-labelledby="system-breadcrumb"]/ol/li[last()]/a'; - $this->assertEquals($comment1->getSubject(), current($this->xpath($xpath))->getText(), 'Last breadcrumb item is equal to comment subject on edit page.'); + $this->assertSession()->elementTextEquals('xpath', '//nav[@aria-labelledby="system-breadcrumb"]/ol/li[last()]/a', $comment1->getSubject()); // Test breadcrumb on comment delete page. $this->drupalGet('comment/' . $comment1->id() . '/delete'); - $xpath = '//nav[@aria-labelledby="system-breadcrumb"]/ol/li[last()]/a'; - $this->assertEquals($comment1->getSubject(), current($this->xpath($xpath))->getText(), 'Last breadcrumb item is equal to comment subject on delete confirm page.'); + $this->assertSession()->elementTextEquals('xpath', '//nav[@aria-labelledby="system-breadcrumb"]/ol/li[last()]/a', $comment1->getSubject()); // Unpublish the comment. $this->performCommentOperation($comment1, 'unpublish'); diff --git a/web/core/modules/comment/tests/src/Functional/CommentPreviewTest.php b/web/core/modules/comment/tests/src/Functional/CommentPreviewTest.php index f54f7d0542996afb5ece030a34af1b792a73be33..6e24d5ebb0f0927777c783ab73403806b09c0137 100644 --- a/web/core/modules/comment/tests/src/Functional/CommentPreviewTest.php +++ b/web/core/modules/comment/tests/src/Functional/CommentPreviewTest.php @@ -121,8 +121,7 @@ public function testCommentPreviewDuplicateSubmission() { // Store the content of this page. $this->submitForm([], 'Save'); $this->assertSession()->pageTextContains('Your comment has been posted.'); - $elements = $this->xpath('//section[contains(@class, "comments")]/article'); - $this->assertCount(1, $elements); + $this->assertSession()->elementsCount('xpath', '//section[contains(@class, "comments")]/article', 1); // Go back and re-submit the form. $this->getSession()->getDriver()->back(); diff --git a/web/core/modules/comment/tests/src/Functional/Views/CommentRowTest.php b/web/core/modules/comment/tests/src/Functional/Views/CommentRowTest.php index 09e157ce94bc66792883d0cb399c630958ff13b0..c3a9503dbe50d467763444905efb9c1ab3eb63e5 100644 --- a/web/core/modules/comment/tests/src/Functional/Views/CommentRowTest.php +++ b/web/core/modules/comment/tests/src/Functional/Views/CommentRowTest.php @@ -26,9 +26,7 @@ class CommentRowTest extends CommentTestBase { */ public function testCommentRow() { $this->drupalGet('test-comment-row'); - - $result = $this->xpath('//article[contains(@class, "comment")]'); - $this->assertCount(1, $result, 'One rendered comment found.'); + $this->assertSession()->elementsCount('xpath', '//article[contains(@class, "comment")]', 1); } } diff --git a/web/core/modules/config/tests/src/Functional/ConfigImportUITest.php b/web/core/modules/config/tests/src/Functional/ConfigImportUITest.php index f91aba49b90823f7e20e0529ce98d711835753f9..b6d9849744cfbd97b785eec8df1e5a66c0241783 100644 --- a/web/core/modules/config/tests/src/Functional/ConfigImportUITest.php +++ b/web/core/modules/config/tests/src/Functional/ConfigImportUITest.php @@ -320,8 +320,7 @@ public function testImportDiff() { $this->assertSession()->pageTextContains("404: '<em>herp</em>'"); // Verify diff colors are displayed. - $result = $this->xpath('//table[contains(@class, :class)]', [':class' => 'diff']); - $this->assertCount(1, $result, "Diff UI is displaying colors."); + $this->assertSession()->elementsCount('xpath', '//table[contains(@class, "diff")]', 1); // Reset data back to original, and remove a key $sync_data = $original_data; diff --git a/web/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php b/web/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php index 391d3a0e51e5e229b4c8e37c56e117754d8c1bf9..3d7ad6533eebf6220da4fbac3a1eed0645c2d329 100644 --- a/web/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php +++ b/web/core/modules/content_moderation/tests/src/Functional/ModerationFormTest.php @@ -308,7 +308,7 @@ public function testContentTranslationNodeForm() { 'body[0][value]' => 'First version of the content.', 'moderation_state[0][state]' => 'draft', ], 'Save'); - $this->assertNotEmpty($this->xpath('//ul[@class="entity-moderation-form"]')); + $this->assertSession()->elementExists('xpath', '//ul[@class="entity-moderation-form"]'); $node = $this->drupalGetNodeByTitle('Some moderated content'); $this->assertNotEmpty($node->language(), 'en'); @@ -319,7 +319,7 @@ public function testContentTranslationNodeForm() { $this->drupalGet($latest_version_path); $this->assertSession()->statusCodeEquals('403'); - $this->assertEmpty($this->xpath('//ul[@class="entity-moderation-form"]')); + $this->assertSession()->elementNotExists('xpath', '//ul[@class="entity-moderation-form"]'); // Add french translation (revision 2). $this->drupalGet($translate_path); @@ -333,7 +333,7 @@ public function testContentTranslationNodeForm() { $this->drupalGet($latest_version_path, ['language' => $french]); $this->assertSession()->statusCodeEquals('403'); - $this->assertEmpty($this->xpath('//ul[@class="entity-moderation-form"]')); + $this->assertSession()->elementNotExists('xpath', '//ul[@class="entity-moderation-form"]'); // Add french pending revision (revision 3). $this->drupalGet($edit_path, ['language' => $french]); @@ -356,14 +356,14 @@ public function testContentTranslationNodeForm() { ], 'Save (this translation)'); $this->drupalGet($latest_version_path, ['language' => $french]); - $this->assertNotEmpty($this->xpath('//ul[@class="entity-moderation-form"]')); + $this->assertSession()->elementExists('xpath', '//ul[@class="entity-moderation-form"]'); $this->drupalGet($edit_path); $this->clickLink('Delete'); $this->assertSession()->buttonExists('Delete'); $this->drupalGet($latest_version_path); - $this->assertEmpty($this->xpath('//ul[@class="entity-moderation-form"]')); + $this->assertSession()->elementNotExists('xpath', '//ul[@class="entity-moderation-form"]'); // Publish the french pending revision (revision 4). $this->drupalGet($edit_path, ['language' => $french]); @@ -376,7 +376,7 @@ public function testContentTranslationNodeForm() { ], 'Save (this translation)'); $this->drupalGet($latest_version_path, ['language' => $french]); - $this->assertEmpty($this->xpath('//ul[@class="entity-moderation-form"]')); + $this->assertSession()->elementNotExists('xpath', '//ul[@class="entity-moderation-form"]'); // Publish the English pending revision (revision 5). $this->drupalGet($edit_path); @@ -389,7 +389,7 @@ public function testContentTranslationNodeForm() { ], 'Save (this translation)'); $this->drupalGet($latest_version_path); - $this->assertEmpty($this->xpath('//ul[@class="entity-moderation-form"]')); + $this->assertSession()->elementNotExists('xpath', '//ul[@class="entity-moderation-form"]'); // Make sure we are allowed to create a pending French revision. $this->drupalGet($edit_path, ['language' => $french]); @@ -408,9 +408,9 @@ public function testContentTranslationNodeForm() { ], 'Save (this translation)'); $this->drupalGet($latest_version_path); - $this->assertNotEmpty($this->xpath('//ul[@class="entity-moderation-form"]')); + $this->assertSession()->elementExists('xpath', '//ul[@class="entity-moderation-form"]'); $this->drupalGet($latest_version_path, ['language' => $french]); - $this->assertEmpty($this->xpath('//ul[@class="entity-moderation-form"]')); + $this->assertSession()->elementNotExists('xpath', '//ul[@class="entity-moderation-form"]'); // Publish the English pending revision (revision 7) $this->drupalGet($edit_path); @@ -423,7 +423,7 @@ public function testContentTranslationNodeForm() { ], 'Save (this translation)'); $this->drupalGet($latest_version_path); - $this->assertEmpty($this->xpath('//ul[@class="entity-moderation-form"]')); + $this->assertSession()->elementNotExists('xpath', '//ul[@class="entity-moderation-form"]'); // Make sure we are allowed to create a pending French revision. $this->drupalGet($edit_path, ['language' => $french]); diff --git a/web/core/modules/content_translation/tests/src/Functional/ContentTranslationLinkTagTest.php b/web/core/modules/content_translation/tests/src/Functional/ContentTranslationLinkTagTest.php index 5c0f9d8d3543e938cb66b3ca400010c082590b42..1d25cc06cf30f4fcde2a7d209f7b753afd5d8d27 100644 --- a/web/core/modules/content_translation/tests/src/Functional/ContentTranslationLinkTagTest.php +++ b/web/core/modules/content_translation/tests/src/Functional/ContentTranslationLinkTagTest.php @@ -154,8 +154,7 @@ public function testCanonicalAlternateTagsMissing() { $this->drupalGet($entity->toUrl('edit-form')); $this->assertSession()->statusCodeEquals(200); - $result = $this->xpath('//link[@rel="alternate" and @hreflang]'); - $this->assertEmpty($result, 'No alternate link tag found.'); + $this->assertSession()->elementNotExists('xpath', '//link[@rel="alternate" and @hreflang]'); } } diff --git a/web/core/modules/content_translation/tests/src/Functional/ContentTranslationUITestBase.php b/web/core/modules/content_translation/tests/src/Functional/ContentTranslationUITestBase.php index 953d8816e7b8915421a998f9f05cfe628d56fdf9..ddf75c14ca21b1c672e275d3687b36c0997d6926 100644 --- a/web/core/modules/content_translation/tests/src/Functional/ContentTranslationUITestBase.php +++ b/web/core/modules/content_translation/tests/src/Functional/ContentTranslationUITestBase.php @@ -263,12 +263,12 @@ protected function doTestOutdatedStatus() { if ($added_langcode == $langcode) { // Verify that the retranslate flag is not checked by default. $this->assertSession()->fieldValueEquals('content_translation[retranslate]', FALSE); - $this->assertEmpty($this->xpath('//details[@id="edit-content-translation" and @open="open"]'), 'The translation tab should be collapsed by default.'); + $this->assertSession()->elementNotExists('xpath', '//details[@id="edit-content-translation" and @open="open"]'); } else { // Verify that the translate flag is checked by default. $this->assertSession()->fieldValueEquals('content_translation[outdated]', TRUE); - $this->assertNotEmpty($this->xpath('//details[@id="edit-content-translation" and @open="open"]'), 'The translation tab is correctly expanded when the translation is outdated.'); + $this->assertSession()->elementExists('xpath', '//details[@id="edit-content-translation" and @open="open"]'); $edit = ['content_translation[outdated]' => FALSE]; $this->drupalGet($url); $this->submitForm($edit, $this->getFormSubmitAction($entity, $added_langcode)); diff --git a/web/core/modules/content_translation/tests/src/Functional/ContentTranslationUntranslatableFieldsTest.php b/web/core/modules/content_translation/tests/src/Functional/ContentTranslationUntranslatableFieldsTest.php index bf0cedb936151ca4278b7a5ff5d5f034156dba9a..07470bc7e9a0930077fe178673628d8e623d6412 100644 --- a/web/core/modules/content_translation/tests/src/Functional/ContentTranslationUntranslatableFieldsTest.php +++ b/web/core/modules/content_translation/tests/src/Functional/ContentTranslationUntranslatableFieldsTest.php @@ -88,9 +88,9 @@ public function testHiddenWidgets() { $en_edit_url = $entity->toUrl('edit-form'); $this->drupalGet($en_edit_url); $field_xpath = '//input[@name="' . $this->fieldName . '[0][value]"]'; - $this->assertNotEmpty($this->xpath($field_xpath)); + $this->assertSession()->elementExists('xpath', $field_xpath); $clue_xpath = '//label[@for="edit-' . strtr($this->fieldName, '_', '-') . '-0-value"]/span[text()="(all languages)"]'; - $this->assertEmpty($this->xpath($clue_xpath)); + $this->assertSession()->elementNotExists('xpath', $clue_xpath); $this->assertSession()->pageTextContains('Untranslatable-but-visible test field'); // Add a translation and check that the untranslatable field widget is @@ -102,20 +102,20 @@ public function testHiddenWidgets() { 'target' => 'it', ]); $this->drupalGet($add_url); - $this->assertNotEmpty($this->xpath($field_xpath)); - $this->assertNotEmpty($this->xpath($clue_xpath)); + $this->assertSession()->elementExists('xpath', $field_xpath); + $this->assertSession()->elementExists('xpath', $clue_xpath); $this->assertSession()->pageTextContains('Untranslatable-but-visible test field'); $this->submitForm([], 'Save'); // Check that the widget is displayed along with its clue in the edit form // for both languages. $this->drupalGet($en_edit_url); - $this->assertNotEmpty($this->xpath($field_xpath)); - $this->assertNotEmpty($this->xpath($clue_xpath)); + $this->assertSession()->elementExists('xpath', $field_xpath); + $this->assertSession()->elementExists('xpath', $clue_xpath); $it_edit_url = $entity->toUrl('edit-form', ['language' => ConfigurableLanguage::load('it')]); $this->drupalGet($it_edit_url); - $this->assertNotEmpty($this->xpath($field_xpath)); - $this->assertNotEmpty($this->xpath($clue_xpath)); + $this->assertSession()->elementExists('xpath', $field_xpath); + $this->assertSession()->elementExists('xpath', $clue_xpath); // Configure untranslatable field widgets to be hidden on non-default // language edit forms. @@ -128,22 +128,19 @@ public function testHiddenWidgets() { // but no clue is displayed. $this->drupalGet($en_edit_url); $field_xpath = '//input[@name="' . $this->fieldName . '[0][value]"]'; - $this->assertNotEmpty($this->xpath($field_xpath)); - $this->assertEmpty($this->xpath($clue_xpath)); + $this->assertSession()->elementExists('xpath', $field_xpath); + $this->assertSession()->elementNotExists('xpath', $clue_xpath); $this->assertSession()->pageTextContains('Untranslatable-but-visible test field'); // Verify no widget is displayed on the non-default language edit form. $this->drupalGet($it_edit_url); - $this->assertEmpty($this->xpath($field_xpath)); - $this->assertEmpty($this->xpath($clue_xpath)); + $this->assertSession()->elementNotExists('xpath', $field_xpath); + $this->assertSession()->elementNotExists('xpath', $clue_xpath); $this->assertSession()->pageTextContains('Untranslatable-but-visible test field'); // Verify a warning is displayed. $this->assertSession()->statusMessageContains('Fields that apply to all languages are hidden to avoid conflicting changes.', 'warning'); - $edit_path = $entity->toUrl('edit-form')->toString(); - $link_xpath = '//a[@href=:edit_path and text()="Edit them on the original language form"]'; - $elements = $this->xpath($link_xpath, [':edit_path' => $edit_path]); - $this->assertNotEmpty($elements); + $this->assertSession()->elementExists('xpath', '//a[@href="' . $entity->toUrl('edit-form')->toString() . '" and text()="Edit them on the original language form"]'); // Configure untranslatable field widgets to be displayed on non-default // language edit forms. @@ -153,23 +150,22 @@ public function testHiddenWidgets() { // Check that the widget is displayed along with its clue in the edit form // for both languages. $this->drupalGet($en_edit_url); - $this->assertNotEmpty($this->xpath($field_xpath)); - $this->assertNotEmpty($this->xpath($clue_xpath)); + $this->assertSession()->elementExists('xpath', $field_xpath); + $this->assertSession()->elementExists('xpath', $clue_xpath); $this->drupalGet($it_edit_url); - $this->assertNotEmpty($this->xpath($field_xpath)); - $this->assertNotEmpty($this->xpath($clue_xpath)); + $this->assertSession()->elementExists('xpath', $field_xpath); + $this->assertSession()->elementExists('xpath', $clue_xpath); // Enable content moderation and verify that widgets are hidden despite them // being configured to be displayed. $this->enableContentModeration(); $this->drupalGet($it_edit_url); - $this->assertEmpty($this->xpath($field_xpath)); - $this->assertEmpty($this->xpath($clue_xpath)); + $this->assertSession()->elementNotExists('xpath', $field_xpath); + $this->assertSession()->elementNotExists('xpath', $clue_xpath); // Verify a warning is displayed. $this->assertSession()->statusMessageContains('Fields that apply to all languages are hidden to avoid conflicting changes.', 'warning'); - $elements = $this->xpath($link_xpath, [':edit_path' => $edit_path]); - $this->assertNotEmpty($elements); + $this->assertSession()->elementExists('xpath', '//a[@href="' . $entity->toUrl('edit-form')->toString() . '" and text()="Edit them on the original language form"]'); // Verify that checkboxes on the language content settings page are checked // and disabled for moderated bundles. diff --git a/web/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeWidgetBase.php b/web/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeWidgetBase.php index aa7c959689b0ad2464733aee6049ce4dd0259961..a5cbcece15f39b496a4af4dbc20f64283ec35d49 100644 --- a/web/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeWidgetBase.php +++ b/web/core/modules/datetime/src/Plugin/Field/FieldWidget/DateTimeWidgetBase.php @@ -86,10 +86,16 @@ public function massageFormValues(array $values, array $form, FormStateInterface protected function createDefaultValue($date, $timezone) { // The date was created and verified during field_load(), so it is safe to // use without further inspection. + $year = $date->format('Y'); + $month = $date->format('m'); + $day = $date->format('d'); + $date->setTimezone(new \DateTimeZone($timezone)); if ($this->getFieldSetting('datetime_type') === DateTimeItem::DATETIME_TYPE_DATE) { $date->setDefaultDateTime(); + // Reset the date to handle cases where the UTC offset is greater than + // 12 hours. + $date->setDate($year, $month, $day); } - $date->setTimezone(new \DateTimeZone($timezone)); return $date; } diff --git a/web/core/modules/datetime/tests/src/Functional/DateTestBase.php b/web/core/modules/datetime/tests/src/Functional/DateTestBase.php index 443e688672f20ca279094df286e65fc72a916f06..9ecb8fe34f9b3326d770205243c286055c4d0da7 100644 --- a/web/core/modules/datetime/tests/src/Functional/DateTestBase.php +++ b/web/core/modules/datetime/tests/src/Functional/DateTestBase.php @@ -99,6 +99,8 @@ protected function setUp() { 'administer content types', 'bypass node access', 'administer node fields', + 'administer node form display', + 'administer node display', ]); $this->drupalLogin($web_user); diff --git a/web/core/modules/datetime/tests/src/Functional/DateTimeFieldTest.php b/web/core/modules/datetime/tests/src/Functional/DateTimeFieldTest.php index 34449781c4db3e5a85939ae5f357076a3f75a49b..880068483f437131fddb887156266a79d924f361 100644 --- a/web/core/modules/datetime/tests/src/Functional/DateTimeFieldTest.php +++ b/web/core/modules/datetime/tests/src/Functional/DateTimeFieldTest.php @@ -918,8 +918,7 @@ public function testDateStorageSettings() { $this->drupalGet('node/add/date_content'); $this->submitForm($edit, 'Save'); $this->drupalGet('admin/structure/types/manage/date_content/fields/node.date_content.' . $field_name . '/storage'); - $result = $this->xpath("//*[@id='edit-settings-datetime-type' and contains(@disabled, 'disabled')]"); - $this->assertCount(1, $result, "Changing datetime setting is disabled."); + $this->assertSession()->elementsCount('xpath', "//*[@id='edit-settings-datetime-type' and contains(@disabled, 'disabled')]", 1); $this->assertSession()->pageTextContains('There is data for this field in the database. The field settings can no longer be changed.'); } diff --git a/web/core/modules/datetime/tests/src/Functional/DateTimeWidgetTest.php b/web/core/modules/datetime/tests/src/Functional/DateTimeWidgetTest.php new file mode 100644 index 0000000000000000000000000000000000000000..529d06c96b4d5897fa7f4af4df25c9d4a5784d45 --- /dev/null +++ b/web/core/modules/datetime/tests/src/Functional/DateTimeWidgetTest.php @@ -0,0 +1,102 @@ +<?php + +namespace Drupal\Tests\datetime\Functional; + +use Drupal\field\Entity\FieldConfig; +use Drupal\field\Entity\FieldStorageConfig; + +/** + * Tests Datetime widgets functionality. + * + * @group datetime + */ +class DateTimeWidgetTest extends DateTestBase { + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + /** + * The default display settings to use for the formatters. + * + * @var array + */ + protected $defaultSettings = ['timezone_override' => '']; + + /** + * {@inheritdoc} + */ + protected function getTestFieldType() { + return 'datetime'; + } + + /** + * Test default value functionality. + */ + public function testDateonlyDefaultValue() { + // Create a test content type. + $this->drupalCreateContentType(['type' => 'dateonly_content']); + + // Create a field storage with settings to validate. + $field_storage = FieldStorageConfig::create([ + 'field_name' => 'field_dateonly', + 'entity_type' => 'node', + 'type' => 'datetime', + 'settings' => ['datetime_type' => 'date'], + ]); + $field_storage->save(); + + $field = FieldConfig::create([ + 'field_storage' => $field_storage, + 'bundle' => 'dateonly_content', + ]); + $field->save(); + + $edit = [ + 'fields[field_dateonly][region]' => 'content', + 'fields[field_dateonly][type]' => 'datetime_default', + ]; + $this->drupalGet('admin/structure/types/manage/dateonly_content/form-display'); + $this->submitForm($edit, 'Save'); + $this->drupalGet('admin/structure/types/manage/dateonly_content/display'); + $this->submitForm($edit, 'Save'); + + // Set now as default_value. + $edit = [ + 'default_value_input[default_date_type]' => 'now', + ]; + $this->drupalGet('admin/structure/types/manage/dateonly_content/fields/node.dateonly_content.field_dateonly'); + $this->submitForm($edit, 'Save settings'); + + // Check that default value is selected in default value form. + $this->drupalGet('admin/structure/types/manage/dateonly_content/fields/node.dateonly_content.field_dateonly'); + $option_field = $this->assertSession()->optionExists('edit-default-value-input-default-date-type', 'now'); + $this->assertTrue($option_field->hasAttribute('selected')); + $this->assertSession()->fieldValueEquals('default_value_input[default_date]', ''); + + // Loop through defined timezones to test that date-only defaults work at + // the extremes. + foreach (static::$timezones as $timezone) { + $this->setSiteTimezone($timezone); + $this->assertEquals($timezone, $this->config('system.date')->get('timezone.default'), 'Time zone set to ' . $timezone); + + $this->drupalGet('node/add/dateonly_content'); + + $request_time = $this->container->get('datetime.time')->getRequestTime(); + $today = $this->dateFormatter->format($request_time, 'html_date', NULL, $timezone); + $this->assertSession()->fieldValueEquals('field_dateonly[0][value][date]', $today); + + $edit = [ + 'title[0][value]' => $timezone, + ]; + $this->submitForm($edit, 'Save'); + $this->assertSession()->pageTextContains('dateonly_content ' . $timezone . ' has been created'); + + $node = $this->drupalGetNodeByTitle($timezone); + $today_storage = $this->dateFormatter->format($request_time, 'html_date', NULL, $timezone); + $this->assertEquals($today_storage, $node->field_dateonly->value); + } + } + +} diff --git a/web/core/modules/datetime_range/tests/src/Functional/DateRangeFieldTest.php b/web/core/modules/datetime_range/tests/src/Functional/DateRangeFieldTest.php index 629e0b197c5bc20b9575668c2df36b1972a47bec..df03d63233e2d9d353b78fa9200f4b76c581b072 100644 --- a/web/core/modules/datetime_range/tests/src/Functional/DateRangeFieldTest.php +++ b/web/core/modules/datetime_range/tests/src/Functional/DateRangeFieldTest.php @@ -1416,8 +1416,7 @@ public function testDateStorageSettings() { $this->drupalGet('node/add/date_content'); $this->submitForm($edit, 'Save'); $this->drupalGet('admin/structure/types/manage/date_content/fields/node.date_content.' . $field_name . '/storage'); - $result = $this->xpath("//*[@id='edit-settings-datetime-type' and contains(@disabled, 'disabled')]"); - $this->assertCount(1, $result, "Changing datetime setting is disabled."); + $this->assertSession()->elementsCount('xpath', "//*[@id='edit-settings-datetime-type' and contains(@disabled, 'disabled')]", 1); $this->assertSession()->pageTextContains('There is data for this field in the database. The field settings can no longer be changed.'); } diff --git a/web/core/modules/dblog/tests/src/Functional/DbLogTest.php b/web/core/modules/dblog/tests/src/Functional/DbLogTest.php index 535a550e62e9ed6e03d9d1cf390f9b1cb2261869..02e4ab93782bfe9a1b93264c45df456661cfb042 100644 --- a/web/core/modules/dblog/tests/src/Functional/DbLogTest.php +++ b/web/core/modules/dblog/tests/src/Functional/DbLogTest.php @@ -162,23 +162,22 @@ public function test403LogEventPage() { $wid = $query->execute()->fetchField(); $this->drupalGet('admin/reports/dblog/event/' . $wid); - $table = $this->xpath("//table[@class='dblog-event']"); - $this->assertCount(1, $table); + $table = $this->assertSession()->elementExists('xpath', "//table[@class='dblog-event']"); // Verify type, severity and location. - $type = $table[0]->findAll('xpath', "//tr/th[contains(text(), 'Type')]/../td"); - $this->assertCount(1, $type); - $this->assertEquals('access denied', $type[0]->getText()); - $severity = $table[0]->findAll('xpath', "//tr/th[contains(text(), 'Severity')]/../td"); - $this->assertCount(1, $severity); - $this->assertEquals('Warning', $severity[0]->getText()); - $location = $table[0]->findAll('xpath', "//tr/th[contains(text(), 'Location')]/../td/a"); + $type = "//tr/th[contains(text(), 'Type')]/../td"; + $this->assertSession()->elementsCount('xpath', $type, 1, $table); + $this->assertEquals('access denied', $table->findAll('xpath', $type)[0]->getText()); + $severity = "//tr/th[contains(text(), 'Severity')]/../td"; + $this->assertSession()->elementsCount('xpath', $severity, 1, $table); + $this->assertEquals('Warning', $table->findAll('xpath', $severity)[0]->getText()); + $location = $table->findAll('xpath', "//tr/th[contains(text(), 'Location')]/../td/a"); $this->assertCount(1, $location); $href = $location[0]->getAttribute('href'); $this->assertEquals($this->baseUrl . '/' . $uri, $href); // Verify message. - $message = $table[0]->findAll('xpath', "//tr/th[contains(text(), 'Message')]/../td"); + $message = $table->findAll('xpath', "//tr/th[contains(text(), 'Message')]/../td"); $this->assertCount(1, $message); $regex = "@Path: .+admin/reports\. Drupal\\\\Core\\\\Http\\\\Exception\\\\CacheableAccessDeniedHttpException: The 'access site reports' permission is required\. in Drupal\\\\Core\\\\Routing\\\\AccessAwareRouter->checkAccess\(\) \(line \d+ of .+/core/lib/Drupal/Core/Routing/AccessAwareRouter\.php\)\.@"; $this->assertMatchesRegularExpression($regex, $message[0]->getText()); diff --git a/web/core/modules/editor/src/Entity/Editor.php b/web/core/modules/editor/src/Entity/Editor.php index 5d60313a42717e96ad01194004dffa1be7021c7a..fc5f632d036d33e83177335e45c3cd3994a9d8a7 100644 --- a/web/core/modules/editor/src/Entity/Editor.php +++ b/web/core/modules/editor/src/Entity/Editor.php @@ -2,6 +2,7 @@ namespace Drupal\editor\Entity; +use Drupal\Component\Plugin\Exception\PluginNotFoundException; use Drupal\Core\Config\Entity\ConfigEntityBase; use Drupal\editor\EditorInterface; @@ -90,8 +91,15 @@ public function id() { public function __construct(array $values, $entity_type) { parent::__construct($values, $entity_type); - $plugin = $this->editorPluginManager()->createInstance($this->editor); - $this->settings += $plugin->getDefaultSettings(); + try { + $plugin = $this->editorPluginManager()->createInstance($this->editor); + $this->settings += $plugin->getDefaultSettings(); + } + catch (PluginNotFoundException $e) { + // When a Text Editor plugin has gone missing, still allow the Editor + // config entity to be constructed. The only difference is that default + // settings are not added. + } } /** diff --git a/web/core/modules/editor/tests/modules/src/Plugin/Editor/UnicornEditor.php b/web/core/modules/editor/tests/modules/src/Plugin/Editor/UnicornEditor.php index 0317e12adf7103b9a94c338f774adbba7feff422..f6a35434a43fef2fbbfb0570169060ee435a1634 100644 --- a/web/core/modules/editor/tests/modules/src/Plugin/Editor/UnicornEditor.php +++ b/web/core/modules/editor/tests/modules/src/Plugin/Editor/UnicornEditor.php @@ -39,9 +39,25 @@ public function buildConfigurationForm(array $form, FormStateInterface $form_sta '#type' => 'checkbox', '#default_value' => TRUE, ]; + $form_state->loadInclude('editor', 'admin.inc'); + $form['image_upload'] = editor_image_upload_settings_form($form_state->get('editor')); + $form['image_upload']['#element_validate'][] = [$this, 'validateImageUploadSettings']; return $form; } + /** + * #element_validate handler for "image_upload" in buildConfigurationForm(). + * + * Moves the text editor's image upload settings into $editor->image_upload. + * + * @see editor_image_upload_settings_form() + */ + public function validateImageUploadSettings(array $element, FormStateInterface $form_state) { + $settings = &$form_state->getValue(['editor', 'settings', 'image_upload']); + $form_state->get('editor')->setImageUploadSettings($settings); + $form_state->unsetValue(['editor', 'settings', 'image_upload']); + } + /** * {@inheritdoc} */ diff --git a/web/core/modules/editor/tests/src/Functional/EditorLoadingTest.php b/web/core/modules/editor/tests/src/Functional/EditorLoadingTest.php index 51f7c5d81c1fa2eeb4b352625d94e7b55a675d42..50ed06c21480d9d3d0f6a28815ba8fee6105e462 100644 --- a/web/core/modules/editor/tests/src/Functional/EditorLoadingTest.php +++ b/web/core/modules/editor/tests/src/Functional/EditorLoadingTest.php @@ -150,7 +150,7 @@ public function testLoading() { [, $editor_settings_present, $editor_js_present, $body] = $this->getThingsToCheck('body'); $this->assertFalse($editor_settings_present, 'No Text Editor module settings.'); $this->assertFalse($editor_js_present, 'No Text Editor JavaScript.'); - $this->assertCount(1, $body, 'A body field exists.'); + $this->assertSession()->elementsCount('xpath', $body, 1); $this->assertSession()->elementNotExists('css', 'select.js-filter-list'); $this->drupalLogout($this->normalUser); @@ -174,7 +174,7 @@ public function testLoading() { $this->assertTrue($editor_settings_present, "Text Editor module's JavaScript settings are on the page."); $this->assertSame($expected, $settings['editor'], "Text Editor module's JavaScript settings on the page are correct."); $this->assertTrue($editor_js_present, 'Text Editor JavaScript is present.'); - $this->assertCount(1, $body, 'A body field exists.'); + $this->assertSession()->elementsCount('xpath', $body, 1); $this->assertSession()->elementsCount('css', 'select.js-filter-list', 1); $select = $this->assertSession()->elementExists('css', 'select.js-filter-list'); $this->assertSame('edit-body-0-value', $select->getAttribute('data-editor-for')); @@ -212,7 +212,7 @@ public function testLoading() { $this->assertTrue($editor_settings_present, "Text Editor module's JavaScript settings are on the page."); $this->assertSame($expected, $settings['editor'], "Text Editor module's JavaScript settings on the page are correct."); $this->assertTrue($editor_js_present, 'Text Editor JavaScript is present.'); - $this->assertCount(1, $body, 'A body field exists.'); + $this->assertSession()->elementsCount('xpath', $body, 1); $this->assertSession()->elementNotExists('css', 'select.js-filter-list'); // Verify that a single text format hidden input exists on the page and has // a "data-editor-for" attribute with the correct value. @@ -236,7 +236,7 @@ public function testLoading() { [, $editor_settings_present, $editor_js_present, $body] = $this->getThingsToCheck('body'); $this->assertTrue($editor_settings_present, 'Text Editor module settings.'); $this->assertTrue($editor_js_present, 'Text Editor JavaScript.'); - $this->assertCount(1, $body, 'A body field exists.'); + $this->assertSession()->elementsCount('xpath', $body, 1); $this->assertSession()->fieldDisabled("edit-body-0-value"); $this->assertSession()->fieldValueEquals("edit-body-0-value", 'This field has been disabled because you do not have sufficient permissions to edit it.'); $this->assertSession()->elementNotExists('css', 'select.js-filter-list'); @@ -276,7 +276,7 @@ public function testSupportedElementTypes() { [, $editor_settings_present, $editor_js_present, $field] = $this->getThingsToCheck('field-text', 'input'); $this->assertTrue($editor_settings_present, "Text Editor module's JavaScript settings are on the page."); $this->assertTrue($editor_js_present, 'Text Editor JavaScript is present.'); - $this->assertCount(1, $field, 'A text field exists.'); + $this->assertSession()->elementsCount('xpath', $field, 1); // Verify that a single text format selector exists on the page and has the // "editor" class and a "data-editor-for" attribute with the correct value. $this->assertSession()->elementsCount('css', 'select.js-filter-list', 1); @@ -295,7 +295,7 @@ public function testSupportedElementTypes() { [, $editor_settings_present, $editor_js_present, $field] = $this->getThingsToCheck('field-text', 'input'); $this->assertFalse($editor_settings_present, "Text Editor module's JavaScript settings are not on the page."); $this->assertFalse($editor_js_present, 'Text Editor JavaScript is not present.'); - $this->assertCount(1, $field, 'A text field exists.'); + $this->assertSession()->elementsCount('xpath', $field, 1); // Verify that a single text format selector exists on the page but without // the "editor" class or a "data-editor-for" attribute with the expected // value. @@ -315,7 +315,7 @@ protected function getThingsToCheck($field_name, $type = 'textarea') { // Editor.module's JS present. strpos($this->getSession()->getPage()->getContent(), $this->getModulePath('editor') . '/js/editor.js') !== FALSE, // Body field. - $this->xpath('//' . $type . '[@id="edit-' . $field_name . '-0-value"]'), + '//' . $type . '[@id="edit-' . $field_name . '-0-value"]', ]; } diff --git a/web/core/modules/file/tests/src/Functional/DownloadTest.php b/web/core/modules/file/tests/src/Functional/DownloadTest.php index 0a2fdb9ba42cb863bccdeed19641d4ffdb51228d..c961bbc4a0306a4f2a3b21227cfcd31862945711 100644 --- a/web/core/modules/file/tests/src/Functional/DownloadTest.php +++ b/web/core/modules/file/tests/src/Functional/DownloadTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\file\Functional; +use Drupal\Core\Database\Database; use Drupal\Core\File\FileSystemInterface; /** @@ -25,6 +26,15 @@ class DownloadTest extends FileManagedTestBase { protected function setUp(): void { parent::setUp(); + + // This test currently frequently causes the SQLite database to lock, so + // skip the test on SQLite until the issue can be resolved. + // @todo Fix root cause and re-enable in + // https://www.drupal.org/project/drupal/issues/3311587 + if (Database::getConnection()->driver() === 'sqlite') { + $this->markTestSkipped('Test frequently causes a locked database on SQLite'); + } + $this->fileUrlGenerator = $this->container->get('file_url_generator'); // Clear out any hook calls. file_test_reset(); diff --git a/web/core/modules/file/tests/src/Functional/FileFieldWidgetTest.php b/web/core/modules/file/tests/src/Functional/FileFieldWidgetTest.php index e4f3190ae81548d01771b79de77a5af6f11ee411..79532d09538602d7d7e1c6659a7cc13638c5ca8c 100644 --- a/web/core/modules/file/tests/src/Functional/FileFieldWidgetTest.php +++ b/web/core/modules/file/tests/src/Functional/FileFieldWidgetTest.php @@ -399,19 +399,15 @@ public function testWidgetElement() { $this->drupalGet('node/add/article'); - $elements = $this->xpath($xpath); - // If the field has no item, the table should not be visible. - $this->assertCount(0, $elements); + $this->assertSession()->elementNotExists('xpath', $xpath); // Upload a file. $edit['files[' . $field_name . '_0][]'] = $this->container->get('file_system')->realpath($file->getFileUri()); $this->submitForm($edit, "{$field_name}_0_upload_button"); - $elements = $this->xpath($xpath); - // If the field has at least one item, the table should be visible. - $this->assertCount(1, $elements); + $this->assertSession()->elementsCount('xpath', $xpath, 1); // Test for AJAX error when using progress bar on file field widget. $http_client = $this->getHttpClient(); diff --git a/web/core/modules/file/tests/src/Functional/FileListingTest.php b/web/core/modules/file/tests/src/Functional/FileListingTest.php index ef4d78c5b41d7733ea16435958c841f3173343dd..d2d639d25f0ca8166526f1b8acd331f855a73333 100644 --- a/web/core/modules/file/tests/src/Functional/FileListingTest.php +++ b/web/core/modules/file/tests/src/Functional/FileListingTest.php @@ -137,8 +137,7 @@ public function testFileListingPages() { $usage = $this->sumUsages($file_usage->listUsage($file)); $this->assertSession()->responseContains('admin/content/files/usage/' . $file->id() . '">' . $usage); - $result = $this->xpath("//td[contains(@class, 'views-field-status') and contains(text(), :value)]", [':value' => 'Temporary']); - $this->assertCount(1, $result, 'Unused file marked as temporary.'); + $this->assertSession()->elementsCount('xpath', "//td[contains(@class, 'views-field-status') and contains(text(), 'Temporary')]", 1); // Test file usage page. foreach ($nodes as $node) { diff --git a/web/core/modules/filter/filter.filter_html.admin.es6.js b/web/core/modules/filter/filter.filter_html.admin.es6.js index 260f98ce70f3712a113e99205f504352f6438d5e..8701fab0ff3f82b94a0a5e5cc6cfc6a936ae5136 100644 --- a/web/core/modules/filter/filter.filter_html.admin.es6.js +++ b/web/core/modules/filter/filter.filter_html.admin.es6.js @@ -202,8 +202,13 @@ // https://www.drupal.org/node/2567801 lands. filterRule.restrictedTags.allowed.attributes = featureRule.required.attributes.slice(0); - filterRule.restrictedTags.allowed.classes = - featureRule.required.classes.slice(0); + if ( + userAllowedTags[tag] !== undefined && + userAllowedTags[tag].restrictedTags.allowed.classes[0] !== '' + ) { + filterRule.restrictedTags.allowed.classes = + featureRule.required.classes.slice(0); + } editorRequiredTags[tag] = filterRule; } // The tag is already allowed, add any additionally allowed @@ -214,10 +219,15 @@ ...filterRule.restrictedTags.allowed.attributes, ...featureRule.required.attributes, ]; - filterRule.restrictedTags.allowed.classes = [ - ...filterRule.restrictedTags.allowed.classes, - ...featureRule.required.classes, - ]; + if ( + userAllowedTags[tag] !== undefined && + userAllowedTags[tag].restrictedTags.allowed.classes[0] !== '' + ) { + filterRule.restrictedTags.allowed.classes = [ + ...filterRule.restrictedTags.allowed.classes, + ...featureRule.required.classes, + ]; + } } } } @@ -343,6 +353,7 @@ _generateSetting(tags) { return Object.keys(tags).reduce((setting, tag) => { const rule = tags[tag]; + const allowedClasses = rule.restrictedTags.allowed.classes; if (setting.length) { setting += ' '; @@ -357,10 +368,10 @@ // values. The filter_html filter always disallows the "style" // attribute, so we only need to support "class" attribute value // restrictions. Fix once https://www.drupal.org/node/2567801 lands. - if (rule.restrictedTags.allowed.classes.length) { - setting += ` class="${rule.restrictedTags.allowed.classes.join( - ' ', - )}"`; + if (allowedClasses.length === 1 && allowedClasses[0] === '') { + setting += ' class'; + } else if (allowedClasses.length) { + setting += ` class="${allowedClasses.join(' ')}"`; } setting += '>'; diff --git a/web/core/modules/filter/filter.filter_html.admin.js b/web/core/modules/filter/filter.filter_html.admin.js index 5748ae0a283b9860c4d024f17344cd087a3e6f48..bbf687101411b06278bc481fcbbea20c7b38503c 100644 --- a/web/core/modules/filter/filter.filter_html.admin.js +++ b/web/core/modules/filter/filter.filter_html.admin.js @@ -117,12 +117,19 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len filterRule = new Drupal.FilterHTMLRule(); filterRule.restrictedTags.tags = [tag]; filterRule.restrictedTags.allowed.attributes = featureRule.required.attributes.slice(0); - filterRule.restrictedTags.allowed.classes = featureRule.required.classes.slice(0); + + if (userAllowedTags[tag] !== undefined && userAllowedTags[tag].restrictedTags.allowed.classes[0] !== '') { + filterRule.restrictedTags.allowed.classes = featureRule.required.classes.slice(0); + } + editorRequiredTags[tag] = filterRule; } else { filterRule = editorRequiredTags[tag]; filterRule.restrictedTags.allowed.attributes = [].concat(_toConsumableArray(filterRule.restrictedTags.allowed.attributes), _toConsumableArray(featureRule.required.attributes)); - filterRule.restrictedTags.allowed.classes = [].concat(_toConsumableArray(filterRule.restrictedTags.allowed.classes), _toConsumableArray(featureRule.required.classes)); + + if (userAllowedTags[tag] !== undefined && userAllowedTags[tag].restrictedTags.allowed.classes[0] !== '') { + filterRule.restrictedTags.allowed.classes = [].concat(_toConsumableArray(filterRule.restrictedTags.allowed.classes), _toConsumableArray(featureRule.required.classes)); + } } } } @@ -189,6 +196,7 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len _generateSetting: function _generateSetting(tags) { return Object.keys(tags).reduce(function (setting, tag) { var rule = tags[tag]; + var allowedClasses = rule.restrictedTags.allowed.classes; if (setting.length) { setting += ' '; @@ -200,8 +208,10 @@ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len setting += " ".concat(rule.restrictedTags.allowed.attributes.join(' ')); } - if (rule.restrictedTags.allowed.classes.length) { - setting += " class=\"".concat(rule.restrictedTags.allowed.classes.join(' '), "\""); + if (allowedClasses.length === 1 && allowedClasses[0] === '') { + setting += ' class'; + } else if (allowedClasses.length) { + setting += " class=\"".concat(allowedClasses.join(' '), "\""); } setting += '>'; diff --git a/web/core/modules/filter/tests/src/Functional/FilterAdminTest.php b/web/core/modules/filter/tests/src/Functional/FilterAdminTest.php index 932db0ab341eea020a9f395f0b04514444d21db9..a947bb841af68b143ebcf6dfeb237109997c8828 100644 --- a/web/core/modules/filter/tests/src/Functional/FilterAdminTest.php +++ b/web/core/modules/filter/tests/src/Functional/FilterAdminTest.php @@ -224,12 +224,7 @@ public function testFilterAdmin() { $this->drupalGet('admin/config/content/formats/manage/' . $restricted); // Check that the allowed HTML tag was added and the string reformatted. $this->assertSession()->fieldValueEquals('filters[filter_html][settings][allowed_html]', "<a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd> <quote>"); - - $elements = $this->xpath('//select[@name=:first]/following::select[@name=:second]', [ - ':first' => 'filters[' . $first_filter . '][weight]', - ':second' => 'filters[' . $second_filter . '][weight]', - ]); - $this->assertNotEmpty($elements, 'Order confirmed in admin interface.'); + $this->assertSession()->elementExists('xpath', "//select[@name='filters[" . $first_filter . "][weight]']/following::select[@name='filters[" . $second_filter . "][weight]']"); // Reorder filters. $edit = []; @@ -240,12 +235,7 @@ public function testFilterAdmin() { $this->drupalGet('admin/config/content/formats/manage/' . $restricted); $this->assertSession()->fieldValueEquals('filters[' . $second_filter . '][weight]', 1); $this->assertSession()->fieldValueEquals('filters[' . $first_filter . '][weight]', 2); - - $elements = $this->xpath('//select[@name=:first]/following::select[@name=:second]', [ - ':first' => 'filters[' . $second_filter . '][weight]', - ':second' => 'filters[' . $first_filter . '][weight]', - ]); - $this->assertNotEmpty($elements, 'Reorder confirmed in admin interface.'); + $this->assertSession()->elementExists('xpath', "//select[@name='filters[" . $second_filter . "][weight]']/following::select[@name='filters[" . $first_filter . "][weight]']"); $filter_format = FilterFormat::load($restricted); foreach ($filter_format->filters() as $filter_name => $filter) { diff --git a/web/core/modules/filter/tests/src/FunctionalJavascript/FilterHtmlTest.php b/web/core/modules/filter/tests/src/FunctionalJavascript/FilterHtmlTest.php index 7a76907fe883b580cc6211896ef4c035ce3b9b47..adc0311f648a5183f0c1bfa525865a9a8d331ae0 100644 --- a/web/core/modules/filter/tests/src/FunctionalJavascript/FilterHtmlTest.php +++ b/web/core/modules/filter/tests/src/FunctionalJavascript/FilterHtmlTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\filter\FunctionalJavascript; +use Drupal\editor\Entity\Editor; use Drupal\filter\Entity\FilterFormat; use Drupal\FunctionalJavascriptTests\WebDriverTestBase; @@ -49,4 +50,45 @@ public function testTableTags() { $this->assertJsCondition($js_condition); } + /** + * Tests that CSS classes defined in the Styles Dropdown section don't + * restrict elements in the Allowed Tags configuration that allow all classes. + * + * @group legacy + */ + public function testStylesToAllowedTagsSync() { + \Drupal::service('module_installer')->install(['ckeditor']); + FilterFormat::create([ + 'format' => 'some_html', + 'name' => 'Some HTML', + 'filters' => [ + 'filter_html' => [ + 'status' => 1, + 'settings' => [ + 'allowed_html' => '<span class>', + ], + ], + ], + ])->save(); + + Editor::create([ + 'format' => 'some_html', + 'editor' => 'ckeditor', + 'settings' => [ + 'plugins' => [ + 'stylescombo' => [ + 'styles' => 'span.hello-world|Hello World', + ], + ], + ], + ])->save(); + + $this->drupalLogin($this->drupalCreateUser(['administer filters'])); + $this->drupalGet('admin/config/content/formats/manage/some_html'); + + $js_condition = "jQuery('#edit-filters-filter-html-settings-allowed-html').val() === \"<span class> <strong> <em> <a href> <ul> <li> <ol> <blockquote> <img src alt data-entity-type data-entity-uuid>\""; + + $this->assertJsCondition($js_condition); + } + } diff --git a/web/core/modules/image/image.module b/web/core/modules/image/image.module index 5d4aa2754e4f2f31d4258ff9a0ef209ac330ee95..27713afbb0aa7a0d87d618dfa15d4968b3d5a76d 100644 --- a/web/core/modules/image/image.module +++ b/web/core/modules/image/image.module @@ -32,7 +32,7 @@ function image_help($route_name, RouteMatchInterface $route_match) { $output = ''; $output .= '<h3>' . t('About') . '</h3>'; - $output .= '<p>' . t('The Image module allows you to create fields that contain image files and to configure <a href=":image_styles">Image styles</a> that can be used to manipulate the display of images. See the <a href=":field">Field module help</a> and the <a href=":field_ui">Field UI help</a> pages for terminology and general information on entities, fields, and how to create and manage fields. For more information, see the <a href=":image_documentation">online documentation for the Image module</a>.', [':image_styles' => Url::fromRoute('entity.image_style.collection')->toString(), ':field' => Url::fromRoute('help.page', ['name' => 'field'])->toString(), ':field_ui' => $field_ui_url, ':image_documentation' => 'https://www.drupal.org/documentation/modules/image']) . '</p>'; + $output .= '<p>' . t('The Image module allows you to create fields that contain image files and to configure <a href=":image_styles">Image styles</a> that can be used to manipulate the display of images. See the <a href=":field">Field module help</a> and the <a href=":field_ui">Field UI help</a> pages for terminology and general information on entities, fields, and how to create and manage fields. For more information, see the <a href=":image_documentation">online documentation for the Image module</a>.', [':image_styles' => Url::fromRoute('entity.image_style.collection')->toString(), ':field' => Url::fromRoute('help.page', ['name' => 'field'])->toString(), ':field_ui' => $field_ui_url, ':image_documentation' => 'https://www.drupal.org/docs/core-modules-and-themes/core-modules/image-module/working-with-images']) . '</p>'; $output .= '<h3>' . t('Uses') . '</h3>'; $output .= '<dt>' . t('Defining image styles') . '</dt>'; $output .= '<dd>' . t('The concept of image styles is that you can upload a single image but display it in several ways; each display variation, or <em>image style</em>, is the result of applying one or more <em>effects</em> to the original image. As an example, you might upload a high-resolution image with a 4:3 aspect ratio, and display it scaled down, square cropped, or black-and-white (or any combination of these effects). The Image module provides a way to do this efficiently: you configure an image style with the desired effects on the <a href=":image">Image styles page</a>, and the first time a particular image is requested in that style, the effects are applied. The resulting image is saved, and the next time that same style is requested, the saved image is retrieved without the need to recalculate the effects. Drupal core provides several effects that you can use to define styles; others may be provided by contributed modules.', [':image' => Url::fromRoute('entity.image_style.collection')->toString()]); diff --git a/web/core/modules/image/tests/src/Functional/ImageFieldDisplayTest.php b/web/core/modules/image/tests/src/Functional/ImageFieldDisplayTest.php index 03fac1542a04117d068da71ba53812ce86a6ec2d..bd33f0e32d97caaa40688cad7249b5bad121b200 100644 --- a/web/core/modules/image/tests/src/Functional/ImageFieldDisplayTest.php +++ b/web/core/modules/image/tests/src/Functional/ImageFieldDisplayTest.php @@ -175,17 +175,7 @@ public function _testImageFieldFormatters($scheme) { $this->assertSession()->responseHeaderContains('X-Drupal-Cache-Tags', $file->getCacheTags()[0]); // Verify that no image style cache tags are found. $this->assertSession()->responseHeaderNotContains('X-Drupal-Cache-Tags', 'image_style:'); - $elements = $this->xpath( - '//a[@href=:path]/img[@src=:url and @alt=:alt and @width=:width and @height=:height]', - [ - ':path' => $node->toUrl()->toString(), - ':url' => $file->createFileUrl(), - ':width' => $image['#width'], - ':height' => $image['#height'], - ':alt' => $alt, - ] - ); - $this->assertCount(1, $elements, 'Image linked to content formatter displaying correctly on full node view.'); + $this->assertSession()->elementsCount('xpath', '//a[@href="' . $node->toUrl()->toString() . '"]/img[@src="' . $file->createFileUrl() . '" and @alt="' . $alt . '" and @width="' . $image['#width'] . '" and @height="' . $image['#height'] . '"]', 1); // Test the image style 'thumbnail' formatter. $display_options['settings']['image_link'] = ''; diff --git a/web/core/modules/jsonapi/tests/src/Kernel/Normalizer/JsonApiDocumentTopLevelNormalizerTest.php b/web/core/modules/jsonapi/tests/src/Kernel/Normalizer/JsonApiDocumentTopLevelNormalizerTest.php index 56e53bcf53c6b666531a651900fe3657f03e3617..6f90798b862ec2dd662c9a32546e1a0bc14773f6 100644 --- a/web/core/modules/jsonapi/tests/src/Kernel/Normalizer/JsonApiDocumentTopLevelNormalizerTest.php +++ b/web/core/modules/jsonapi/tests/src/Kernel/Normalizer/JsonApiDocumentTopLevelNormalizerTest.php @@ -360,7 +360,7 @@ public function testNormalize() { * @covers ::normalize */ public function testNormalizeRelated() { - $this->markTestIncomplete('This fails and should be fixed by https://www.drupal.org/project/drupal/issues/2922121'); + $this->markTestIncomplete('This fails and should be fixed by https://www.drupal.org/project/drupal/issues/3213752'); [$request, $resource_type] = $this->generateProphecies('node', 'article', 'uid'); $request->query = new ParameterBag([ diff --git a/web/core/modules/layout_builder/src/Form/OverridesEntityForm.php b/web/core/modules/layout_builder/src/Form/OverridesEntityForm.php index 29f940bdcc25fc71cf4aace248ceb28630068436..789778fc8f8e26a743a576bcca31e7e48abd61e2 100644 --- a/web/core/modules/layout_builder/src/Form/OverridesEntityForm.php +++ b/web/core/modules/layout_builder/src/Form/OverridesEntityForm.php @@ -198,6 +198,8 @@ protected function actions(array $form, FormStateInterface $form_state) { '#value' => $this->t('Discard changes'), '#submit' => ['::redirectOnSubmit'], '#redirect' => 'discard_changes', + // Discard is not dependent on form input. + '#limit_validation_errors' => [], ]; // @todo This button should be conditionally displayed, see // https://www.drupal.org/node/2917777. diff --git a/web/core/modules/layout_builder/src/Plugin/Block/FieldBlock.php b/web/core/modules/layout_builder/src/Plugin/Block/FieldBlock.php index 59adfd861ba5877b0b716427624574ca7c94888d..1cdb92f917e260467201a4ac54ad2a12fdcf7e28 100644 --- a/web/core/modules/layout_builder/src/Plugin/Block/FieldBlock.php +++ b/web/core/modules/layout_builder/src/Plugin/Block/FieldBlock.php @@ -204,8 +204,14 @@ protected function blockAccess(AccountInterface $account) { return $access; } - // Check to see if the field has any values. - if ($field->isEmpty()) { + // Check to see if the field has any values or a default value. + if ($field->isEmpty() && !$field->getFieldDefinition()->getDefaultValue($entity)) { + // @todo Remove special handling of image fields after + // https://www.drupal.org/project/drupal/issues/3005528. + if ($field->getFieldDefinition()->getType() === 'image' && $field->getFieldDefinition()->getSetting('default_image')) { + return $access; + } + return $access->andIf(AccessResult::forbidden()); } return $access; diff --git a/web/core/modules/layout_builder/tests/src/Functional/LayoutBuilderDefaultValuesTest.php b/web/core/modules/layout_builder/tests/src/Functional/LayoutBuilderDefaultValuesTest.php new file mode 100644 index 0000000000000000000000000000000000000000..d65fb822179cd40bb5c51144c338391fd7a9ab0e --- /dev/null +++ b/web/core/modules/layout_builder/tests/src/Functional/LayoutBuilderDefaultValuesTest.php @@ -0,0 +1,295 @@ +<?php + +namespace Drupal\Tests\layout_builder\Functional; + +use Drupal\Core\Entity\FieldableEntityInterface; +use Drupal\Core\Field\FieldDefinitionInterface; +use Drupal\Core\File\FileSystemInterface; +use Drupal\field\Entity\FieldConfig; +use Drupal\field\Entity\FieldStorageConfig; +use Drupal\file\Entity\File; +use Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay; +use Drupal\Tests\BrowserTestBase; +use Drupal\Tests\image\Kernel\ImageFieldCreationTrait; +use Drupal\Tests\TestFileCreationTrait; + +/** + * Tests rendering default field values in Layout Builder. + * + * @group layout_builder + */ +class LayoutBuilderDefaultValuesTest extends BrowserTestBase { + + use ImageFieldCreationTrait; + use TestFileCreationTrait { + getTestFiles as drupalGetTestFiles; + } + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'layout_builder', + 'block', + 'node', + 'image', + ]; + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + + $this->createContentType([ + 'type' => 'test_node_type', + 'name' => 'Test Node Type', + ]); + + $this->addTextFields(); + $this->addImageFields(); + + // Create node 1 with specific values. + $this->createNode([ + 'type' => 'test_node_type', + 'title' => 'Test Node 1 Has Values', + 'field_string_no_default' => 'No default, no problem.', + 'field_string_with_default' => 'It is ok to be different', + 'field_string_with_callback' => 'Not from a callback', + 'field_string_late_default' => 'I am way ahead of you.', + 'field_image_with_default' => [ + 'target_id' => 2, + 'alt' => 'My different alt text', + ], + 'field_image_no_default' => [ + 'target_id' => 3, + 'alt' => 'My third alt text', + ], + ]); + + // Create node 2 relying on defaults. + $this->createNode([ + 'type' => 'test_node_type', + 'title' => 'Test Node 2 Uses Defaults', + ]); + + // Add default value to field_string_late_default. + $field = FieldConfig::loadByName('node', 'test_node_type', 'field_string_late_default'); + $field->setDefaultValue('Too late!'); + $field->save(); + } + + /** + * Tests display of default field values. + */ + public function testDefaultValues() { + // Begin by viewing nodes with Layout Builder disabled. + $this->assertNodeWithValues(); + $this->assertNodeWithDefaultValues(); + + // Enable layout builder. + LayoutBuilderEntityViewDisplay::load('node.test_node_type.default') + ->enableLayoutBuilder() + ->save(); + + // Confirm that default values are handled consistently by Layout Builder. + $this->assertNodeWithValues(); + $this->assertNodeWithDefaultValues(); + } + + /** + * Test for expected text on node 1. + */ + protected function assertNodeWithValues() { + $this->drupalGet('node/1'); + $assert_session = $this->assertSession(); + // String field with no default should render a value. + $assert_session->pageTextContains('field_string_no_default'); + $assert_session->pageTextContains('No default, no problem.'); + // String field with default should render non-default value. + $assert_session->pageTextContains('field_string_with_default'); + $assert_session->pageTextNotContains('This is my default value'); + $assert_session->pageTextContains('It is ok to be different'); + // String field with callback should render non-default value. + $assert_session->pageTextContains('field_string_with_callback'); + $assert_session->pageTextNotContains('This is from my default value callback'); + $assert_session->pageTextContains('Not from a callback'); + // String field with "late" default should render non-default value. + $assert_session->pageTextContains('field_string_late_default'); + $assert_session->pageTextNotContains('Too late!'); + $assert_session->pageTextContains('I am way ahead of you'); + // Image field with default should render non-default value. + $assert_session->pageTextContains('field_image_with_default'); + $assert_session->responseNotContains('My default alt text'); + $assert_session->responseNotContains('test-file-1'); + $assert_session->responseContains('My different alt text'); + $assert_session->responseContains('test-file-2'); + // Image field with no default should render a value. + $assert_session->pageTextContains('field_image_no_default'); + $assert_session->responseContains('My third alt text'); + $assert_session->responseContains('test-file-3'); + } + + /** + * Test for expected text on node 2. + */ + protected function assertNodeWithDefaultValues() { + $this->drupalGet('node/2'); + $assert_session = $this->assertSession(); + // String field with no default should not render. + $assert_session->pageTextNotContains('field_string_no_default'); + // String with default value should render with default value. + $assert_session->pageTextContains('field_string'); + $assert_session->pageTextContains('This is my default value'); + // String field with callback should render value from callback. + $assert_session->pageTextContains('field_string_with_callback'); + $assert_session->pageTextContains('This is from my default value callback'); + // String field with "late" default should not render. + $assert_session->pageTextNotContains('field_string_late_default'); + $assert_session->pageTextNotContains('Too late!'); + // Image field with default should render default value. + $assert_session->pageTextContains('field_image_with_default'); + $assert_session->responseContains('My default alt text'); + $assert_session->responseContains('test-file-1'); + // Image field with no default should not render. + $assert_session->pageTextNotContains('field_image_no_default'); + } + + /** + * Helper function to add string fields. + */ + protected function addTextFields() { + // String field with no default. + $field_storage = FieldStorageConfig::create([ + 'field_name' => 'field_string_no_default', + 'entity_type' => 'node', + 'type' => 'string', + ]); + $field_storage->save(); + $field = FieldConfig::create([ + 'field_storage' => $field_storage, + 'bundle' => 'test_node_type', + ]); + $field->save(); + + // String field with default value. + $field_storage = FieldStorageConfig::create([ + 'field_name' => 'field_string_with_default', + 'entity_type' => 'node', + 'type' => 'string', + ]); + $field_storage->save(); + $field = FieldConfig::create([ + 'field_storage' => $field_storage, + 'bundle' => 'test_node_type', + ]); + $field->setDefaultValue('This is my default value'); + $field->save(); + + // String field with default callback. + $field_storage = FieldStorageConfig::create([ + 'field_name' => 'field_string_with_callback', + 'entity_type' => 'node', + 'type' => 'string', + ]); + $field_storage->save(); + $field = FieldConfig::create([ + 'field_storage' => $field_storage, + 'bundle' => 'test_node_type', + ]); + $field->setDefaultValueCallback('Drupal\Tests\layout_builder\Functional\LayoutBuilderDefaultValuesTest::defaultValueCallback'); + $field->save(); + + // String field with late default. We will set default later. + $field_storage = FieldStorageConfig::create([ + 'field_name' => 'field_string_late_default', + 'entity_type' => 'node', + 'type' => 'string', + ]); + $field_storage->save(); + $field = FieldConfig::create([ + 'field_storage' => $field_storage, + 'bundle' => 'test_node_type', + ]); + $field->save(); + + /** @var \Drupal\Core\Entity\EntityDisplayRepositoryInterface $display_repository */ + $display_repository = \Drupal::service('entity_display.repository'); + $display_repository->getViewDisplay('node', 'test_node_type') + ->setComponent('field_string_no_default', [ + 'type' => 'string', + ]) + ->setComponent('field_string_with_default', [ + 'type' => 'string', + ]) + ->setComponent('field_string_with_callback', [ + 'type' => 'string', + ]) + ->setComponent('field_string_late_default', [ + 'type' => 'string', + ]) + ->save(); + } + + /** + * Helper function to add image fields. + */ + protected function addImageFields() { + // Create files to use as the default images. + $files = $this->drupalGetTestFiles('image'); + $images = []; + for ($i = 1; $i <= 3; $i++) { + $filename = "test-file-$i"; + $desired_filepath = 'public://' . $filename; + \Drupal::service('file_system')->copy($files[0]->uri, $desired_filepath, FileSystemInterface::EXISTS_ERROR); + $file = File::create([ + 'uri' => $desired_filepath, + 'filename' => $filename, + 'name' => $filename, + ]); + $file->save(); + $images[] = $file; + } + + $field_name = 'field_image_with_default'; + $storage_settings['default_image'] = [ + 'uuid' => $images[0]->uuid(), + 'alt' => 'My default alt text', + 'title' => '', + 'width' => 0, + 'height' => 0, + ]; + $field_settings['default_image'] = [ + 'uuid' => $images[0]->uuid(), + 'alt' => 'My default alt text', + 'title' => '', + 'width' => 0, + 'height' => 0, + ]; + $widget_settings = [ + 'preview_image_style' => 'medium', + ]; + $this->createImageField($field_name, 'test_node_type', $storage_settings, $field_settings, $widget_settings); + + $field_name = 'field_image_no_default'; + $storage_settings = []; + $field_settings = []; + $widget_settings = [ + 'preview_image_style' => 'medium', + ]; + $this->createImageField($field_name, 'test_node_type', $storage_settings, $field_settings, $widget_settings); + } + + /** + * Sample 'default value' callback. + */ + public static function defaultValueCallback(FieldableEntityInterface $entity, FieldDefinitionInterface $definition) { + return [['value' => 'This is from my default value callback']]; + } + +} diff --git a/web/core/modules/layout_builder/tests/src/Functional/LayoutBuilderFormModeTest.php b/web/core/modules/layout_builder/tests/src/Functional/LayoutBuilderFormModeTest.php new file mode 100644 index 0000000000000000000000000000000000000000..8ced12daea8039ed03dc0af013aae151064311c3 --- /dev/null +++ b/web/core/modules/layout_builder/tests/src/Functional/LayoutBuilderFormModeTest.php @@ -0,0 +1,118 @@ +<?php + +namespace Drupal\Tests\layout_builder\Functional; + +use Drupal\Core\Entity\Entity\EntityFormDisplay; +use Drupal\Core\Entity\Entity\EntityFormMode; +use Drupal\entity_test\Entity\EntityTest; +use Drupal\field\Entity\FieldConfig; +use Drupal\field\Entity\FieldStorageConfig; +use Drupal\layout_builder\Entity\LayoutBuilderEntityViewDisplay; +use Drupal\Tests\BrowserTestBase; + +/** + * Tests Layout Builder forms. + * + * @group layout_builder + */ +class LayoutBuilderFormModeTest extends BrowserTestBase { + + /** + * {@inheritdoc} + */ + protected static $modules = [ + 'field', + 'entity_test', + 'layout_builder', + ]; + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + /** + * {@inheritdoc} + */ + protected function setUp(): void { + parent::setUp(); + + // Set up a field with a validation constraint. + $field_storage = FieldStorageConfig::create([ + 'field_name' => 'foo', + 'entity_type' => 'entity_test', + 'type' => 'string', + ]); + $field_storage->save(); + + FieldConfig::create([ + 'field_storage' => $field_storage, + 'bundle' => 'entity_test', + // Expecting required value. + 'required' => TRUE, + ])->save(); + + // Enable layout builder custom layouts. + LayoutBuilderEntityViewDisplay::create([ + 'targetEntityType' => 'entity_test', + 'bundle' => 'entity_test', + 'mode' => 'default', + 'status' => TRUE, + ]) + ->enable() + ->enableLayoutBuilder() + ->setOverridable() + ->save(); + + // Add the form mode and show the field with a constraint. + EntityFormMode::create([ + 'id' => 'entity_test.layout_builder', + 'targetEntityType' => 'entity_test', + ])->save(); + EntityFormDisplay::create([ + 'targetEntityType' => 'entity_test', + 'bundle' => 'entity_test', + 'mode' => 'layout_builder', + 'status' => TRUE, + ]) + ->setComponent('foo', [ + 'type' => 'string_textfield', + ]) + ->save(); + + $this->drupalLogin($this->drupalCreateUser([ + 'view test entity', + 'configure any layout', + 'configure all entity_test entity_test layout overrides', + ])); + + EntityTest::create()->setName($this->randomMachineName())->save(); + } + + /** + * Tests that the 'Discard changes' button skips validation and ignores input. + */ + public function testDiscardValidation() { + $page = $this->getSession()->getPage(); + $assert_session = $this->assertSession(); + + // When submitting the form normally, a validation error should be shown. + $this->drupalGet('entity_test/1/layout'); + $assert_session->fieldExists('foo[0][value]'); + $assert_session->elementAttributeContains('named', ['field', 'foo[0][value]'], 'required', 'required'); + $page->pressButton('Save layout'); + $assert_session->pageTextContains('foo field is required.'); + + // When Discarding changes, a validation error will not be shown. + // Reload the form for fresh state. + $this->drupalGet('entity_test/1/layout'); + $page->pressButton('Discard changes'); + $assert_session->pageTextNotContains('foo field is required.'); + $assert_session->addressEquals('entity_test/1/layout/discard-changes'); + + // Submit the form to ensure no invalid form state retained. + $page->pressButton('Confirm'); + $assert_session->pageTextContains('The changes to the layout have been discarded.'); + } + +} diff --git a/web/core/modules/layout_builder/tests/src/Kernel/FieldBlockTest.php b/web/core/modules/layout_builder/tests/src/Kernel/FieldBlockTest.php index 3af03cb81abc45130d50f008fad49aeb5edbf246..b8493ae37d638c898567c973940ca67d4df90593 100644 --- a/web/core/modules/layout_builder/tests/src/Kernel/FieldBlockTest.php +++ b/web/core/modules/layout_builder/tests/src/Kernel/FieldBlockTest.php @@ -152,7 +152,7 @@ public function testBlockAccessEntityAllowedFieldNotAllowed($expected, $field_ac * @covers ::build * @dataProvider providerTestBlockAccessEntityAllowedFieldHasValue */ - public function testBlockAccessEntityAllowedFieldHasValue($expected, $is_empty) { + public function testBlockAccessEntityAllowedFieldHasValue($expected, $is_empty, $default_value) { $entity = $this->prophesize(FieldableEntityInterface::class); $block = $this->getTestBlock($entity); @@ -160,6 +160,10 @@ public function testBlockAccessEntityAllowedFieldHasValue($expected, $is_empty) $entity->access('view', $account->reveal(), TRUE)->willReturn(AccessResult::allowed()); $entity->hasField('the_field_name')->willReturn(TRUE); $field = $this->prophesize(FieldItemListInterface::class); + $field_definition = $this->prophesize(FieldDefinitionInterface::class); + $field->getFieldDefinition()->willReturn($field_definition->reveal()); + $field_definition->getDefaultValue($entity->reveal())->willReturn($default_value); + $field_definition->getType()->willReturn('not_an_image'); $entity->get('the_field_name')->willReturn($field->reveal()); $field->access('view', $account->reveal(), TRUE)->willReturn(AccessResult::allowed()); @@ -177,10 +181,17 @@ public function providerTestBlockAccessEntityAllowedFieldHasValue() { $data['empty'] = [ FALSE, TRUE, + FALSE, ]; $data['populated'] = [ TRUE, FALSE, + FALSE, + ]; + $data['empty, with default'] = [ + TRUE, + TRUE, + TRUE, ]; return $data; } diff --git a/web/core/modules/media/src/Plugin/media/Source/OEmbed.php b/web/core/modules/media/src/Plugin/media/Source/OEmbed.php index bfe8a7d8626927f0d89082a8d7dd68369a528276..758a63f69f13ba5acebcfe030fdd3bc5474c8e09 100644 --- a/web/core/modules/media/src/Plugin/media/Source/OEmbed.php +++ b/web/core/modules/media/src/Plugin/media/Source/OEmbed.php @@ -447,7 +447,9 @@ protected function getLocalThumbnailUri(Resource $resource) { } } catch (TransferException $e) { - $this->logger->warning($e->getMessage()); + $this->logger->warning('Failed to download remote thumbnail file due to "%error".', [ + '%error' => $e->getMessage(), + ]); } catch (FileException $e) { $this->logger->warning('Could not download remote thumbnail from {url}.', [ diff --git a/web/core/modules/migrate/src/MigrateException.php b/web/core/modules/migrate/src/MigrateException.php index c122a89ebad5afdfc56cec250f17d6546687d6d2..526fe043b6f379390ca10c9e1efa8d937879b842 100644 --- a/web/core/modules/migrate/src/MigrateException.php +++ b/web/core/modules/migrate/src/MigrateException.php @@ -13,18 +13,22 @@ class MigrateException extends \Exception { /** * The level of the error being reported. * - * The value is a Migration::MESSAGE_* constant. + * The value is a MigrationInterface::MESSAGE_* constant. * * @var int + * + * @see \Drupal\migrate\Plugin\MigrationInterface */ protected $level; /** * The status to record in the map table for the current item. * - * The value is a MigrateMap::STATUS_* constant. + * The value is a MigrateIdMapInterface::STATUS_* constant. * * @var int + * + * @see \Drupal\migrate\Plugin\MigrateIdMapInterface */ protected $status; diff --git a/web/core/modules/migrate/src/Plugin/migrate/process/MigrationLookup.php b/web/core/modules/migrate/src/Plugin/migrate/process/MigrationLookup.php index 06b7c9a01468a1aaa7e9f53551eb114153c315b3..8e7ca733a9c2f2e5879ae6ec6fe916a8032857c8 100644 --- a/web/core/modules/migrate/src/Plugin/migrate/process/MigrationLookup.php +++ b/web/core/modules/migrate/src/Plugin/migrate/process/MigrationLookup.php @@ -263,7 +263,7 @@ public function transform($value, MigrateExecutableInterface $migrate_executable throw $e; } catch (\Exception $e) { - throw new MigrateException(sprintf('A(n) %s was thrown while attempting to stub.', gettype($e)), $e->getCode(), $e); + throw new MigrateException(sprintf('%s was thrown while attempting to stub: %s', get_class($e), $e->getMessage()), $e->getCode(), $e); } } if ($destination_ids) { diff --git a/web/core/modules/migrate/tests/src/Unit/process/MigrationLookupTest.php b/web/core/modules/migrate/tests/src/Unit/process/MigrationLookupTest.php index ca483476c1e71e51a06106966e0afc522aa63772..c022175f5358ec108f7a733fd66bb40e2e19eb21 100644 --- a/web/core/modules/migrate/tests/src/Unit/process/MigrationLookupTest.php +++ b/web/core/modules/migrate/tests/src/Unit/process/MigrationLookupTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\migrate\Unit\process; +use Drupal\migrate\MigrateException; use Drupal\migrate\MigrateSkipProcessException; use Drupal\migrate\Plugin\MigrationInterface; use Drupal\migrate\Plugin\migrate\process\MigrationLookup; @@ -60,6 +61,12 @@ public function testTransformWithStubbing() { $migration = MigrationLookup::create($this->prepareContainer(), $configuration, '', [], $migration_plugin->reveal()); $result = $migration->transform(1, $this->migrateExecutable, $this->row, ''); $this->assertEquals(2, $result); + + $this->migrateStub->createStub('destination_migration', [1], [], FALSE)->willThrow(new \Exception('Oh noes!')); + $migration = MigrationLookup::create($this->prepareContainer(), $configuration, '', [], $migration_plugin->reveal()); + $this->expectException(MigrateException::class); + $this->expectExceptionMessage('Exception was thrown while attempting to stub: Oh noes!'); + $migration->transform(1, $this->migrateExecutable, $this->row, ''); } /** diff --git a/web/core/modules/mysql/mysql.module b/web/core/modules/mysql/mysql.module index a8572bf8650b6a2f5b4156ed7205f1a114d863b1..3a68ca95e9130fa2812511f9ecd3b8b8a8598f59 100644 --- a/web/core/modules/mysql/mysql.module +++ b/web/core/modules/mysql/mysql.module @@ -15,7 +15,7 @@ function mysql_help($route_name, RouteMatchInterface $route_match) { case 'help.page.mysql': $output = ''; $output .= '<h3>' . t('About') . '</h3>'; - $output .= '<p>' . t('The MySQL module provides the connection between Drupal and a MySQL, MariaDB or equivalent database. For more information, see the <a href=":mysql">online documentation for the MySQL module</a>.', [':mysql' => 'https://www.drupal.org/documentation/modules/mysql']) . '</p>'; + $output .= '<p>' . t('The MySQL module provides the connection between Drupal and a MySQL, MariaDB or equivalent database. For more information, see the <a href=":mysql">online documentation for the MySQL module</a>.', [':mysql' => 'https://www.drupal.org/docs/core-modules-and-themes/core-modules/mysql-module']) . '</p>'; return $output; } diff --git a/web/core/tests/Drupal/Tests/Core/Database/Driver/mysql/ConnectionTest.php b/web/core/modules/mysql/tests/src/Unit/ConnectionTest.php similarity index 98% rename from web/core/tests/Drupal/Tests/Core/Database/Driver/mysql/ConnectionTest.php rename to web/core/modules/mysql/tests/src/Unit/ConnectionTest.php index 78d57d1578c13a28eed8d9cbbefb9d07c3cdbe8b..ed682c55f9327a9ab25c23e5dcf0a5af58f1feeb 100644 --- a/web/core/tests/Drupal/Tests/Core/Database/Driver/mysql/ConnectionTest.php +++ b/web/core/modules/mysql/tests/src/Unit/ConnectionTest.php @@ -1,6 +1,6 @@ <?php -namespace Drupal\Tests\Core\Database\Driver\mysql; +namespace Drupal\Tests\mysql\Unit; use Drupal\mysql\Driver\Database\mysql\Connection; use Drupal\Tests\UnitTestCase; diff --git a/web/core/tests/Drupal/Tests/Core/Database/Driver/mysql/install/TasksTest.php b/web/core/modules/mysql/tests/src/Unit/InstallTasksTest.php similarity index 96% rename from web/core/tests/Drupal/Tests/Core/Database/Driver/mysql/install/TasksTest.php rename to web/core/modules/mysql/tests/src/Unit/InstallTasksTest.php index b26a3ee77978daec16b63196b3f222b8bab5d4e1..8bc00310ff3b5ebcba07920e0f8041d4af09cbfb 100644 --- a/web/core/tests/Drupal/Tests/Core/Database/Driver/mysql/install/TasksTest.php +++ b/web/core/modules/mysql/tests/src/Unit/InstallTasksTest.php @@ -1,6 +1,6 @@ <?php -namespace Drupal\Tests\Core\Database\Driver\mysql\install; +namespace Drupal\Tests\mysql\Unit; use Drupal\mysql\Driver\Database\mysql\Connection; use Drupal\mysql\Driver\Database\mysql\Install\Tasks; @@ -12,7 +12,7 @@ * @coversDefaultClass \Drupal\mysql\Driver\Database\mysql\Install\Tasks * @group Database */ -class TasksTest extends UnitTestCase { +class InstallTasksTest extends UnitTestCase { /** * A connection object prophecy. diff --git a/web/core/modules/node/tests/src/Functional/NodeTitleTest.php b/web/core/modules/node/tests/src/Functional/NodeTitleTest.php index 0d1a93e5023f67f98c7f9bb0eb8490adb844b100..fe3213902de10508596eb25e964890a07583aafd 100644 --- a/web/core/modules/node/tests/src/Functional/NodeTitleTest.php +++ b/web/core/modules/node/tests/src/Functional/NodeTitleTest.php @@ -68,8 +68,7 @@ public function testNodeTitle() { // Test <title> tag. $this->drupalGet('node/' . $node->id()); - $xpath = '//title'; - $this->assertEquals($this->xpath($xpath)[0]->getText(), $node->label() . ' | Drupal', 'Page title is equal to node title.'); + $this->assertSession()->elementTextEquals('xpath', '//title', $node->label() . ' | Drupal'); // Test breadcrumb in comment preview. $this->assertBreadcrumb('comment/reply/node/' . $node->id() . '/comment', [ @@ -93,8 +92,7 @@ public function testNodeTitle() { $this->drupalGet('node/' . $node->id()); $this->assertSession()->titleEquals('0 | Drupal'); // Test that 0 appears in the template <h1>. - $xpath = '//h1'; - $this->assertSame('0', $this->xpath($xpath)[0]->getText(), 'Node title is displayed as 0.'); + $this->assertSession()->elementTextEquals('xpath', '//h1', '0'); // Test edge case where node title contains special characters. $edge_case_title = 'article\'s "title".'; diff --git a/web/core/modules/node/tests/src/Functional/PagePreviewTest.php b/web/core/modules/node/tests/src/Functional/PagePreviewTest.php index 789bb54bb48b6405834c2e5e43865cb78e2d2a4d..d815a5360d9d09c9547a22171a9a47626b5e20f0 100644 --- a/web/core/modules/node/tests/src/Functional/PagePreviewTest.php +++ b/web/core/modules/node/tests/src/Functional/PagePreviewTest.php @@ -226,8 +226,7 @@ public function testPagePreview() { $this->assertSession()->linkExists('Back to content editing'); // Check that we see the class of the node type on the body element. - $body_class_element = $this->xpath("//body[contains(@class, 'page-node-type-page')]"); - $this->assertNotEmpty($body_class_element, 'Node type body class found.'); + $this->assertSession()->elementExists('xpath', "//body[contains(@class, 'page-node-type-page')]"); // Get the UUID. $url = parse_url($this->getUrl()); diff --git a/web/core/modules/path/tests/src/Functional/PathAliasTest.php b/web/core/modules/path/tests/src/Functional/PathAliasTest.php index 013ceebdc3d13cd36ecaccb22afae0cc971b2c07..4a5c8d6ccf3a17adcbb0ff5d6e7f158dd6429f56 100644 --- a/web/core/modules/path/tests/src/Functional/PathAliasTest.php +++ b/web/core/modules/path/tests/src/Functional/PathAliasTest.php @@ -266,10 +266,8 @@ public function testNodeAlias() { $this->assertSession()->statusCodeEquals(200); // Confirm the 'canonical' and 'shortlink' URLs. - $elements = $this->xpath("//link[contains(@rel, 'canonical') and contains(@href, '" . $edit['path[0][alias]'] . "')]"); - $this->assertNotEmpty($elements, 'Page contains canonical link URL.'); - $elements = $this->xpath("//link[contains(@rel, 'shortlink') and contains(@href, 'node/" . $node1->id() . "')]"); - $this->assertNotEmpty($elements, 'Page contains shortlink URL.'); + $this->assertSession()->elementExists('xpath', "//link[contains(@rel, 'canonical') and contains(@href, '" . $edit['path[0][alias]'] . "')]"); + $this->assertSession()->elementExists('xpath', "//link[contains(@rel, 'shortlink') and contains(@href, 'node/" . $node1->id() . "')]"); $previous = $edit['path[0][alias]']; // Change alias to one containing "exotic" characters. diff --git a/web/core/modules/path/tests/src/Functional/PathTaxonomyTermTest.php b/web/core/modules/path/tests/src/Functional/PathTaxonomyTermTest.php index b578e92640ecbd8ed46a01b4601295f5db1a8322..6c90c63ed34e82ca741645e4e34170a6c2f94654 100644 --- a/web/core/modules/path/tests/src/Functional/PathTaxonomyTermTest.php +++ b/web/core/modules/path/tests/src/Functional/PathTaxonomyTermTest.php @@ -68,10 +68,8 @@ public function testTermAlias() { $this->assertSession()->pageTextContains($description); // Confirm the 'canonical' and 'shortlink' URLs. - $elements = $this->xpath("//link[contains(@rel, 'canonical') and contains(@href, '" . $edit['path[0][alias]'] . "')]"); - $this->assertNotEmpty($elements, 'Term page contains canonical link URL.'); - $elements = $this->xpath("//link[contains(@rel, 'shortlink') and contains(@href, 'taxonomy/term/" . $tid . "')]"); - $this->assertNotEmpty($elements, 'Term page contains shortlink URL.'); + $this->assertSession()->elementExists('xpath', "//link[contains(@rel, 'canonical') and contains(@href, '" . $edit['path[0][alias]'] . "')]"); + $this->assertSession()->elementExists('xpath', "//link[contains(@rel, 'shortlink') and contains(@href, 'taxonomy/term/" . $tid . "')]"); // Change the term's URL alias. $edit2 = []; diff --git a/web/core/modules/pgsql/pgsql.module b/web/core/modules/pgsql/pgsql.module index 4d9027bc432fb2f7a529dd438822b2d6cebadb2a..0b5ba47050081a4b74d47284d5c2ff5f0951920a 100644 --- a/web/core/modules/pgsql/pgsql.module +++ b/web/core/modules/pgsql/pgsql.module @@ -15,7 +15,7 @@ function pgsql_help($route_name, RouteMatchInterface $route_match) { case 'help.page.pgsql': $output = ''; $output .= '<h3>' . t('About') . '</h3>'; - $output .= '<p>' . t('The PostgreSQL module provides the connection between Drupal and a PostgreSQL database. For more information, see the <a href=":pgsql">online documentation for the PostgreSQL module</a>.', [':pgsql' => 'https://www.drupal.org/documentation/modules/pgsql']) . '</p>'; + $output .= '<p>' . t('The PostgreSQL module provides the connection between Drupal and a PostgreSQL database. For more information, see the <a href=":pgsql">online documentation for the PostgreSQL module</a>.', [':pgsql' => 'https://www.drupal.org/docs/core-modules-and-themes/core-modules/postgresql-module']) . '</p>'; return $output; } diff --git a/web/core/tests/Drupal/Tests/Core/Database/Driver/pgsql/PostgresqlSchemaTest.php b/web/core/modules/pgsql/tests/src/Unit/SchemaTest.php similarity index 95% rename from web/core/tests/Drupal/Tests/Core/Database/Driver/pgsql/PostgresqlSchemaTest.php rename to web/core/modules/pgsql/tests/src/Unit/SchemaTest.php index 0e50eb18408bc6045528db4905c8d49b093f3359..7673638143b2d194358dfaab8f01089fdbe82d77 100644 --- a/web/core/tests/Drupal/Tests/Core/Database/Driver/pgsql/PostgresqlSchemaTest.php +++ b/web/core/modules/pgsql/tests/src/Unit/SchemaTest.php @@ -1,6 +1,6 @@ <?php -namespace Drupal\Tests\Core\Database\Driver\pgsql; +namespace Drupal\Tests\pgsql\Unit; use Drupal\pgsql\Driver\Database\pgsql\Schema; use Drupal\Tests\UnitTestCase; @@ -11,7 +11,7 @@ * @coversDefaultClass \Drupal\pgsql\Driver\Database\pgsql\Schema * @group Database */ -class PostgresqlSchemaTest extends UnitTestCase { +class SchemaTest extends UnitTestCase { /** * The PostgreSql DB connection. diff --git a/web/core/modules/search/tests/src/Functional/SearchBlockTest.php b/web/core/modules/search/tests/src/Functional/SearchBlockTest.php index 7cf659ba49487e3ed0b0e052a87da6597b934a01..ba5d6988f544ea3d4654fd518f163a2ac34dffcd 100644 --- a/web/core/modules/search/tests/src/Functional/SearchBlockTest.php +++ b/web/core/modules/search/tests/src/Functional/SearchBlockTest.php @@ -62,9 +62,7 @@ public function testSearchFormBlock() { $this->assertSession()->pageTextContains($block->label()); // Check that name attribute is not empty. - $pattern = "//input[@type='submit' and @name='']"; - $elements = $this->xpath($pattern); - $this->assertEmpty($elements, 'The search input field does not have empty name attribute.'); + $this->assertSession()->elementNotExists('xpath', "//input[@type='submit' and @name='']"); // Test a normal search via the block form, from the front page. $terms = ['keys' => 'test']; diff --git a/web/core/modules/sqlite/sqlite.module b/web/core/modules/sqlite/sqlite.module index 4cfb9923aac98fac1fe11f402e5b3ec0104a4864..324b71bd67943a00118533c2ba5da4baf97a1b0e 100644 --- a/web/core/modules/sqlite/sqlite.module +++ b/web/core/modules/sqlite/sqlite.module @@ -15,7 +15,7 @@ function sqlite_help($route_name, RouteMatchInterface $route_match) { case 'help.page.sqlite': $output = ''; $output .= '<h3>' . t('About') . '</h3>'; - $output .= '<p>' . t('The SQLite module provides the connection between Drupal and a SQLite database. For more information, see the <a href=":sqlite">online documentation for the SQLite module</a>.', [':sqlite' => 'https://www.drupal.org/documentation/modules/sqlite']) . '</p>'; + $output .= '<p>' . t('The SQLite module provides the connection between Drupal and a SQLite database. For more information, see the <a href=":sqlite">online documentation for the SQLite module</a>.', [':sqlite' => 'https://www.drupal.org/docs/core-modules-and-themes/core-modules/sqlite-module']) . '</p>'; return $output; } diff --git a/web/core/tests/Drupal/Tests/Core/Database/Driver/sqlite/ConnectionTest.php b/web/core/modules/sqlite/tests/src/Unit/ConnectionTest.php similarity index 96% rename from web/core/tests/Drupal/Tests/Core/Database/Driver/sqlite/ConnectionTest.php rename to web/core/modules/sqlite/tests/src/Unit/ConnectionTest.php index 3e52d6aecca88a5471b9468d80ca6c960c8651c2..1555d83f112eac0f09584ccf0c60c5be7c7aff49 100644 --- a/web/core/tests/Drupal/Tests/Core/Database/Driver/sqlite/ConnectionTest.php +++ b/web/core/modules/sqlite/tests/src/Unit/ConnectionTest.php @@ -1,6 +1,6 @@ <?php -namespace Drupal\Tests\Core\Database\Driver\sqlite; +namespace Drupal\Tests\sqlite\Unit; use Drupal\sqlite\Driver\Database\sqlite\Connection; use Drupal\Tests\Core\Database\Stub\StubPDO; diff --git a/web/core/modules/syslog/tests/src/Functional/SyslogTest.php b/web/core/modules/syslog/tests/src/Functional/SyslogTest.php index 2bdac37427c6da87a9747775fe0ff0ebf10b44d0..e622f681e409515b795d71d00eaa15735135216f 100644 --- a/web/core/modules/syslog/tests/src/Functional/SyslogTest.php +++ b/web/core/modules/syslog/tests/src/Functional/SyslogTest.php @@ -38,8 +38,8 @@ public function testSettings() { $this->drupalGet('admin/config/development/logging'); // Should be one field. - $field = $this->xpath('//option[@value=:value]', [':value' => LOG_LOCAL6]); - $this->assertSame('selected', $field[0]->getAttribute('selected'), 'Facility value saved.'); + $field = $this->assertSession()->elementExists('xpath', '//option[@value="' . LOG_LOCAL6 . '"]'); + $this->assertSame('selected', $field->getAttribute('selected'), 'Facility value saved.'); } } diff --git a/web/core/modules/system/tests/src/Functional/Form/ElementTest.php b/web/core/modules/system/tests/src/Functional/Form/ElementTest.php index afd264577a87f992574ebb91d68c9691e096d68d..f943dfa4c9390033bc990ad887f0a610dcf262f6 100644 --- a/web/core/modules/system/tests/src/Functional/Form/ElementTest.php +++ b/web/core/modules/system/tests/src/Functional/Form/ElementTest.php @@ -2,7 +2,6 @@ namespace Drupal\Tests\system\Functional\Form; -use Drupal\Component\Render\FormattableMarkup; use Drupal\Tests\BrowserTestBase; /** @@ -114,9 +113,8 @@ public function testWrapperIds() { // Verify that wrapper id is different from element id. foreach (['checkboxes', 'radios'] as $type) { // A single element id is found. - $this->assertSession()->elementsCount('xpath', "//div[@id='edit-$type']", 1); - $wrapper_ids = $this->xpath('//fieldset[@id=:id]', [':id' => 'edit-' . $type . '--wrapper']); - $this->assertCount(1, $wrapper_ids, new FormattableMarkup('A single wrapper id found for type %type', ['%type' => $type])); + $this->assertSession()->elementsCount('xpath', "//div[@id='edit-{$type}']", 1); + $this->assertSession()->elementsCount('xpath', "//fieldset[@id='edit-{$type}--wrapper']", 1); } } @@ -129,9 +127,9 @@ public function testButtonClasses() { // "button--foo" would contain "button". Instead, check // " button ". Make sure it matches in the beginning and the end too // by adding a space before and after. - $this->assertCount(2, $this->xpath('//*[contains(concat(" ", @class, " "), " button ")]')); - $this->assertCount(1, $this->xpath('//*[contains(concat(" ", @class, " "), " button--foo ")]')); - $this->assertCount(1, $this->xpath('//*[contains(concat(" ", @class, " "), " button--danger ")]')); + $this->assertSession()->elementsCount('xpath', '//*[contains(concat(" ", @class, " "), " button ")]', 2); + $this->assertSession()->elementsCount('xpath', '//*[contains(concat(" ", @class, " "), " button--foo ")]', 1); + $this->assertSession()->elementsCount('xpath', '//*[contains(concat(" ", @class, " "), " button--danger ")]', 1); } /** diff --git a/web/core/modules/system/tests/src/Functional/Form/ElementsTableSelectTest.php b/web/core/modules/system/tests/src/Functional/Form/ElementsTableSelectTest.php index f20a753b719d0d8239190c23af613d77d3ffcb24..6ca381f56af1556dc87ec64fb901730286c35a37 100644 --- a/web/core/modules/system/tests/src/Functional/Form/ElementsTableSelectTest.php +++ b/web/core/modules/system/tests/src/Functional/Form/ElementsTableSelectTest.php @@ -34,11 +34,11 @@ public function testMultipleTrue() { $this->assertSession()->responseNotContains('Empty text.'); // Test for the presence of the Select all rows tableheader. - $this->assertNotEmpty($this->xpath('//th[@class="select-all"]'), 'Presence of the "Select all" checkbox.'); + $this->assertSession()->elementExists('xpath', '//th[@class="select-all"]'); $rows = ['row1', 'row2', 'row3']; foreach ($rows as $row) { - $this->assertNotEmpty($this->xpath('//input[@type="checkbox"]', [$row]), "Checkbox for the value $row."); + $this->assertSession()->elementExists('xpath', '//input[@type="checkbox"]'); } } @@ -55,7 +55,7 @@ public function testMultipleFalse() { $rows = ['row1', 'row2', 'row3']; foreach ($rows as $row) { - $this->assertNotEmpty($this->xpath('//input[@type="radio"]', [$row], "Radio button value: $row")); + $this->assertSession()->elementExists('xpath', '//input[@type="radio"]'); } } @@ -70,18 +70,17 @@ public function testTableSelectColSpan() { $this->assertSession()->pageTextNotContains('Four'); // There should be three labeled column headers and 1 for the input. - $table_head = $this->xpath('//thead/tr/th'); - $this->assertCount(4, $table_head, 'There are four column headers'); + $this->assertSession()->elementsCount('xpath', '//thead/tr/th', 4); // The first two body rows should each have 5 table cells: One for the // radio, one cell in the first column, one cell in the second column, // and two cells in the third column which has colspan 2. for ($i = 0; $i <= 1; $i++) { - $this->assertCount(5, $this->xpath('//tbody/tr[' . ($i + 1) . ']/td'), 'There are five cells in row ' . $i); + $this->assertSession()->elementsCount('xpath', '//tbody/tr[' . ($i + 1) . ']/td', 5); } // The third row should have 3 cells, one for the radio, one spanning the // first and second column, and a third in column 3 (which has colspan 3). - $this->assertCount(3, $this->xpath('//tbody/tr[3]/td'), 'There are three cells in row 3.'); + $this->assertSession()->elementsCount('xpath', '//tbody/tr[3]/td', 3); } /** diff --git a/web/core/modules/system/tests/src/Functional/Form/FormObjectTest.php b/web/core/modules/system/tests/src/Functional/Form/FormObjectTest.php index 174cdf39ac86065b1831b3f3b288c4c475afbc77..d96d8aaf83e31b3027dd92633f50207b8bf41ce4 100644 --- a/web/core/modules/system/tests/src/Functional/Form/FormObjectTest.php +++ b/web/core/modules/system/tests/src/Functional/Form/FormObjectTest.php @@ -33,8 +33,7 @@ public function testObjectFormCallback() { $this->drupalGet('form-test/object-builder'); $this->assertSession()->pageTextContains('The FormTestObject::buildForm() method was used for this form.'); - $elements = $this->xpath('//form[@id="form-test-form-test-object"]'); - $this->assertTrue(!empty($elements), 'The correct form ID was used.'); + $this->assertSession()->elementExists('xpath', '//form[@id="form-test-form-test-object"]'); $this->submitForm(['bananas' => 'green'], 'Save'); $this->assertSession()->pageTextContains('The FormTestObject::validateForm() method was used for this form.'); $this->assertSession()->pageTextContains('The FormTestObject::submitForm() method was used for this form.'); @@ -43,8 +42,7 @@ public function testObjectFormCallback() { $this->drupalGet('form-test/object-arguments-builder/yellow'); $this->assertSession()->pageTextContains('The FormTestArgumentsObject::buildForm() method was used for this form.'); - $elements = $this->xpath('//form[@id="form-test-form-test-arguments-object"]'); - $this->assertTrue(!empty($elements), 'The correct form ID was used.'); + $this->assertSession()->elementExists('xpath', '//form[@id="form-test-form-test-arguments-object"]'); $this->submitForm([], 'Save'); $this->assertSession()->pageTextContains('The FormTestArgumentsObject::validateForm() method was used for this form.'); $this->assertSession()->pageTextContains('The FormTestArgumentsObject::submitForm() method was used for this form.'); @@ -53,8 +51,7 @@ public function testObjectFormCallback() { $this->drupalGet('form-test/object-service-builder'); $this->assertSession()->pageTextContains('The FormTestServiceObject::buildForm() method was used for this form.'); - $elements = $this->xpath('//form[@id="form-test-form-test-service-object"]'); - $this->assertTrue(!empty($elements), 'The correct form ID was used.'); + $this->assertSession()->elementExists('xpath', '//form[@id="form-test-form-test-service-object"]'); $this->submitForm(['bananas' => 'brown'], 'Save'); $this->assertSession()->pageTextContains('The FormTestServiceObject::validateForm() method was used for this form.'); $this->assertSession()->pageTextContains('The FormTestServiceObject::submitForm() method was used for this form.'); @@ -64,8 +61,7 @@ public function testObjectFormCallback() { $this->drupalGet('form-test/object-controller-builder'); $this->assertSession()->pageTextContains('The FormTestControllerObject::create() method was used for this form.'); $this->assertSession()->pageTextContains('The FormTestControllerObject::buildForm() method was used for this form.'); - $elements = $this->xpath('//form[@id="form-test-form-test-controller-object"]'); - $this->assertTrue(!empty($elements), 'The correct form ID was used.'); + $this->assertSession()->elementExists('xpath', '//form[@id="form-test-form-test-controller-object"]'); // Ensure parameters are injected from request attributes. $this->assertSession()->pageTextContains('custom_value'); // Ensure the request object is injected. diff --git a/web/core/modules/system/tests/src/Functional/Menu/AssertMenuActiveTrailTrait.php b/web/core/modules/system/tests/src/Functional/Menu/AssertMenuActiveTrailTrait.php index ad39414c5e7116aaaec5604fbece314b6369c67e..2ce7f8bc5ec97a0d78b1a2172af6414d80849330 100644 --- a/web/core/modules/system/tests/src/Functional/Menu/AssertMenuActiveTrailTrait.php +++ b/web/core/modules/system/tests/src/Functional/Menu/AssertMenuActiveTrailTrait.php @@ -43,8 +43,7 @@ protected function assertMenuActiveTrail($tree, $last_active, $active_trail_clas $xpath .= $this->assertSession()->buildXPathQuery($part_xpath, $part_args); $i++; } - $elements = $this->xpath($xpath); - $this->assertNotEmpty($elements, 'Active trail to current page should be visible in menu tree.'); + $this->assertSession()->elementExists('xpath', $xpath); // Append prefix for active link asserted below. $xpath .= '/following-sibling::ul/descendant::'; @@ -60,8 +59,7 @@ protected function assertMenuActiveTrail($tree, $last_active, $active_trail_clas ':href' => Url::fromUri('base:' . $active_link_path)->toString(), ':title' => $active_link_title, ]; - $elements = $this->xpath($xpath, $args); - $this->assertNotEmpty($elements, sprintf('Active link %s should be visible in menu tree, including active trail links %s.', $active_link_title, implode(' » ', $tree))); + $this->assertSession()->elementExists('xpath', $this->assertSession()->buildXPathQuery($xpath, $args)); } } diff --git a/web/core/modules/system/tests/src/Functional/Menu/BreadcrumbTest.php b/web/core/modules/system/tests/src/Functional/Menu/BreadcrumbTest.php index a02ae003aa6ce7da5d1d6f51baa2160b19a75b5e..4a7d095a69edbb87c53ce3b7fd24b3c2648f9ffc 100644 --- a/web/core/modules/system/tests/src/Functional/Menu/BreadcrumbTest.php +++ b/web/core/modules/system/tests/src/Functional/Menu/BreadcrumbTest.php @@ -302,11 +302,7 @@ public function testBreadCrumbs() { // untranslated menu links automatically generated from menu router items // ('taxonomy/term/%') should never be translated and appear in any menu // other than the breadcrumb trail. - $elements = $this->xpath('//nav[contains(@class, :menu-class)]/descendant::a[@href=:href]', [ - ':menu-class' => 'menu--tools', - ':href' => Url::fromUri('base:' . $link_path)->toString(), - ]); - $this->assertCount(1, $elements, "Link to {$link_path} appears only once."); + $this->assertSession()->elementsCount('xpath', '//nav[contains(@class, "menu--tools")]/descendant::a[@href="' . Url::fromUri('base:' . $link_path)->toString() . '"]', 1); // Next iteration should expect this tag as parent link. // Note: Term name, not link name, due to taxonomy_term_page(). diff --git a/web/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php b/web/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php index 01ccdc0c499dfc34fd160de0970e54b1d906dd0d..dde5d52cc51fa840acb0995e8ee27227f8d42d99 100644 --- a/web/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php +++ b/web/core/modules/system/tests/src/Functional/Menu/LocalTasksTest.php @@ -93,10 +93,7 @@ protected function assertLocalTaskAppears(string $title): void { * @internal */ protected function assertNoLocalTasks(int $level = 0): void { - $elements = $this->xpath('//*[contains(@class, :class)]//a', [ - ':class' => $level == 0 ? 'tabs primary' : 'tabs secondary', - ]); - $this->assertEmpty($elements, 'Local tasks not found.'); + $this->assertSession()->elementNotExists('xpath', '//*[contains(@class, "' . ($level == 0 ? 'tabs primary' : 'tabs secondary') . '")]//a'); } /** @@ -191,9 +188,8 @@ public function testPluginLocalTask() { $this->assertLocalTasks($tasks, 0); - $result = $this->xpath('//ul[contains(@class, "tabs")]//li[contains(@class, "active")]'); - $this->assertCount(1, $result, 'There is one active tab.'); - $this->assertEquals('upcasting sub1(active tab)', $result[0]->getText(), 'The "upcasting sub1" tab is active.'); + $this->assertSession()->elementsCount('xpath', '//ul[contains(@class, "tabs")]//li[contains(@class, "active")]', 1); + $this->assertSession()->elementTextEquals('xpath', '//ul[contains(@class, "tabs")]//li[contains(@class, "active")]', 'upcasting sub1(active tab)'); $this->drupalGet(Url::fromRoute('menu_test.local_task_test_upcasting_sub2', ['entity_test' => '1'])); @@ -203,9 +199,8 @@ public function testPluginLocalTask() { ]; $this->assertLocalTasks($tasks, 0); - $result = $this->xpath('//ul[contains(@class, "tabs")]//li[contains(@class, "active")]'); - $this->assertCount(1, $result, 'There is one active tab.'); - $this->assertEquals('upcasting sub2(active tab)', $result[0]->getText(), 'The "upcasting sub2" tab is active.'); + $this->assertSession()->elementsCount('xpath', '//ul[contains(@class, "tabs")]//li[contains(@class, "active")]', 1); + $this->assertSession()->elementTextEquals('xpath', '//ul[contains(@class, "tabs")]//li[contains(@class, "active")]', 'upcasting sub2(active tab)'); } /** diff --git a/web/core/modules/system/tests/src/Functional/Page/DefaultMetatagsTest.php b/web/core/modules/system/tests/src/Functional/Page/DefaultMetatagsTest.php index 5230b2a70b2b2f13ffb8b223d9cd6d9f51f08200..b9506d48839815d39e4870975cb8c699a2d3666d 100644 --- a/web/core/modules/system/tests/src/Functional/Page/DefaultMetatagsTest.php +++ b/web/core/modules/system/tests/src/Functional/Page/DefaultMetatagsTest.php @@ -22,16 +22,14 @@ class DefaultMetatagsTest extends BrowserTestBase { public function testMetaTag() { $this->drupalGet(''); // Ensures that the charset metatag is on the page. - $result = $this->xpath('//meta[@charset="utf-8"]'); - $this->assertCount(1, $result); + $this->assertSession()->elementsCount('xpath', '//meta[@charset="utf-8"]', 1); // Ensure that the charset one is the first metatag. $result = $this->xpath('//meta'); $this->assertEquals('utf-8', (string) $result[0]->getAttribute('charset')); // Ensure that the icon is on the page. - $result = $this->xpath('//link[@rel = "icon"]'); - $this->assertCount(1, $result, 'The icon is present.'); + $this->assertSession()->elementsCount('xpath', '//link[@rel = "icon"]', 1); } } diff --git a/web/core/modules/system/tests/src/Functional/Render/HtmlResponseAttachmentsTest.php b/web/core/modules/system/tests/src/Functional/Render/HtmlResponseAttachmentsTest.php index a66e3d023260959d119411f3181449d7519e99de..b95d17eadd87250e28d8aa88f8514cfdd0050f4b 100644 --- a/web/core/modules/system/tests/src/Functional/Render/HtmlResponseAttachmentsTest.php +++ b/web/core/modules/system/tests/src/Functional/Render/HtmlResponseAttachmentsTest.php @@ -70,8 +70,7 @@ public function testAttachments() { $this->assertEquals($expected_link_headers, $this->getSession()->getResponseHeaders()['Link']); // Check that duplicate alternate URLs with different hreflangs are allowed. - $test_link = $this->xpath('//head/link[@rel="alternate"][@href="/foo/bar"]'); - $this->assertEquals(2, count($test_link), 'Duplicate alternate URLs are allowed.'); + $this->assertSession()->elementsCount('xpath', '//head/link[@rel="alternate"][@href="/foo/bar"]', 2); } /** diff --git a/web/core/modules/system/tests/src/Functional/System/PageTitleTest.php b/web/core/modules/system/tests/src/Functional/System/PageTitleTest.php index ed7b2340120af6ba5fac59fcb9aee8b32da8440f..d2060157ebc0586a67798faec7f73c84e0a28101 100644 --- a/web/core/modules/system/tests/src/Functional/System/PageTitleTest.php +++ b/web/core/modules/system/tests/src/Functional/System/PageTitleTest.php @@ -120,15 +120,13 @@ public function testRoutingTitle() { $this->drupalGet('test-render-title'); $this->assertSession()->titleEquals('Foo | Drupal'); - $result = $this->xpath('//h1[@class="page-title"]'); - $this->assertEquals('Foo', $result[0]->getText()); + $this->assertSession()->elementTextEquals('xpath', '//h1[@class="page-title"]', 'Foo'); // Test forms $this->drupalGet('form-test/object-builder'); $this->assertSession()->titleEquals('Test dynamic title | Drupal'); - $result = $this->xpath('//h1[@class="page-title"]'); - $this->assertEquals('Test dynamic title', $result[0]->getText()); + $this->assertSession()->elementTextEquals('xpath', '//h1[@class="page-title"]', 'Test dynamic title'); // Set some custom translated strings. $settings_key = 'locale_custom_strings_en'; @@ -152,15 +150,13 @@ public function testRoutingTitle() { $this->drupalGet('test-page-static-title'); $this->assertSession()->titleEquals('Static title translated | Drupal'); - $result = $this->xpath('//h1[@class="page-title"]'); - $this->assertEquals('Static title translated', $result[0]->getText()); + $this->assertSession()->elementTextEquals('xpath', '//h1[@class="page-title"]', 'Static title translated'); // Test the dynamic '_title_callback' route option. $this->drupalGet('test-page-dynamic-title'); $this->assertSession()->titleEquals('Dynamic title | Drupal'); - $result = $this->xpath('//h1[@class="page-title"]'); - $this->assertEquals('Dynamic title', $result[0]->getText()); + $this->assertSession()->elementTextEquals('xpath', '//h1[@class="page-title"]', 'Dynamic title'); // Ensure that titles are cacheable and are escaped normally if the // controller does not escape them. diff --git a/web/core/modules/system/tests/src/Functional/Theme/HtmlAttributesTest.php b/web/core/modules/system/tests/src/Functional/Theme/HtmlAttributesTest.php index 91799ae11bfd004b5348569e14dddfb67ac8420c..39dff899a5a607d3222fdd3e75586380cd11d8ad 100644 --- a/web/core/modules/system/tests/src/Functional/Theme/HtmlAttributesTest.php +++ b/web/core/modules/system/tests/src/Functional/Theme/HtmlAttributesTest.php @@ -29,8 +29,7 @@ class HtmlAttributesTest extends BrowserTestBase { public function testThemeHtmlAttributes() { $this->drupalGet(''); $this->assertSession()->responseContains('<html lang="en" dir="ltr" theme_test_html_attribute="theme test html attribute value">'); - $attributes = $this->xpath('/body[@theme_test_body_attribute="theme test body attribute value"]'); - $this->assertCount(1, $attributes, "Attribute set in the 'body' element via hook_preprocess_HOOK() found."); + $this->assertSession()->elementsCount('xpath', '/body[@theme_test_body_attribute="theme test body attribute value"]', 1); } } diff --git a/web/core/modules/system/tests/src/Functional/Theme/ThemeInfoTest.php b/web/core/modules/system/tests/src/Functional/Theme/ThemeInfoTest.php index 93242b6d8ebadef25870885a9431ea86de69a60a..4cf969cf3bd7bd81e463e5add79b4d950061256d 100644 --- a/web/core/modules/system/tests/src/Functional/Theme/ThemeInfoTest.php +++ b/web/core/modules/system/tests/src/Functional/Theme/ThemeInfoTest.php @@ -71,16 +71,16 @@ public function testStylesheets() { // should work nevertheless. $this->drupalGet('theme-test/info/stylesheets'); - $this->assertCount(1, $this->xpath('//link[contains(@href, :href)]', [':href' => "$base/base-add.css"]), "$base/base-add.css found"); - $this->assertCount(0, $this->xpath('//link[contains(@href, :href)]', [':href' => "base-remove.css"]), "base-remove.css not found"); + $this->assertSession()->elementsCount('xpath', '//link[contains(@href, "' . $base . '/base-add.css")]', 1); + $this->assertSession()->elementNotExists('xpath', '//link[contains(@href, "base-remove.css")]'); - $this->assertCount(1, $this->xpath('//link[contains(@href, :href)]', [':href' => "$sub/sub-add.css"]), "$sub/sub-add.css found"); - $this->assertCount(0, $this->xpath('//link[contains(@href, :href)]', [':href' => "sub-remove.css"]), "sub-remove.css not found"); - $this->assertCount(0, $this->xpath('//link[contains(@href, :href)]', [':href' => "base-add.sub-remove.css"]), "base-add.sub-remove.css not found"); + $this->assertSession()->elementsCount('xpath', '//link[contains(@href, "' . $sub . '/sub-add.css")]', 1); + $this->assertSession()->elementNotExists('xpath', '//link[contains(@href, "sub-remove.css")]'); + $this->assertSession()->elementNotExists('xpath', '//link[contains(@href, "base-add.sub-remove.css")]'); // Verify that CSS files with the same name are loaded from both the base theme and subtheme. - $this->assertCount(1, $this->xpath('//link[contains(@href, :href)]', [':href' => "$base/samename.css"]), "$base/samename.css found"); - $this->assertCount(1, $this->xpath('//link[contains(@href, :href)]', [':href' => "$sub/samename.css"]), "$sub/samename.css found"); + $this->assertSession()->elementsCount('xpath', '//link[contains(@href, "' . $base . '/samename.css")]', 1); + $this->assertSession()->elementsCount('xpath', '//link[contains(@href, "' . $sub . '/samename.css")]', 1); } diff --git a/web/core/modules/system/tests/src/Functional/Theme/ThemeTest.php b/web/core/modules/system/tests/src/Functional/Theme/ThemeTest.php index 326790d4bb37d79a723042284d10795ea253d203..3d27b279486e03fdf2093ee759d4ef7aad632254 100644 --- a/web/core/modules/system/tests/src/Functional/Theme/ThemeTest.php +++ b/web/core/modules/system/tests/src/Functional/Theme/ThemeTest.php @@ -149,8 +149,7 @@ public function testTemplateOverride() { */ public function testPreprocessHtml() { $this->drupalGet(''); - $attributes = $this->xpath('/body[@theme_test_page_variable="Page variable is an array."]'); - $this->assertCount(1, $attributes, 'In template_preprocess_html(), the page variable is still an array (not rendered yet).'); + $this->assertSession()->elementsCount('xpath', '/body[@theme_test_page_variable="Page variable is an array."]', 1); $this->assertSession()->pageTextContains('theme test page bottom markup'); } diff --git a/web/core/modules/tracker/tests/src/Functional/TrackerTest.php b/web/core/modules/tracker/tests/src/Functional/TrackerTest.php index c8d9784cb2e34dd67f5eba325377ba221ecac81b..404053838f26070d0bce2ff99acb5eaf9c2cf81d 100644 --- a/web/core/modules/tracker/tests/src/Functional/TrackerTest.php +++ b/web/core/modules/tracker/tests/src/Functional/TrackerTest.php @@ -483,8 +483,8 @@ public function testTrackerAdminUnpublish() { public function assertHistoryMetadata(int $node_id, int $node_timestamp, int $node_last_comment_timestamp, bool $library_is_present = TRUE): void { $settings = $this->getDrupalSettings(); $this->assertSame($library_is_present, isset($settings['ajaxPageState']) && in_array('tracker/history', explode(',', $settings['ajaxPageState']['libraries'])), 'drupal.tracker-history library is present.'); - $this->assertCount(1, $this->xpath('//table/tbody/tr/td[@data-history-node-id="' . $node_id . '" and @data-history-node-timestamp="' . $node_timestamp . '"]'), 'Tracker table cell contains the data-history-node-id and data-history-node-timestamp attributes for the node.'); - $this->assertCount(1, $this->xpath('//table/tbody/tr/td[@data-history-node-last-comment-timestamp="' . $node_last_comment_timestamp . '"]'), 'Tracker table cell contains the data-history-node-last-comment-timestamp attribute for the node.'); + $this->assertSession()->elementsCount('xpath', '//table/tbody/tr/td[@data-history-node-id="' . $node_id . '" and @data-history-node-timestamp="' . $node_timestamp . '"]', 1); + $this->assertSession()->elementsCount('xpath', '//table/tbody/tr/td[@data-history-node-last-comment-timestamp="' . $node_last_comment_timestamp . '"]', 1); } } diff --git a/web/core/modules/user/tests/src/Functional/UserCancelTest.php b/web/core/modules/user/tests/src/Functional/UserCancelTest.php index 3a4b19826dec0bc34b993d68f576ee627927c154..57b703e40d58d9e8623a25159026ac8685511506 100644 --- a/web/core/modules/user/tests/src/Functional/UserCancelTest.php +++ b/web/core/modules/user/tests/src/Functional/UserCancelTest.php @@ -5,6 +5,7 @@ use Drupal\comment\CommentInterface; use Drupal\comment\Entity\Comment; use Drupal\comment\Tests\CommentTestTrait; +use Drupal\language\Entity\ConfigurableLanguage; use Drupal\node\Entity\Node; use Drupal\node\Entity\NodeType; use Drupal\Tests\BrowserTestBase; @@ -655,4 +656,81 @@ public function testUserDeleteWithContentAndNodeAccess() { $this->assertEmpty($load2); } + /** + * Delete account and anonymize all content and it's translations. + */ + public function testUserAnonymizeTranslations() { + $this->config('user.settings')->set('cancel_method', 'user_cancel_reassign')->save(); + // Create comment field on page. + $this->addDefaultCommentField('node', 'page'); + $user_storage = $this->container->get('entity_type.manager')->getStorage('user'); + + \Drupal::service('module_installer')->install([ + 'language', + 'locale', + ]); + \Drupal::service('router.builder')->rebuildIfNeeded(); + ConfigurableLanguage::createFromLangcode('ur')->save(); + // Rebuild the container to update the default language container variable. + $this->rebuildContainer(); + + $account = $this->drupalCreateUser(['cancel account']); + $this->drupalLogin($account); + $user_storage->resetCache([$account->id()]); + $account = $user_storage->load($account->id()); + + $node = $this->drupalCreateNode(['uid' => $account->id()]); + + // Add a comment to the page. + $comment_subject = $this->randomMachineName(8); + $comment_body = $this->randomMachineName(8); + $comment = Comment::create([ + 'subject' => $comment_subject, + 'comment_body' => $comment_body, + 'entity_id' => $node->id(), + 'entity_type' => 'node', + 'field_name' => 'comment', + 'status' => CommentInterface::PUBLISHED, + 'uid' => $account->id(), + ]); + $comment->save(); + $comment->addTranslation('ur', [ + 'subject' => 'ur ' . $comment->label(), + 'status' => CommentInterface::PUBLISHED, + ])->save(); + + // Attempt to cancel account. + $this->drupalGet('user/' . $account->id() . '/cancel'); + $this->assertSession()->pageTextContains('Are you sure you want to cancel your account?'); + $this->assertSession()->pageTextContains('Your account will be removed and all account information deleted. All of your content will be assigned to the ' . $this->config('user.settings')->get('anonymous') . ' user.'); + + // Confirm account cancellation. + $timestamp = time(); + $this->submitForm([], 'Confirm'); + $this->assertSession()->pageTextContains('A confirmation request to cancel your account has been sent to your email address.'); + + // Confirm account cancellation request. + $this->drupalGet('user/' . $account->id() . "/cancel/confirm/$timestamp/" . user_pass_rehash($account, $timestamp)); + $user_storage->resetCache([$account->id()]); + $this->assertNull($user_storage->load($account->id()), 'User is not found in the database.'); + + // Confirm that user's content has been attributed to anonymous user. + $anonymous_user = User::getAnonymousUser(); + + $storage = \Drupal::entityTypeManager()->getStorage('comment'); + $storage->resetCache([$comment->id()]); + $test_comment = $storage->load($comment->id()); + $this->assertEquals(0, $test_comment->getOwnerId()); + $this->assertTrue($test_comment->isPublished(), 'Comment of the user has been attributed to anonymous user.'); + $this->assertEquals($anonymous_user->getDisplayName(), $test_comment->getAuthorName()); + + $comment_translation = $test_comment->getTranslation('ur'); + $this->assertEquals(0, $comment_translation->getOwnerId()); + $this->assertTrue($comment_translation->isPublished(), 'Comment translation of the user has been attributed to anonymous user.'); + $this->assertEquals($anonymous_user->getDisplayName(), $comment_translation->getAuthorName()); + + // Confirm that the confirmation message made it through to the end user. + $this->assertSession()->responseContains(t('%name has been deleted.', ['%name' => $account->getAccountName()])); + } + } diff --git a/web/core/modules/user/tests/src/Functional/Views/UserFieldsAccessChangeTest.php b/web/core/modules/user/tests/src/Functional/Views/UserFieldsAccessChangeTest.php index beeb2fba7a42fe935a05a4a12cb22a2cabd1d8f5..d96e945217cff3f7f15235ba55bc228c4a829f62 100644 --- a/web/core/modules/user/tests/src/Functional/Views/UserFieldsAccessChangeTest.php +++ b/web/core/modules/user/tests/src/Functional/Views/UserFieldsAccessChangeTest.php @@ -70,15 +70,13 @@ public function testUserNameLink() { // No access, so no link. $this->drupalGet('test_user_fields_access'); $this->assertSession()->pageTextContains($test_user->getAccountName()); - $result = $this->xpath($xpath); - $this->assertCount(0, $result, 'User is not a link'); + $this->assertSession()->elementNotExists('xpath', $xpath); // Assign sub-admin role to grant extra access. $user = $this->drupalCreateUser(['sub-admin']); $this->drupalLogin($user); $this->drupalGet('test_user_fields_access'); - $result = $this->xpath($xpath); - $this->assertCount(1, $result, 'User is a link'); + $this->assertSession()->elementsCount('xpath', $xpath, 1); } } diff --git a/web/core/modules/views/src/Form/ViewsForm.php b/web/core/modules/views/src/Form/ViewsForm.php index 575b92313fc23627480b0d5c630e6a7b98dd4a71..e2bfb1585178ad1313207849a2fca6b1887290b1 100644 --- a/web/core/modules/views/src/Form/ViewsForm.php +++ b/web/core/modules/views/src/Form/ViewsForm.php @@ -148,8 +148,11 @@ public function buildForm(array $form, FormStateInterface $form_state, ViewExecu } $form_state->set(['step_controller', 'views_form_views_form'], 'Drupal\views\Form\ViewsFormMainForm'); - // Add the base form ID. - $form_state->addBuildInfo('base_form_id', $this->getBaseFormId()); + // Views forms without view arguments return the same Base Form ID and + // Form ID. Base form ID should only be added when different. + if ($this->getBaseFormId() !== $this->getFormId()) { + $form_state->addBuildInfo('base_form_id', $this->getBaseFormId()); + } $form = []; diff --git a/web/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php b/web/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php index 3da81eb1a2eec71bd6dea771091a551f66d872de..210609003279a81dc72235e910c6c707a43cd36b 100644 --- a/web/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php +++ b/web/core/modules/views/src/Plugin/views/argument/ArgumentPluginBase.php @@ -954,8 +954,8 @@ public function summaryArgument($data) { * The query results for the row. */ public function summaryName($data) { - $value = $data->{$this->name_alias}; - if (empty($value) && !empty($this->definition['empty field name'])) { + $value = (string) $data->{$this->name_alias}; + if ($value === '' && isset($this->definition['empty field name'])) { $value = $this->definition['empty field name']; } return $value; diff --git a/web/core/modules/views/src/ViewExecutable.php b/web/core/modules/views/src/ViewExecutable.php index 5a7c6307b455737b71403e1dc2e48a60456c4c7d..c9b0459ad5c1c1cbad369f77f6be2984c31b081e 100644 --- a/web/core/modules/views/src/ViewExecutable.php +++ b/web/core/modules/views/src/ViewExecutable.php @@ -340,9 +340,12 @@ class ViewExecutable { public $inited; /** - * The rendered output of the exposed form. + * The render array for the exposed form. * - * @var string + * In cases that the exposed form is rendered as a block this will be an + * empty array. + * + * @var array */ public $exposed_widgets; diff --git a/web/core/modules/views/tests/modules/views_form_test/views_form_test.info.yml b/web/core/modules/views/tests/modules/views_form_test/views_form_test.info.yml new file mode 100644 index 0000000000000000000000000000000000000000..9d642b457fcd71e06ab9ce40d3ba82311238fcfc --- /dev/null +++ b/web/core/modules/views/tests/modules/views_form_test/views_form_test.info.yml @@ -0,0 +1,8 @@ +name: 'Views Form Test' +type: module +description: 'Provides hook to alter views form for testing purposes.' +package: Testing +version: VERSION +dependencies: + - drupal:views + - drupal:media diff --git a/web/core/modules/views/tests/modules/views_form_test/views_form_test.module b/web/core/modules/views/tests/modules/views_form_test/views_form_test.module new file mode 100644 index 0000000000000000000000000000000000000000..678d45153abbc7e8d2f581d4f3d8cbd9266b7728 --- /dev/null +++ b/web/core/modules/views/tests/modules/views_form_test/views_form_test.module @@ -0,0 +1,17 @@ +<?php + +/** + * @file + * Hook implementations for this module. + */ + +use Drupal\Core\Form\FormStateInterface; + +/** + * Implements hook_form_BASE_FORM_ID_alter(). + */ +function views_form_test_form_views_form_media_media_page_list_alter(&$form, FormStateInterface $form_state, $form_id) { + $state = \Drupal::state(); + $count = $state->get('hook_form_BASE_FORM_ID_alter_count', 0); + $state->set('hook_form_BASE_FORM_ID_alter_count', $count + 1); +} diff --git a/web/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_taxonomy_glossary.yml b/web/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_taxonomy_glossary.yml index ffa1becad11aff9680ab8e72a0f6da55e934f0e7..64c7ec98330cfb1b767c944690139c32794d2b93 100644 --- a/web/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_taxonomy_glossary.yml +++ b/web/core/modules/views/tests/modules/views_test_config/test_views/views.view.test_taxonomy_glossary.yml @@ -12,84 +12,34 @@ base_table: taxonomy_term_field_data base_field: tid display: default: - display_plugin: default id: default display_title: Default + display_plugin: default position: 0 display_options: - access: - type: none - options: { } - cache: - type: tag - options: { } - query: - type: views_query - options: - disable_sql_rewrite: false - distinct: false - replica: false - query_comment: '' - query_tags: { } - exposed_form: - type: basic - options: - submit_button: Apply - reset_button: false - reset_button_label: Reset - exposed_sorts_label: 'Sort by' - expose_sort_order: true - sort_asc_label: Asc - sort_desc_label: Desc - pager: - type: mini - options: - items_per_page: 10 - offset: 0 - id: 0 - total_pages: null - expose: - items_per_page: false - items_per_page_label: 'Items per page' - items_per_page_options: '5, 10, 25, 50' - items_per_page_options_all: false - items_per_page_options_all_label: '- All -' - offset: false - offset_label: Offset - tags: - previous: ‹‹ - next: ›› - style: - type: default - row: - type: fields + title: test_taxonomy_glossary fields: name: id: name table: taxonomy_term_field_data field: name + relationship: none + group_type: group + admin_label: '' entity_type: taxonomy_term entity_field: name + plugin_id: term_name label: '' + exclude: false alter: alter_text: false make_link: false absolute: false - trim: false word_boundary: false ellipsis: false strip_tags: false + trim: false html: false - hide_empty: false - empty_zero: false - type: string - settings: - link_to_entity: true - plugin_id: term_name - relationship: none - group_type: group - admin_label: '' - exclude: false element_type: '' element_class: '' element_label_type: '' @@ -99,8 +49,13 @@ display: element_wrapper_class: '' element_default_classes: true empty: '' + hide_empty: false + empty_zero: false hide_alter_empty: true click_sort_column: value + type: string + settings: + link_to_entity: true group_column: value group_columns: { } group_rows: true @@ -112,13 +67,42 @@ display: separator: ', ' field_api_classes: false convert_spaces: false - filters: { } - sorts: { } - title: test_taxonomy_glossary - header: { } - footer: { } + pager: + type: mini + options: + offset: 0 + items_per_page: 10 + total_pages: null + id: 0 + tags: + next: ›› + previous: ‹‹ + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + access: + type: none + options: { } + cache: + type: tag + options: { } empty: { } - relationships: { } + sorts: { } arguments: name: id: name @@ -127,6 +111,9 @@ display: relationship: none group_type: group admin_label: '' + entity_type: taxonomy_term + entity_field: name + plugin_id: string default_action: ignore exception: value: all @@ -141,8 +128,8 @@ display: summary_options: base_path: '' count: true - items_per_page: 25 override: false + items_per_page: 25 summary: sort_order: asc number_of_records: 0 @@ -160,22 +147,102 @@ display: break_phrase: false add_table: false require_value: false + filters: { } + style: + type: default + row: + type: fields + query: + type: views_query + options: + query_comment: '' + disable_sql_rewrite: false + distinct: false + replica: false + query_tags: { } + relationships: { } + header: { } + footer: { } + display_extenders: { } + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url + - url.query_args + tags: { } + attachment_1: + id: attachment_1 + display_title: Attachment + display_plugin: attachment + position: 2 + display_options: + pager: + type: none + options: + offset: 0 + arguments: + name: + id: name + table: taxonomy_term_field_data + field: name + relationship: none + group_type: group + admin_label: '' entity_type: taxonomy_term entity_field: name plugin_id: string + default_action: summary + exception: + value: all + title_enable: false + title: All + title_enable: false + title: '' + default_argument_type: fixed + default_argument_options: + argument: '' + default_argument_skip_url: false + summary_options: + base_path: '' + count: true + override: false + items_per_page: 25 + summary: + sort_order: asc + number_of_records: 0 + format: default_summary + specify_validation: true + validate: + type: none + fail: 'not found' + validate_options: { } + glossary: true + limit: 1 + case: lower + path_case: lower + transform_dash: false + break_phrase: false + add_table: false + require_value: false + defaults: + arguments: false display_extenders: { } + displays: + default: default + page_1: page_1 cache_metadata: max-age: -1 contexts: - 'languages:language_content' - 'languages:language_interface' - url - - url.query_args tags: { } page_1: - display_plugin: page id: page_1 display_title: Page + display_plugin: page position: 1 display_options: display_extenders: { } diff --git a/web/core/modules/views/tests/src/Functional/Handler/AreaTest.php b/web/core/modules/views/tests/src/Functional/Handler/AreaTest.php index 8c516c76efea230527c038e2188e8966d375fcb9..f09bc1caa7538489286a6403db9bf52fbe32649e 100644 --- a/web/core/modules/views/tests/src/Functional/Handler/AreaTest.php +++ b/web/core/modules/views/tests/src/Functional/Handler/AreaTest.php @@ -175,8 +175,7 @@ public function testRenderAreaToken() { $this->drupalGet('admin/structure/views/nojs/handler/test_example_area/default/empty/test_example'); // Test that the list is token present. - $element = $this->xpath('//ul[@class="global-tokens"]'); - $this->assertNotEmpty($element, 'Token list found on the options form.'); + $this->assertSession()->elementExists('xpath', '//ul[@class="global-tokens"]'); $empty_handler = &$view->empty['test_example']; diff --git a/web/core/modules/views/tests/src/Functional/Plugin/ArgumentDefaultTest.php b/web/core/modules/views/tests/src/Functional/Plugin/ArgumentDefaultTest.php index e87372c7ba0ce99e382348ccddfdafc0b24586fe..d4867336be0f723bbde7658079c8644ac35be442 100644 --- a/web/core/modules/views/tests/src/Functional/Plugin/ArgumentDefaultTest.php +++ b/web/core/modules/views/tests/src/Functional/Plugin/ArgumentDefaultTest.php @@ -161,11 +161,10 @@ public function testArgumentDefaultNode() { // the nodes we expect appear in the respective pages. $id = 'view-block-id'; $this->drupalPlaceBlock("views_block:test_argument_default_node-block_1", ['id' => $id]); - $xpath = '//*[@id="block-' . $id . '"]'; $this->drupalGet('node/' . $node1->id()); - $this->assertStringContainsString($node1->getTitle(), $this->xpath($xpath)[0]->getText()); + $this->assertSession()->elementTextContains('xpath', '//*[@id="block-' . $id . '"]', $node1->getTitle()); $this->drupalGet('node/' . $node2->id()); - $this->assertStringContainsString($node2->getTitle(), $this->xpath($xpath)[0]->getText()); + $this->assertSession()->elementTextContains('xpath', '//*[@id="block-' . $id . '"]', $node2->getTitle()); } /** diff --git a/web/core/modules/views/tests/src/Functional/Plugin/DisabledDisplayTest.php b/web/core/modules/views/tests/src/Functional/Plugin/DisabledDisplayTest.php index 6d29f37f613b1c78f493236b54483734d468659b..046e04fbe4233e30394a75ef72d02198c035184c 100644 --- a/web/core/modules/views/tests/src/Functional/Plugin/DisabledDisplayTest.php +++ b/web/core/modules/views/tests/src/Functional/Plugin/DisabledDisplayTest.php @@ -64,8 +64,7 @@ public function testDisabledDisplays() { // Enabled page display should return content. $this->drupalGet('test-disabled-display'); - $result = $this->xpath('//h1[@class="page-title"]'); - $this->assertEquals('test_disabled_display', $result[0]->getText(), 'The enabled page_1 display is accessible.'); + $this->assertSession()->elementTextEquals('xpath', '//h1[@class="page-title"]', 'test_disabled_display'); // Disabled page view should 404. $this->drupalGet('test-disabled-display-2'); @@ -83,8 +82,7 @@ public function testDisabledDisplays() { // Check that the originally disabled page_2 display is now enabled. $this->drupalGet('test-disabled-display-2'); - $result = $this->xpath('//h1[@class="page-title"]'); - $this->assertEquals('test_disabled_display', $result[0]->getText(), 'The enabled page_2 display is accessible.'); + $this->assertSession()->elementTextEquals('xpath', '//h1[@class="page-title"]', 'test_disabled_display'); // Disable each disabled display and save the view. foreach ($display_ids as $display_id) { diff --git a/web/core/modules/views/tests/src/Functional/Plugin/DisplayFeedTest.php b/web/core/modules/views/tests/src/Functional/Plugin/DisplayFeedTest.php index 4665899d97b6ead10ee0a0dd738e889b9239fd6d..2ab8c88b6dd98262ad8b68876ade20ceb90915ed 100644 --- a/web/core/modules/views/tests/src/Functional/Plugin/DisplayFeedTest.php +++ b/web/core/modules/views/tests/src/Functional/Plugin/DisplayFeedTest.php @@ -165,9 +165,8 @@ public function testDisabledFeed() { // Check that the rss header is output on the page display. $this->drupalGet('/test-attached-disabled'); - $feed_header = $this->xpath('//link[@rel="alternate"]'); - $this->assertEquals('application/rss+xml', $feed_header[0]->getAttribute('type'), 'The feed link has the type application/rss+xml.'); - $this->assertStringContainsString('test-attached-disabled.xml', $feed_header[0]->getAttribute('href'), 'Page display contains the correct feed URL.'); + $this->assertSession()->elementAttributeContains('xpath', '//link[@rel="alternate"]', 'type', 'application/rss+xml'); + $this->assertSession()->elementAttributeContains('xpath', '//link[@rel="alternate"]', 'href', 'test-attached-disabled.xml'); // Disable the feed display. $view->displayHandlers->get('feed_1')->setOption('enabled', FALSE); @@ -175,8 +174,7 @@ public function testDisabledFeed() { // Ensure there is no link rel present on the page. $this->drupalGet('/test-attached-disabled'); - $result = $this->xpath('//link[@rel="alternate"]'); - $this->assertEmpty($result, 'Page display does not contain a feed header.'); + $this->assertSession()->elementNotExists('xpath', '//link[@rel="alternate"]'); // Ensure the feed attachment returns 'Not found'. $this->drupalGet('/test-attached-disabled.xml'); diff --git a/web/core/modules/views/tests/src/Functional/Plugin/ExposedFormTest.php b/web/core/modules/views/tests/src/Functional/Plugin/ExposedFormTest.php index 935d72b07817ccb453dee9fe18de3be722bea704..f0616d58ab334793caa321e8de73e8a86abeeee8 100644 --- a/web/core/modules/views/tests/src/Functional/Plugin/ExposedFormTest.php +++ b/web/core/modules/views/tests/src/Functional/Plugin/ExposedFormTest.php @@ -248,9 +248,7 @@ public function testExposedBlock($display) { $this->assertSession()->pageTextMatchesCount(1, '/' . $view->getTitle() . '/'); // Test there is an exposed form in a block. - $xpath = $this->assertSession()->buildXPathQuery('//div[@id=:id]/form/@id', [':id' => Html::getUniqueId('block-' . $block->id())]); - $result = $this->xpath($xpath); - $this->assertCount(1, $result); + $this->assertSession()->elementsCount('xpath', '//div[@id="' . Html::getUniqueId('block-' . $block->id()) . '"]/form/@id', 1); // Test there is not an exposed form in the view page content area. $xpath = $this->assertSession()->buildXPathQuery('//div[@class="view-content"]/form/@id', [ @@ -259,8 +257,9 @@ public function testExposedBlock($display) { $this->assertSession()->elementNotExists('xpath', $xpath); // Test there is only one views exposed form on the page. - $elements = $this->xpath('//form[@id=:id]', [':id' => $this->getExpectedExposedFormId($view)]); - $this->assertCount(1, $elements, 'One exposed form block found.'); + $xpath = '//form[@id="' . $this->getExpectedExposedFormId($view) . '"]'; + $this->assertSession()->elementsCount('xpath', $xpath, 1); + $element = $this->assertSession()->elementExists('xpath', $xpath); // Test that the correct option is selected after form submission. $this->assertCacheContext('url'); @@ -271,13 +270,13 @@ public function testExposedBlock($display) { 'page' => ['page'], ]; foreach ($arguments as $argument => $bundles) { - $elements[0]->find('css', 'select')->selectOption($argument); - $elements[0]->findButton('Apply')->click(); + $element->find('css', 'select')->selectOption($argument); + $element->findButton('Apply')->click(); $this->assertCacheContext('url'); $this->assertTrue($this->assertSession()->optionExists('Content: Type', $argument)->isSelected()); $this->assertNodesExist($bundles); } - $elements[0]->findButton('Reset')->click(); + $element->findButton('Reset')->click(); $this->assertNodesExist($arguments['All']); } diff --git a/web/core/modules/views/tests/src/Functional/Plugin/StyleTableTest.php b/web/core/modules/views/tests/src/Functional/Plugin/StyleTableTest.php index 08a60a87c3370393ff6eb71acbd4b3e1c8c539b6..08755487ce12175ea18bafaeb458b515468946c2 100644 --- a/web/core/modules/views/tests/src/Functional/Plugin/StyleTableTest.php +++ b/web/core/modules/views/tests/src/Functional/Plugin/StyleTableTest.php @@ -41,21 +41,17 @@ protected function setUp($import_test_views = TRUE, $modules = ['views_test_conf public function testAccessibilitySettings() { $this->drupalGet('test-table'); - $result = $this->xpath('//caption/child::text()'); - $this->assertNotEmpty($result, 'The caption appears on the table.'); - $this->assertEquals('caption-text', trim($result[0]->getText())); + $this->assertSession()->elementExists('xpath', '//caption/child::text()'); + $this->assertSession()->elementTextEquals('xpath', '//caption/child::text()', 'caption-text'); - $result = $this->xpath('//summary/child::text()'); - $this->assertNotEmpty($result, 'The summary appears on the table.'); - $this->assertEquals('summary-text', trim($result[0]->getText())); + $this->assertSession()->elementExists('xpath', '//summary/child::text()'); + $this->assertSession()->elementTextEquals('xpath', '//summary/child::text()', 'summary-text'); // Check that the summary has the right accessibility settings. - $summary = $this->xpath('//summary')[0]; - $this->assertTrue($summary->hasAttribute('role')); - $this->assertTrue($summary->hasAttribute('aria-expanded')); + $this->assertSession()->elementAttributeExists('xpath', '//summary', 'role'); + $this->assertSession()->elementAttributeExists('xpath', '//summary', 'aria-expanded'); - $result = $this->xpath('//caption/details/child::text()[normalize-space()]'); - $this->assertNotEmpty($result, 'The table description appears on the table.'); - $this->assertEquals('description-text', trim($result[0]->getText())); + $this->assertSession()->elementExists('xpath', '//caption/details/child::text()[normalize-space()]'); + $this->assertSession()->elementTextEquals('xpath', '//caption/details/child::text()[normalize-space()]', 'description-text'); // Remove the caption and ensure the caption is not displayed anymore. $view = View::load('test_table'); @@ -64,8 +60,7 @@ public function testAccessibilitySettings() { $view->save(); $this->drupalGet('test-table'); - $result = $this->xpath('//caption/child::text()'); - $this->assertEmpty(trim($result[0]->getText()), 'Ensure that the caption disappears.'); + $this->assertSession()->elementTextEquals('xpath', '//caption/child::text()', ''); // Remove the table summary. $display = &$view->getDisplay('default'); @@ -73,8 +68,7 @@ public function testAccessibilitySettings() { $view->save(); $this->drupalGet('test-table'); - $result = $this->xpath('//summary/child::text()'); - $this->assertEmpty($result, 'Ensure that the summary disappears.'); + $this->assertSession()->elementNotExists('xpath', '//summary/child::text()'); // Remove the table description. $display = &$view->getDisplay('default'); @@ -82,8 +76,7 @@ public function testAccessibilitySettings() { $view->save(); $this->drupalGet('test-table'); - $result = $this->xpath('//caption/details/child::text()[normalize-space()]'); - $this->assertEmpty($result, 'Ensure that the description disappears.'); + $this->assertSession()->elementNotExists('xpath', '//caption/details/child::text()[normalize-space()]'); } /** @@ -96,10 +89,8 @@ public function testFieldInColumns() { // Check for class " views-field-job ", because just "views-field-job" won't // do: "views-field-job-1" would also contain "views-field-job". // @see Drupal\system\Tests\Form\ElementTest::testButtonClasses(). - $result = $this->xpath('//tbody/tr/td[contains(concat(" ", @class, " "), " views-field-job ")]'); - $this->assertGreaterThan(0, count($result), 'Ensure there is a td with the class views-field-job'); - $result = $this->xpath('//tbody/tr/td[contains(concat(" ", @class, " "), " views-field-job-1 ")]'); - $this->assertGreaterThan(0, count($result), 'Ensure there is a td with the class views-field-job-1'); + $this->assertSession()->elementExists('xpath', '//tbody/tr/td[contains(concat(" ", @class, " "), " views-field-job ")]'); + $this->assertSession()->elementExists('xpath', '//tbody/tr/td[contains(concat(" ", @class, " "), " views-field-job-1 ")]'); // Combine the second job-column with the first one, with ', ' as separator. $view = View::load('test_table'); @@ -110,12 +101,8 @@ public function testFieldInColumns() { // Ensure that both columns are properly combined. $this->drupalGet('test-table'); - - $result = $this->xpath('//tbody/tr/td[contains(concat(" ", @class, " "), " views-field-job views-field-job-1 ")]'); - $this->assertGreaterThan(0, count($result), 'Ensure that the job column class names are joined into a single column'); - - $result = $this->xpath('//tbody/tr/td[contains(., "Drummer, Drummer")]'); - $this->assertGreaterThan(0, count($result), 'Ensure the job column values are joined into a single column'); + $this->assertSession()->elementExists('xpath', '//tbody/tr/td[contains(concat(" ", @class, " "), " views-field-job views-field-job-1 ")]'); + $this->assertSession()->elementExists('xpath', '//tbody/tr/td[contains(., "Drummer, Drummer")]'); } /** @@ -138,11 +125,8 @@ public function testNumericFieldVisible() { $this->drupalGet('test-table'); - $result = $this->xpath('//tbody/tr/td[contains(., "Baby")]'); - $this->assertGreaterThan(0, count($result), 'Ensure that the baby is found.'); - - $result = $this->xpath('//tbody/tr/td[text()=0]'); - $this->assertGreaterThan(0, count($result), 'Ensure that the baby\'s age is shown'); + $this->assertSession()->elementExists('xpath', '//tbody/tr/td[contains(., "Baby")]'); + $this->assertSession()->elementExists('xpath', '//tbody/tr/td[text()=0]'); } /** @@ -159,9 +143,7 @@ public function testEmptyColumn() { // Test that only one of the job columns still shows. // Ensure that empty column header is hidden. $this->assertSession()->elementsCount('xpath', '//thead/tr/th/a[text()="Job"]', 1); - - $result = $this->xpath('//tbody/tr/td[contains(concat(" ", @class, " "), " views-field-job-1 ")]'); - $this->assertCount(0, $result, 'Ensure the empty table cells are hidden.'); + $this->assertSession()->elementNotExists('xpath', '//tbody/tr/td[contains(concat(" ", @class, " "), " views-field-job-1 ")]'); } /** @@ -212,7 +194,7 @@ public function testGrouping() { // Ensure that we don't find the caption containing unsafe markup. $this->assertSession()->responseNotContains($unsafe_markup); // Ensure that the summary isn't shown. - $this->assertEmpty($this->xpath('//caption/details')); + $this->assertSession()->elementNotExists('xpath', '//caption/details'); // Ensure that all expected captions are found. foreach ($expected_captions as $raw_caption) { diff --git a/web/core/modules/views/tests/src/Functional/TaxonomyGlossaryTest.php b/web/core/modules/views/tests/src/Functional/TaxonomyGlossaryTest.php index f883bb0999a30d1a8e369a6e304c8ad349cb6e50..9113ba80de3fa4310895c43c92598609a357b9a7 100644 --- a/web/core/modules/views/tests/src/Functional/TaxonomyGlossaryTest.php +++ b/web/core/modules/views/tests/src/Functional/TaxonomyGlossaryTest.php @@ -2,6 +2,7 @@ namespace Drupal\Tests\views\Functional; +use Drupal\Core\Url; use Drupal\Tests\taxonomy\Traits\TaxonomyTestTrait; /** @@ -39,6 +40,9 @@ class TaxonomyGlossaryTest extends ViewTestBase { */ protected $taxonomyTerms; + /** + * {@inheritdoc} + */ protected function setUp($import_test_views = TRUE, $modules = ['views_test_config']): void { parent::setUp($import_test_views, $modules); @@ -49,15 +53,44 @@ protected function setUp($import_test_views = TRUE, $modules = ['views_test_conf for ($i = 0; $i < 10; $i++) { $this->taxonomyTerms[] = $this->createTerm($vocabulary); } + $this->taxonomyTerms[] = $this->createTerm($vocabulary, ['name' => '0' . $this->randomMachineName()]); } /** * Tests a taxonomy glossary view. */ public function testTaxonomyGlossaryView() { + $initials = []; + foreach ($this->taxonomyTerms as $term) { + $char = mb_strtolower(substr($term->label(), 0, 1)); + $initials += [$char => 0]; + $initials[$char]++; + } + + $this->drupalGet('test_taxonomy_glossary'); + $assert_session = $this->assertSession(); + + foreach ($initials as $char => $count) { + $href = Url::fromUserInput('/test_taxonomy_glossary/' . $char)->toString(); + + $xpath = $assert_session->buildXPathQuery('//a[@href=:href and normalize-space(text())=:label]', [ + ':href' => $href, + ':label' => $char, + ]); + $link = $assert_session->elementExists('xpath', $xpath); + + // Assert that the expected number of results is indicated in the link. + preg_match("/{$char} \(([0-9]+)\)/", $link->getParent()->getText(), $matches); + $this->assertEquals($count, $matches[1]); + } + + // Check that no other glossary links but the expected ones have been + // rendered. + $assert_session->elementsCount('xpath', '/ancestor::ul//a', count($initials), $link); + // Go the taxonomy glossary page for the first term. $this->drupalGet('test_taxonomy_glossary/' . substr($this->taxonomyTerms[0]->getName(), 0, 1)); - $this->assertSession()->pageTextContains($this->taxonomyTerms[0]->getName()); + $assert_session->pageTextContains($this->taxonomyTerms[0]->getName()); } } diff --git a/web/core/modules/views/tests/src/Functional/ViewsFormAlterTest.php b/web/core/modules/views/tests/src/Functional/ViewsFormAlterTest.php new file mode 100644 index 0000000000000000000000000000000000000000..91177d6941c87bee34937fe4ad4310c81dde179c --- /dev/null +++ b/web/core/modules/views/tests/src/Functional/ViewsFormAlterTest.php @@ -0,0 +1,32 @@ +<?php + +namespace Drupal\Tests\views\Functional; + +/** + * Tests hook_form_BASE_FORM_ID_alter for a ViewsForm. + * + * @group views + */ +class ViewsFormAlterTest extends ViewTestBase { + + /** + * {@inheritdoc} + */ + protected static $modules = ['views_form_test']; + + /** + * {@inheritdoc} + */ + protected $defaultTheme = 'stark'; + + /** + * Tests hook_form_BASE_FORM_ID_alter for a ViewsForm. + */ + public function testViewsFormAlter() { + $this->drupalLogin($this->createUser(['access media overview'])); + $this->drupalGet('admin/content/media'); + $count = $this->container->get('state')->get('hook_form_BASE_FORM_ID_alter_count'); + $this->assertEquals(1, $count, 'hook_form_BASE_FORM_ID_alter was invoked only once'); + } + +} diff --git a/web/core/modules/views/tests/src/Functional/Wizard/PagerTest.php b/web/core/modules/views/tests/src/Functional/Wizard/PagerTest.php index fa8355a7d060ec91577d0d8c0c17efc259aae54c..fb99faa53a8f06d7828d3c1f010f5e63ded1e0e9 100644 --- a/web/core/modules/views/tests/src/Functional/Wizard/PagerTest.php +++ b/web/core/modules/views/tests/src/Functional/Wizard/PagerTest.php @@ -32,15 +32,13 @@ public function testPager() { // This technique for finding the existence of a pager // matches that used in Drupal\views_ui\Tests\PreviewTest.php. - $elements = $this->xpath('//ul[contains(@class, :class)]/li', [':class' => 'pager__items']); - $this->assertNotEmpty($elements, 'Full pager found.'); + $this->assertSession()->elementExists('xpath', '//ul[contains(@class, "pager__items")]/li'); // Make a View that does not have a pager. $path_with_no_pager = 'test-view-without-pager'; $this->createViewAtPath($path_with_no_pager, FALSE); $this->drupalGet($path_with_no_pager); - $elements = $this->xpath('//ul[contains(@class, :class)]/li', [':class' => 'pager__items']); - $this->assertEmpty($elements, 'Full pager not found.'); + $this->assertSession()->elementNotExists('xpath', '//ul[contains(@class, "pager__items")]/li'); } /** diff --git a/web/core/modules/views/tests/src/Functional/Wizard/TaggedWithTest.php b/web/core/modules/views/tests/src/Functional/Wizard/TaggedWithTest.php index 7ba92062fc63d00fd10b97d3e596ce9aef178b55..06e8b501bda67c5ad4ceed77155dee16d3528af2 100644 --- a/web/core/modules/views/tests/src/Functional/Wizard/TaggedWithTest.php +++ b/web/core/modules/views/tests/src/Functional/Wizard/TaggedWithTest.php @@ -269,10 +269,10 @@ public function testTaggedWithByViewReference() { $view['show[type]'] = $this->nodeTypeWithTags->id(); $this->drupalGet('admin/structure/views/add'); $this->submitForm($view, 'Update "of type" choice'); - $this->assertNotEmpty($this->xpath($tags_xpath)); + $this->assertSession()->elementExists('xpath', $tags_xpath); $view['show[type]'] = $this->nodeTypeWithoutTags->id(); $this->submitForm($view, 'Update "of type" choice (2)'); - $this->assertNotEmpty($this->xpath($tags_xpath)); + $this->assertSession()->elementExists('xpath', $tags_xpath); $this->submitForm(['show[tagged_with]' => 'term1'], 'Save and edit'); $this->assertSession()->statusCodeEquals(200); $this->getSession()->getPage()->hasContent('Has taxonomy term (= term1)'); diff --git a/web/core/modules/views_ui/tests/src/Functional/DefaultViewsTest.php b/web/core/modules/views_ui/tests/src/Functional/DefaultViewsTest.php index 09aacc689187d23700c443a969dc10a52524306f..d3bc819d193097eb2666310ffea9ef77267143ef 100644 --- a/web/core/modules/views_ui/tests/src/Functional/DefaultViewsTest.php +++ b/web/core/modules/views_ui/tests/src/Functional/DefaultViewsTest.php @@ -169,32 +169,14 @@ public function testDefaultViews() { * Tests that enabling views moves them to the correct table. */ public function testSplitListing() { - // Build a re-usable xpath query. - $xpath = '//div[@id="views-entity-list"]/div[@class = :status]/table//td/text()[contains(., :title)]'; - - $arguments = [ - ':status' => 'views-list-section enabled', - ':title' => 'test_view_status', - ]; - $this->drupalGet('admin/structure/views'); - - $elements = $this->xpath($xpath, $arguments); - $this->assertCount(0, $elements, 'A disabled view is not found in the enabled views table.'); - - $arguments[':status'] = 'views-list-section disabled'; - $elements = $this->xpath($xpath, $arguments); - $this->assertCount(1, $elements, 'A disabled view is found in the disabled views table.'); + $this->assertSession()->elementNotExists('xpath', '//div[@id="views-entity-list"]/div[@class = "views-list-section enabled"]/table//td/text()[contains(., "test_view_status")]'); + $this->assertSession()->elementsCount('xpath', '//div[@id="views-entity-list"]/div[@class = "views-list-section disabled"]/table//td/text()[contains(., "test_view_status")]', 1); // Enable the view. $this->clickViewsOperationLink('Enable', '/test_view_status/'); - - $elements = $this->xpath($xpath, $arguments); - $this->assertCount(0, $elements, 'After enabling a view, it is not found in the disabled views table.'); - - $arguments[':status'] = 'views-list-section enabled'; - $elements = $this->xpath($xpath, $arguments); - $this->assertCount(1, $elements, 'After enabling a view, it is found in the enabled views table.'); + $this->assertSession()->elementNotExists('xpath', '//div[@id="views-entity-list"]/div[@class = "views-list-section disabled"]/table//td/text()[contains(., "test_view_status")]'); + $this->assertSession()->elementsCount('xpath', '//div[@id="views-entity-list"]/div[@class = "views-list-section enabled"]/table//td/text()[contains(., "test_view_status")]', 1); // Attempt to disable the view by path directly, with no token. $this->drupalGet('admin/structure/views/view/test_view_status/disable'); diff --git a/web/core/modules/views_ui/tests/src/Functional/DisplayCRUDTest.php b/web/core/modules/views_ui/tests/src/Functional/DisplayCRUDTest.php index 6bdd1440503a2c7cdcd294e2fb301aea95f8ca98..579308baf5892d47ee9a9e1211636deea03f3457 100644 --- a/web/core/modules/views_ui/tests/src/Functional/DisplayCRUDTest.php +++ b/web/core/modules/views_ui/tests/src/Functional/DisplayCRUDTest.php @@ -106,8 +106,7 @@ public function testRemoveDisplay() { */ public function testDefaultDisplay() { $this->drupalGet('admin/structure/views/view/test_display'); - $elements = $this->xpath('//*[@id="views-page-1-display-title"]'); - $this->assertCount(1, $elements, 'The page display is loaded as the default display.'); + $this->assertSession()->elementsCount('xpath', '//*[@id="views-page-1-display-title"]', 1); } /** diff --git a/web/core/modules/views_ui/tests/src/Functional/DisplayTest.php b/web/core/modules/views_ui/tests/src/Functional/DisplayTest.php index 8289f8ee5652824c002352bdd8c5952699fc2df5..5467baf0366d90ce2dd0c2f625ec607e01d26e9a 100644 --- a/web/core/modules/views_ui/tests/src/Functional/DisplayTest.php +++ b/web/core/modules/views_ui/tests/src/Functional/DisplayTest.php @@ -56,9 +56,9 @@ public function testReorderDisplay() { $view = $this->randomView($view); $this->clickLink('Reorder displays'); - $this->assertNotEmpty($this->xpath('//tr[@id="display-row-default"]'), 'Make sure the default display appears on the reorder listing'); - $this->assertNotEmpty($this->xpath('//tr[@id="display-row-page_1"]'), 'Make sure the page display appears on the reorder listing'); - $this->assertNotEmpty($this->xpath('//tr[@id="display-row-block_1"]'), 'Make sure the block display appears on the reorder listing'); + $this->assertSession()->elementExists('xpath', '//tr[@id="display-row-default"]'); + $this->assertSession()->elementExists('xpath', '//tr[@id="display-row-page_1"]'); + $this->assertSession()->elementExists('xpath', '//tr[@id="display-row-block_1"]'); // Ensure the view displays are in the expected order in configuration. $expected_display_order = ['default', 'block_1', 'page_1']; diff --git a/web/core/modules/views_ui/tests/src/Functional/FieldUITest.php b/web/core/modules/views_ui/tests/src/Functional/FieldUITest.php index 0e0c1e6fa31f1253b25b131eef7dfb2f7aa435e0..02a309048d4402d3feb234453892abf3ff9fc062 100644 --- a/web/core/modules/views_ui/tests/src/Functional/FieldUITest.php +++ b/web/core/modules/views_ui/tests/src/Functional/FieldUITest.php @@ -58,8 +58,7 @@ public function testFieldUI() { $this->assertSession()->elementTextEquals('xpath', "{$xpath}[2]", '{{ id }} == ID'); $this->assertSession()->elementTextEquals('xpath', "{$xpath}[3]", '{{ name }} == Name'); - $result = $this->xpath('//details[@id="edit-options-more"]'); - $this->assertEmpty($result, "Container 'more' is empty and should not be displayed."); + $this->assertSession()->elementNotExists('xpath', '//details[@id="edit-options-more"]'); // Ensure that dialog titles are not escaped. $edit_groupby_url = 'admin/structure/views/nojs/handler/test_view/default/field/name'; diff --git a/web/core/modules/views_ui/tests/src/Functional/FilterNumericWebTest.php b/web/core/modules/views_ui/tests/src/Functional/FilterNumericWebTest.php index 0952c5e1cd3b7cf0aaf4d13295ee9266f0ee075b..62803428f9b2495ff715566a6cbaac4a0a8f7a9b 100644 --- a/web/core/modules/views_ui/tests/src/Functional/FilterNumericWebTest.php +++ b/web/core/modules/views_ui/tests/src/Functional/FilterNumericWebTest.php @@ -144,8 +144,7 @@ public function testFilterNumericUI() { // Make sure the label is visible and that there's no fieldset wrapper. $this->assertSession()->elementsCount('xpath', '//label[contains(@for, "edit-age") and contains(text(), "Age greater than")]', 1); - $fieldset = $this->xpath('//fieldset[contains(@id, "edit-age-wrapper")]'); - $this->assertEmpty($fieldset); + $this->assertSession()->elementNotExists('xpath', '//fieldset[contains(@id, "edit-age-wrapper")]'); } } diff --git a/web/core/modules/views_ui/tests/src/Functional/HandlerTest.php b/web/core/modules/views_ui/tests/src/Functional/HandlerTest.php index 6462e57d3e5d5afea70a4bc8d895ae061fff7621..3f6fef8d92dc9a37a2e76bc48deae63dfe00672e 100644 --- a/web/core/modules/views_ui/tests/src/Functional/HandlerTest.php +++ b/web/core/modules/views_ui/tests/src/Functional/HandlerTest.php @@ -298,8 +298,7 @@ public function testErrorMissingHelp() { * @internal */ public function assertNoDuplicateField(string $field_name, string $entity_type): void { - $elements = $this->xpath('//td[.=:entity_type]/preceding-sibling::td[@class="title" and .=:title]', [':title' => $field_name, ':entity_type' => $entity_type]); - $this->assertCount(1, $elements, $field_name . ' appears just once in ' . $entity_type . '.'); + $this->assertSession()->elementsCount('xpath', '//td[.="' . $entity_type . '"]/preceding-sibling::td[@class="title" and .="' . $field_name . '"]', 1); } } diff --git a/web/core/modules/views_ui/tests/src/Functional/ViewsListTest.php b/web/core/modules/views_ui/tests/src/Functional/ViewsListTest.php index 93f80b3e15df2e2fe05597d3e5c0c627cd8aa8cc..2bbfbdd8b927810a084d5b1261e4c1445b03070d 100644 --- a/web/core/modules/views_ui/tests/src/Functional/ViewsListTest.php +++ b/web/core/modules/views_ui/tests/src/Functional/ViewsListTest.php @@ -74,7 +74,7 @@ public function testViewsListLimit() { $this->drupalGet('admin/structure/views'); // Check that all the rows are listed. - $this->assertCount($limit, $this->xpath('//tbody/tr[contains(@class,"views-ui-list-enabled")]')); + $this->assertSession()->elementsCount('xpath', '//tbody/tr[contains(@class,"views-ui-list-enabled")]', $limit); } } diff --git a/web/core/modules/views_ui/tests/src/FunctionalJavascript/PreviewTest.php b/web/core/modules/views_ui/tests/src/FunctionalJavascript/PreviewTest.php index 8aff640d4440d47ccf14e35140fefad8643a6cb5..0064cca39bb957e5f599edc1f5c7a49f99f5bd60 100644 --- a/web/core/modules/views_ui/tests/src/FunctionalJavascript/PreviewTest.php +++ b/web/core/modules/views_ui/tests/src/FunctionalJavascript/PreviewTest.php @@ -133,8 +133,8 @@ public function testPreviewWithPagersUI() { $this->getPreviewAJAX('test_pager_full_ajax', 'default', 5); // Test that the pager is present and rendered. - $elements = $this->xpath('//ul[contains(@class, :class)]/li', [':class' => 'pager__items']); - $this->assertNotEmpty($elements, 'Full pager found.'); + $elements = $this->xpath('//ul[contains(@class, "pager__items")]/li'); + $this->assertNotEmpty($elements); // Verify elements and links to pages. // We expect to find 5 elements: current page == 1, links to pages 2 and @@ -159,8 +159,8 @@ public function testPreviewWithPagersUI() { $this->clickPreviewLinkAJAX($element, 5); // Test that the pager is present and rendered. - $elements = $this->xpath('//ul[contains(@class, :class)]/li', [':class' => 'pager__items']); - $this->assertNotEmpty($elements, 'Full pager found.'); + $elements = $this->xpath('//ul[contains(@class, "pager__items")]/li'); + $this->assertNotEmpty($elements); // Verify elements and links to pages. // We expect to find 7 elements: links to '<< first' and '< previous' @@ -191,8 +191,8 @@ public function testPreviewWithPagersUI() { $this->getPreviewAJAX('test_mini_pager_ajax', 'default', 3); // Test that the pager is present and rendered. - $elements = $this->xpath('//ul[contains(@class, :class)]/li', [':class' => 'pager__items']); - $this->assertNotEmpty($elements, 'Mini pager found.'); + $elements = $this->xpath('//ul[contains(@class, "pager__items")]/li'); + $this->assertNotEmpty($elements); // Verify elements and links to pages. // We expect to find current pages element with no link, next page element @@ -207,8 +207,8 @@ public function testPreviewWithPagersUI() { $this->clickPreviewLinkAJAX($next_page_link, 3); // Test that the pager is present and rendered. - $elements = $this->xpath('//ul[contains(@class, :class)]/li', [':class' => 'pager__items']); - $this->assertNotEmpty($elements, 'Mini pager found.'); + $elements = $this->xpath('//ul[contains(@class, "pager__items")]/li'); + $this->assertNotEmpty($elements); // Verify elements and links to pages. // We expect to find 3 elements: previous page with a link, current diff --git a/web/core/modules/workspaces/tests/src/Functional/WorkspacesUninstallTest.php b/web/core/modules/workspaces/tests/src/Functional/WorkspacesUninstallTest.php index c40d9cf71a44b479e98f6d8f218fc77950abb565..019870209b9a7d16dbf0ba2326543cd1884a8ea3 100644 --- a/web/core/modules/workspaces/tests/src/Functional/WorkspacesUninstallTest.php +++ b/web/core/modules/workspaces/tests/src/Functional/WorkspacesUninstallTest.php @@ -3,6 +3,7 @@ namespace Drupal\Tests\workspaces\Functional; use Drupal\Tests\BrowserTestBase; +use Drupal\Tests\node\Traits\ContentTypeCreationTrait; /** * Tests uninstalling the Workspaces module. @@ -10,16 +11,12 @@ * @group workspaces */ class WorkspacesUninstallTest extends BrowserTestBase { + use ContentTypeCreationTrait; /** * {@inheritdoc} */ - protected $profile = 'standard'; - - /** - * {@inheritdoc} - */ - protected static $modules = ['workspaces']; + protected static $modules = ['workspaces', 'node']; /** * {@inheritdoc} @@ -30,6 +27,7 @@ class WorkspacesUninstallTest extends BrowserTestBase { * Tests deleting workspace entities and uninstalling Workspaces module. */ public function testUninstallingWorkspace() { + $this->createContentType(['type' => 'article']); $this->drupalLogin($this->rootUser); $this->drupalGet('/admin/modules/uninstall'); $session = $this->assertSession(); diff --git a/web/core/modules/workspaces/workspaces.module b/web/core/modules/workspaces/workspaces.module index 8555a3c4bff1712786a5febb430375e075520e68..0155e25bc3b1395fecfe104cb4aef04fde148d99 100644 --- a/web/core/modules/workspaces/workspaces.module +++ b/web/core/modules/workspaces/workspaces.module @@ -30,7 +30,7 @@ function workspaces_help($route_name, RouteMatchInterface $route_match) { case 'help.page.workspaces': $output = ''; $output .= '<h3>' . t('About') . '</h3>'; - $output .= '<p>' . t('The Workspaces module allows workspaces to be defined and switched between. Content is then assigned to the active workspace when created. For more information, see the <a href=":workspaces">online documentation for the Workspaces module</a>.', [':workspaces' => 'https://www.drupal.org/node/2824024']) . '</p>'; + $output .= '<p>' . t('The Workspaces module allows workspaces to be defined and switched between. Content is then assigned to the active workspace when created. For more information, see the <a href=":workspaces">online documentation for the Workspaces module</a>.', [':workspaces' => 'https://www.drupal.org/docs/8/core/modules/workspace/overview']) . '</p>'; return $output; } } diff --git a/web/core/package.json b/web/core/package.json index 950c9da8e00006c5c50afbc57e0ffea0284630e5..d83ff642ea8cfb501e1dfd0335427ef4dcfb7cb8 100644 --- a/web/core/package.json +++ b/web/core/package.json @@ -39,28 +39,28 @@ "@babel/core": "^7.0.0", "@babel/preset-env": "^7.0.0", "@babel/register": "^7.7.7", - "@ckeditor/ckeditor5-alignment": "35.0.x", - "@ckeditor/ckeditor5-basic-styles": "35.0.x", - "@ckeditor/ckeditor5-block-quote": "35.0.x", - "@ckeditor/ckeditor5-code-block": "35.0.x", - "@ckeditor/ckeditor5-dev-utils": "30.1.x", - "@ckeditor/ckeditor5-editor-classic": "35.0.x", - "@ckeditor/ckeditor5-editor-decoupled": "35.0.x", - "@ckeditor/ckeditor5-essentials": "35.0.x", - "@ckeditor/ckeditor5-heading": "35.0.x", - "@ckeditor/ckeditor5-horizontal-line": "35.0.x", - "@ckeditor/ckeditor5-html-support": "35.0.x", - "@ckeditor/ckeditor5-image": "35.0.x", - "@ckeditor/ckeditor5-indent": "35.0.x", - "@ckeditor/ckeditor5-language": "35.0.x", - "@ckeditor/ckeditor5-link": "35.0.x", - "@ckeditor/ckeditor5-list": "35.0.x", - "@ckeditor/ckeditor5-paste-from-office": "35.0.x", - "@ckeditor/ckeditor5-remove-format": "35.0.x", - "@ckeditor/ckeditor5-source-editing": "35.0.x", - "@ckeditor/ckeditor5-special-characters": "35.0.x", - "@ckeditor/ckeditor5-style": "35.0.x", - "@ckeditor/ckeditor5-table": "35.0.x", + "@ckeditor/ckeditor5-alignment": "~35.1.0", + "@ckeditor/ckeditor5-basic-styles": "~35.1.0", + "@ckeditor/ckeditor5-block-quote": "~35.1.0", + "@ckeditor/ckeditor5-code-block": "~35.1.0", + "@ckeditor/ckeditor5-dev-utils": "~30.4.0", + "@ckeditor/ckeditor5-editor-classic": "~35.1.0", + "@ckeditor/ckeditor5-editor-decoupled": "~35.1.0", + "@ckeditor/ckeditor5-essentials": "~35.1.0", + "@ckeditor/ckeditor5-heading": "~35.1.0", + "@ckeditor/ckeditor5-horizontal-line": "~35.1.0", + "@ckeditor/ckeditor5-html-support": "~35.1.0", + "@ckeditor/ckeditor5-image": "~35.1.0", + "@ckeditor/ckeditor5-indent": "~35.1.0", + "@ckeditor/ckeditor5-language": "~35.1.0", + "@ckeditor/ckeditor5-link": "~35.1.0", + "@ckeditor/ckeditor5-list": "~35.1.0", + "@ckeditor/ckeditor5-paste-from-office": "~35.1.0", + "@ckeditor/ckeditor5-remove-format": "~35.1.0", + "@ckeditor/ckeditor5-source-editing": "~35.1.0", + "@ckeditor/ckeditor5-special-characters": "~35.1.0", + "@ckeditor/ckeditor5-style": "~35.1.0", + "@ckeditor/ckeditor5-table": "~35.1.0", "@drupal/once": "1.0.x", "@popperjs/core": "2.11.x", "babel-plugin-add-header-comment": "^1.0.3", @@ -68,7 +68,7 @@ "chalk": "^4.1.0", "chokidar": "^3.3.1", "chromedriver": "^98.0.1", - "ckeditor5": "35.0.x", + "ckeditor5": "~35.1.0", "cross-env": "^7.0.2", "cross-env": "^7.0.2", "cspell": "^5.0.0", diff --git a/web/core/tests/Drupal/FunctionalJavascriptTests/Ajax/DialogTest.php b/web/core/tests/Drupal/FunctionalJavascriptTests/Ajax/DialogTest.php index de6cd41365a46c4535251b84dfd6acec6d3cc4e2..ef9c6d9b08257ae51bf1c8ce6dc09302c7fde757 100644 --- a/web/core/tests/Drupal/FunctionalJavascriptTests/Ajax/DialogTest.php +++ b/web/core/tests/Drupal/FunctionalJavascriptTests/Ajax/DialogTest.php @@ -172,8 +172,7 @@ public function testDialog() { $this->drupalGet('admin/structure/contact/add'); // Check we get a chunk of the code, we can't test the whole form as form // build id and token with be different. - $contact_form = $this->xpath("//form[@id='contact-form-add-form']"); - $this->assertNotEmpty($contact_form, 'Non-JS entity form page present.'); + $this->assertSession()->elementExists('xpath', "//form[@id='contact-form-add-form']"); // Reset: Return to the dialog links page. $this->drupalGet('ajax-test/dialog'); diff --git a/web/core/tests/Drupal/FunctionalTests/ExistingDrupal8StyleDatabaseConnectionInSettingsPhpTest.php b/web/core/tests/Drupal/FunctionalTests/ExistingDrupal8StyleDatabaseConnectionInSettingsPhpTest.php index 855387f695d58b8c4d14fa68af2775017580ba90..3a8a1342d84c5ec4b529e55c437297791f48c5d3 100644 --- a/web/core/tests/Drupal/FunctionalTests/ExistingDrupal8StyleDatabaseConnectionInSettingsPhpTest.php +++ b/web/core/tests/Drupal/FunctionalTests/ExistingDrupal8StyleDatabaseConnectionInSettingsPhpTest.php @@ -2,6 +2,7 @@ namespace Drupal\FunctionalTests; +use Drupal\Core\Database\Connection; use Drupal\Core\Database\Database; use Drupal\Tests\BrowserTestBase; @@ -35,6 +36,19 @@ protected function setUp(): void { $namespace_search = "'namespace' => 'Drupal\\\\$driver\\\\Driver\\\\Database\\\\$driver',"; $namespace_replace = "'namespace' => 'Drupal\\\\Core\\\\Database\\\\Driver\\\\$driver',"; $contents = str_replace($namespace_search, $namespace_replace, $contents); + + // Add a replica connection to the database settings. + $contents .= "\$databases['default']['replica'][] = array (\n"; + $contents .= " 'database' => 'db',\n"; + $contents .= " 'username' => 'db',\n"; + $contents .= " 'password' => 'db',\n"; + $contents .= " 'prefix' => 'test22806835',\n"; + $contents .= " 'host' => 'db',\n"; + $contents .= " 'port' => 3306,\n"; + $contents .= " $namespace_replace\n"; + $contents .= " 'driver' => 'mysql',\n"; + $contents .= ");\n"; + file_put_contents($filename, $contents); } @@ -56,4 +70,14 @@ public function testExistingDrupal8StyleDatabaseConnectionInSettingsPhp() { $this->assertStringNotContainsString("'autoload' => 'core/modules/$driver/src/Driver/Database/$driver/", $contents); } + /** + * Confirms that the replica database connection works. + */ + public function testReplicaDrupal8StyleDatabaseConnectionInSettingsPhp() { + $this->drupalLogin($this->drupalCreateUser()); + + $replica = Database::getConnection('replica', 'default'); + $this->assertInstanceOf(Connection::class, $replica); + } + } diff --git a/web/core/tests/Drupal/FunctionalTests/Installer/DistributionProfileTranslationTest.php b/web/core/tests/Drupal/FunctionalTests/Installer/DistributionProfileTranslationTest.php index 90c8c4c62c519f50021b93cbdcbb72d09bea29ab..bcbb1a9cb14ac71dc5e54a888443e2e7ba932bdc 100644 --- a/web/core/tests/Drupal/FunctionalTests/Installer/DistributionProfileTranslationTest.php +++ b/web/core/tests/Drupal/FunctionalTests/Installer/DistributionProfileTranslationTest.php @@ -84,8 +84,7 @@ protected function setUpSettings() { $this->translations['Save and continue'] = 'Save and continue de'; // Check the language direction. - $direction = current($this->xpath('/@dir'))->getText(); - $this->assertEquals('ltr', $direction); + $this->assertSession()->elementTextEquals('xpath', '/@dir', 'ltr'); // Verify that the distribution name appears. $this->assertSession()->pageTextContains($this->info['distribution']['name']); diff --git a/web/core/tests/Drupal/FunctionalTests/Installer/InstallerLanguageDirectionTest.php b/web/core/tests/Drupal/FunctionalTests/Installer/InstallerLanguageDirectionTest.php index 4fbf2451c10525179161fda90c0da4b9f392e1aa..044506b6c45064493a404e111a91e6f772b3fba9 100644 --- a/web/core/tests/Drupal/FunctionalTests/Installer/InstallerLanguageDirectionTest.php +++ b/web/core/tests/Drupal/FunctionalTests/Installer/InstallerLanguageDirectionTest.php @@ -36,8 +36,7 @@ protected function setUpLanguage() { $this->translations['Save and continue'] = 'Save and continue Arabic'; // Verify that language direction is right-to-left. - $direction = current($this->xpath('/@dir'))->getText(); - $this->assertEquals('rtl', $direction); + $this->assertSession()->elementTextEquals('xpath', '/@dir', 'rtl'); } /** diff --git a/web/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationQueryTest.php b/web/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationQueryTest.php index fe9da09502595ee5400d9b3fa09c2d2df5ab76a1..3293b1d3ad5e5438ead91ef7d10830202fb33f6e 100644 --- a/web/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationQueryTest.php +++ b/web/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationQueryTest.php @@ -41,8 +41,7 @@ protected function visitInstaller() { $this->translations['Save and continue'] = 'Save and continue de'; // Check the language direction. - $direction = current($this->xpath('/@dir'))->getText(); - $this->assertEquals('ltr', $direction); + $this->assertSession()->elementTextEquals('xpath', '/@dir', 'ltr'); } /** diff --git a/web/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationTest.php b/web/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationTest.php index b8c6aa378f5fdc035da9d30370d65006af32fb3b..f4382e5d4a4e91a43e280f8abe5c690304990e39 100644 --- a/web/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationTest.php +++ b/web/core/tests/Drupal/FunctionalTests/Installer/InstallerTranslationTest.php @@ -40,8 +40,7 @@ protected function setUpLanguage() { $this->translations['Save and continue'] = 'Save and continue de'; // Check the language direction. - $direction = current($this->xpath('/@dir'))->getText(); - $this->assertEquals('ltr', $direction); + $this->assertSession()->elementTextEquals('xpath', '/@dir', 'ltr'); } /** diff --git a/web/core/tests/Drupal/KernelTests/Core/Field/FieldType/PasswordItemTest.php b/web/core/tests/Drupal/KernelTests/Core/Field/FieldType/PasswordItemTest.php index 9b496beed618f71c099afb8d1c41b9f4d3b35074..7cb0a477086770f899a06234b9aa2662a6bc3464 100644 --- a/web/core/tests/Drupal/KernelTests/Core/Field/FieldType/PasswordItemTest.php +++ b/web/core/tests/Drupal/KernelTests/Core/Field/FieldType/PasswordItemTest.php @@ -155,7 +155,7 @@ public function testPreSaveExistingMultipleSpacesString() { $entity->test_field = ' '; $entity->save(); - // @todo Fix this bug in https://www.drupal.org/project/i/3238399. + // @todo Fix this bug in https://www.drupal.org/project/drupal/issues/3238399. $this->assertSame(' ', $entity->test_field->value); } diff --git a/web/core/tests/Drupal/Tests/Core/Block/BlockManagerTest.php b/web/core/tests/Drupal/Tests/Core/Block/BlockManagerTest.php index 3f373fae3e0ad2d2d9b91bb034a40547da60b8c2..8d4d191d009c29911cead3d8dce8149832807a5b 100644 --- a/web/core/tests/Drupal/Tests/Core/Block/BlockManagerTest.php +++ b/web/core/tests/Drupal/Tests/Core/Block/BlockManagerTest.php @@ -11,6 +11,7 @@ use Drupal\Tests\UnitTestCase; use Psr\Log\LoggerInterface; use Drupal\Core\DependencyInjection\ContainerBuilder; +use Drupal\Core\StringTranslation\StringTranslationTrait; /** * @coversDefaultClass \Drupal\Core\Block\BlockManager @@ -19,6 +20,8 @@ */ class BlockManagerTest extends UnitTestCase { + use StringTranslationTrait; + /** * The block manager under test. * @@ -42,6 +45,7 @@ protected function setUp(): void { $container = new ContainerBuilder(); $current_user = $this->prophesize(AccountInterface::class); $container->set('current_user', $current_user->reveal()); + $container->set('string_translation', $this->getStringTranslationStub()); \Drupal::setContainer($container); $cache_backend = $this->prophesize(CacheBackendInterface::class); @@ -55,22 +59,22 @@ protected function setUp(): void { // that are purposefully not in alphabetical order. $discovery->getDefinitions()->willReturn([ 'broken' => [ - 'admin_label' => 'Broken/Missing', - 'category' => 'Block', + 'admin_label' => $this->t('Broken/Missing'), + 'category' => $this->t('Block'), 'class' => Broken::class, 'provider' => 'core', ], 'block1' => [ - 'admin_label' => 'Coconut', - 'category' => 'Group 2', + 'admin_label' => $this->t('Coconut'), + 'category' => $this->t('Group 2'), ], 'block2' => [ - 'admin_label' => 'Apple', - 'category' => 'Group 1', + 'admin_label' => $this->t('Apple'), + 'category' => $this->t('Group 1'), ], 'block3' => [ - 'admin_label' => 'Banana', - 'category' => 'Group 2', + 'admin_label' => $this->t('Banana'), + 'category' => $this->t('Group 2'), ], ]); // Force the discovery object onto the block manager. diff --git a/web/core/tests/Drupal/Tests/Core/Entity/EntityListBuilderTest.php b/web/core/tests/Drupal/Tests/Core/Entity/EntityListBuilderTest.php index cd2a7049d4aa5593005bd6d405e3d89c9d41678b..af87b302fe76e7590e37ce75085622b4fb39bc21 100644 --- a/web/core/tests/Drupal/Tests/Core/Entity/EntityListBuilderTest.php +++ b/web/core/tests/Drupal/Tests/Core/Entity/EntityListBuilderTest.php @@ -16,7 +16,7 @@ use Drupal\Tests\UnitTestCase; /** - * @coversDefaultClass \Drupal\entity_test\EntityTestListBuilder + * @coversDefaultClass \Drupal\Core\Entity\EntityListBuilder * @group Entity */ class EntityListBuilderTest extends UnitTestCase { diff --git a/web/core/tests/Drupal/Tests/Core/Logger/LogMessageParserTest.php b/web/core/tests/Drupal/Tests/Core/Logger/LogMessageParserTest.php index 6e45055b512bd4aeaa74adaf64336b29c2df911a..8d1347bc57fb4d22218bad0423ff6c4539519ad2 100644 --- a/web/core/tests/Drupal/Tests/Core/Logger/LogMessageParserTest.php +++ b/web/core/tests/Drupal/Tests/Core/Logger/LogMessageParserTest.php @@ -63,6 +63,13 @@ public function providerTestParseMessagePlaceholders() { ['message' => 'Test {with} two {{encapsuled}} strings', 'context' => ['with' => 'together', 'encapsuled' => 'awesome']], ['message' => 'Test @with two {@encapsuled} strings', 'context' => ['@with' => 'together', '@encapsuled' => 'awesome']], ], + + // Test removal of unexpected placeholders like ! while allowed + // placeholders beginning with @, % and : are preserved. + [ + ['message' => 'Test placeholder with :url and old !bang parameter', 'context' => [':url' => 'https://drupal.org', '!bang' => 'foo bar']], + ['message' => 'Test placeholder with :url and old !bang parameter', 'context' => [':url' => 'https://drupal.org']], + ], ]; } diff --git a/web/core/themes/claro/claro.info.yml b/web/core/themes/claro/claro.info.yml index bdf31c0e7c3dd1c28da5ae876754a72c4dc92ab4..6032f10bc5dd2d24b590a27540aa7d7febaaffd0 100644 --- a/web/core/themes/claro/claro.info.yml +++ b/web/core/themes/claro/claro.info.yml @@ -173,6 +173,8 @@ ckeditor_stylesheets: - css/theme/ckeditor-frame.css - css/classy/components/media-embed-error.css +ckeditor5-stylesheets: false + regions: header: 'Header' pre_content: 'Pre-content' diff --git a/web/core/themes/olivero/css/components/text-content.css b/web/core/themes/olivero/css/components/text-content.css index b7e1083dd78b21fdde0978532d88ce118e04e1b1..81ea18f74a998b022655f05c12f4c328bcb1b865 100644 --- a/web/core/themes/olivero/css/components/text-content.css +++ b/web/core/themes/olivero/css/components/text-content.css @@ -147,7 +147,7 @@ .text-content blockquote:before, .cke_editable blockquote:before { position: absolute; top: 0; - content: "“"; + content: "\201C"; color: #53b0eb; font-size: 3.375rem; } diff --git a/web/core/themes/olivero/css/components/text-content.pcss.css b/web/core/themes/olivero/css/components/text-content.pcss.css index 648d53733511cd077014c2697af07f7943d4b55d..668d54674c983479dcfedae74168eb968fb5fd2f 100644 --- a/web/core/themes/olivero/css/components/text-content.pcss.css +++ b/web/core/themes/olivero/css/components/text-content.pcss.css @@ -88,7 +88,7 @@ position: absolute; inset-block-start: 0; inset-inline-start: 0; - content: "“"; + content: "\201C"; color: var(--color--blue-70); font-size: 54px; } diff --git a/web/core/themes/olivero/olivero.info.yml b/web/core/themes/olivero/olivero.info.yml index 0143841641bb51263c82ff6bf2d3f8eead024677..19a45e819203dc4d85e3276fa597ea3d983dac60 100644 --- a/web/core/themes/olivero/olivero.info.yml +++ b/web/core/themes/olivero/olivero.info.yml @@ -90,3 +90,5 @@ ckeditor_stylesheets: - css/components/table.css - css/components/text-content.css - css/theme/ckeditor-frame.css + +ckeditor5-stylesheets: false diff --git a/web/core/themes/seven/seven.info.yml b/web/core/themes/seven/seven.info.yml index 82828e9f93a88c959a1bb44532ec12cb47e36fc3..1ceb157b574a08ecce2289c54665a2924017ce0a 100644 --- a/web/core/themes/seven/seven.info.yml +++ b/web/core/themes/seven/seven.info.yml @@ -100,3 +100,4 @@ regions_hidden: ckeditor_stylesheets: - css/classy/components/media-embed-error.css +ckeditor5-stylesheets: false diff --git a/web/core/yarn.lock b/web/core/yarn.lock index 34a3426ea50a292d34185a589c975f624205b6e8..cf42bb57f5a6449caf86a7f2fbe9ad9fb51e7402 100644 --- a/web/core/yarn.lock +++ b/web/core/yarn.lock @@ -17,6 +17,13 @@ dependencies: "@babel/highlight" "^7.16.7" +"@babel/code-frame@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/code-frame/-/code-frame-7.18.6.tgz#3b25d38c89600baa2dcc219edfa88a74eb2c427a" + integrity sha512-TDCmlK5eOvH+eH7cdAFlNXeVJqWIQ7gW9tY1GJIpUtFb6CmjVyq2VM3u71bOyR8CRihcCgMUYoDNyLXao3+70Q== + dependencies: + "@babel/highlight" "^7.18.6" + "@babel/compat-data@^7.13.11", "@babel/compat-data@^7.17.0", "@babel/compat-data@^7.17.10": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/compat-data/-/compat-data-7.17.10.tgz#711dc726a492dfc8be8220028b1b92482362baab" @@ -52,6 +59,15 @@ "@jridgewell/gen-mapping" "^0.1.0" jsesc "^2.5.1" +"@babel/generator@^7.18.13": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.18.13.tgz#59550cbb9ae79b8def15587bdfbaa388c4abf212" + integrity sha512-CkPg8ySSPuHTYPJYo7IRALdqyjM9HCbt/3uOBEFbzyGVP6Mn8bwFPB0jX6982JVNBlYzM1nnPkfjuXSOPtQeEQ== + dependencies: + "@babel/types" "^7.18.13" + "@jridgewell/gen-mapping" "^0.3.2" + jsesc "^2.5.1" + "@babel/helper-annotate-as-pure@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz#bb2339a7534a9c128e3102024c60760a3a7f3862" @@ -119,6 +135,11 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-environment-visitor@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-environment-visitor/-/helper-environment-visitor-7.18.9.tgz#0c0cee9b35d2ca190478756865bb3528422f51be" + integrity sha512-3r/aACDJ3fhQ/EVgFy0hpj8oHyHpQc+LPtJoY9SzTThAsStm4Ptegq92vqKoE3vD706ZVFWITnMnxucw+S9Ipg== + "@babel/helper-explode-assignable-expression@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-explode-assignable-expression/-/helper-explode-assignable-expression-7.16.7.tgz#12a6d8522fdd834f194e868af6354e8650242b7a" @@ -134,6 +155,14 @@ "@babel/template" "^7.16.7" "@babel/types" "^7.17.0" +"@babel/helper-function-name@^7.18.9": + version "7.18.9" + resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.18.9.tgz#940e6084a55dee867d33b4e487da2676365e86b0" + integrity sha512-fJgWlZt7nxGksJS9a0XdSaI4XvpExnNIgRP+rVefWh5U7BL8pPuir6SJUmFKRfjWQ51OtWSzwOxhaH/EBWWc0A== + dependencies: + "@babel/template" "^7.18.6" + "@babel/types" "^7.18.9" + "@babel/helper-hoist-variables@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz#86bcb19a77a509c7b77d0e22323ef588fa58c246" @@ -141,6 +170,13 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-hoist-variables@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-hoist-variables/-/helper-hoist-variables-7.18.6.tgz#d4d2c8fb4baeaa5c68b99cc8245c56554f926678" + integrity sha512-UlJQPkFqFULIcyW5sbzgbkxn2FKRgwWiRexcuaR8RNJRy8+LLveqPjwZV/bwrLZCN0eUHD/x8D0heK1ozuoo6Q== + dependencies: + "@babel/types" "^7.18.6" + "@babel/helper-member-expression-to-functions@^7.16.7", "@babel/helper-member-expression-to-functions@^7.17.7": version "7.17.7" resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.17.7.tgz#a34013b57d8542a8c4ff8ba3f747c02452a4d8c4" @@ -222,11 +258,28 @@ dependencies: "@babel/types" "^7.16.7" +"@babel/helper-split-export-declaration@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.18.6.tgz#7367949bc75b20c6d5a5d4a97bba2824ae8ef075" + integrity sha512-bde1etTx6ZyTmobl9LLMMQsaizFVZrquTEHOqKeQESMKo4PlObf+8+JA25ZsIpZhT/WEd39+vOdLXAFG/nELpA== + dependencies: + "@babel/types" "^7.18.6" + +"@babel/helper-string-parser@^7.18.10": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/helper-string-parser/-/helper-string-parser-7.18.10.tgz#181f22d28ebe1b3857fa575f5c290b1aaf659b56" + integrity sha512-XtIfWmeNY3i4t7t4D2t02q50HvqHybPqW2ki1kosnvWCwuCMeo81Jf0gwr85jy/neUdg5XDdeFE/80DXiO+njw== + "@babel/helper-validator-identifier@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz#e8c602438c4a8195751243da9031d1607d247cad" integrity sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw== +"@babel/helper-validator-identifier@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.18.6.tgz#9c97e30d31b2b8c72a1d08984f2ca9b574d7a076" + integrity sha512-MmetCkz9ej86nJQV+sFCxoGGrUbU3q02kgLciwkrt9QqEB7cP39oKEY0PakknEO0Gu20SskMRi+AYZ3b1TpN9g== + "@babel/helper-validator-option@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz#b203ce62ce5fe153899b617c08957de860de4d23" @@ -260,11 +313,25 @@ chalk "^2.0.0" js-tokens "^4.0.0" +"@babel/highlight@^7.18.6": + version "7.18.6" + resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.18.6.tgz#81158601e93e2563795adcbfbdf5d64be3f2ecdf" + integrity sha512-u7stbOuYjaPezCuLj29hNW1v64M2Md2qupEKP1fHc7WdOA3DgLh37suiSrZYY7haUB7iBeQZ9P1uiRF359do3g== + dependencies: + "@babel/helper-validator-identifier" "^7.18.6" + chalk "^2.0.0" + js-tokens "^4.0.0" + "@babel/parser@^7.16.7", "@babel/parser@^7.17.10": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.17.10.tgz#873b16db82a8909e0fbd7f115772f4b739f6ce78" integrity sha512-n2Q6i+fnJqzOaq2VkdXxy2TCPCWQZHiCo0XqmrCvDWcZQKRyZzYi4Z0yxlBuN0w+r2ZHmre+Q087DSrw3pbJDQ== +"@babel/parser@^7.18.10", "@babel/parser@^7.18.13", "@babel/parser@^7.18.9": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.18.13.tgz#5b2dd21cae4a2c5145f1fbd8ca103f9313d3b7e4" + integrity sha512-dgXcIfMuQ0kgzLB2b9tRZs7TTFFaGM2AbtA4fJgUUYukzGH4jwsS7hzQHEGs67jdehpm22vkgKwvbU+aEflgwg== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.16.7": version "7.16.7" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.16.7.tgz#4eda6d6c2a0aa79c70fa7b6da67763dfe2141050" @@ -875,6 +942,15 @@ "@babel/parser" "^7.16.7" "@babel/types" "^7.16.7" +"@babel/template@^7.18.6": + version "7.18.10" + resolved "https://registry.yarnpkg.com/@babel/template/-/template-7.18.10.tgz#6f9134835970d1dbf0835c0d100c9f38de0c5e71" + integrity sha512-TI+rCtooWHr3QJ27kJxfjutghu44DLnasDMwpDqCXVTal9RLp3RSYNh4NdBrRP2cQAoG9A8juOQl6P6oZG4JxA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/parser" "^7.18.10" + "@babel/types" "^7.18.10" + "@babel/traverse@^7.13.0", "@babel/traverse@^7.16.7", "@babel/traverse@^7.16.8", "@babel/traverse@^7.17.10", "@babel/traverse@^7.17.3", "@babel/traverse@^7.17.9": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.17.10.tgz#1ee1a5ac39f4eac844e6cf855b35520e5eb6f8b5" @@ -891,6 +967,22 @@ debug "^4.1.0" globals "^11.1.0" +"@babel/traverse@^7.18.9": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.18.13.tgz#5ab59ef51a997b3f10c4587d648b9696b6cb1a68" + integrity sha512-N6kt9X1jRMLPxxxPYWi7tgvJRH/rtoU+dbKAPDM44RFHiMH8igdsaSBgFeskhSl/kLWLDUvIh1RXCrTmg0/zvA== + dependencies: + "@babel/code-frame" "^7.18.6" + "@babel/generator" "^7.18.13" + "@babel/helper-environment-visitor" "^7.18.9" + "@babel/helper-function-name" "^7.18.9" + "@babel/helper-hoist-variables" "^7.18.6" + "@babel/helper-split-export-declaration" "^7.18.6" + "@babel/parser" "^7.18.13" + "@babel/types" "^7.18.13" + debug "^4.1.0" + globals "^11.1.0" + "@babel/types@^7.16.0", "@babel/types@^7.16.7", "@babel/types@^7.16.8", "@babel/types@^7.17.0", "@babel/types@^7.17.10", "@babel/types@^7.4.4": version "7.17.10" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.17.10.tgz#d35d7b4467e439fcf06d195f8100e0fea7fc82c4" @@ -899,63 +991,72 @@ "@babel/helper-validator-identifier" "^7.16.7" to-fast-properties "^2.0.0" -"@ckeditor/ckeditor5-alignment@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-35.0.1.tgz#f591d769f8892f864241ae2bf6703913b20aadd3" - integrity sha512-sfNLRQZ5RphFnp6tfXY93rLx4kklqlY1uXPVuh4ZOaa/e3fIU4SBYiy1N4oGtJT6HGf+1BAkTb5ULNyAww+RAw== +"@babel/types@^7.18.10", "@babel/types@^7.18.13", "@babel/types@^7.18.6", "@babel/types@^7.18.9": + version "7.18.13" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.18.13.tgz#30aeb9e514f4100f7c1cb6e5ba472b30e48f519a" + integrity sha512-ePqfTihzW0W6XAU+aMw2ykilisStJfDnsejDCXRchCcMJ4O0+8DhPXf2YUbZ6wjBlsEmZwLK/sPweWtu8hcJYQ== dependencies: - ckeditor5 "^35.0.1" + "@babel/helper-string-parser" "^7.18.10" + "@babel/helper-validator-identifier" "^7.18.6" + to-fast-properties "^2.0.0" + +"@ckeditor/ckeditor5-alignment@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-alignment/-/ckeditor5-alignment-35.1.0.tgz#3cf68f4c3a04e1bf9e356c7bfed4fcbc331b58f1" + integrity sha512-fz7bvP/ma02MYhA0/k4qhHne6zoxNGEUiLpuxw8gbUw1ls+U09EcpumE+6uXta1NfymxKCNm/RDUVrgXfFJ9qg== + dependencies: + ckeditor5 "^35.1.0" -"@ckeditor/ckeditor5-basic-styles@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-35.0.1.tgz#1103152308e46bd8d40c1f55ae60974b81474427" - integrity sha512-Srg5Kbb5Gux+xTu24Wp+R/NbFUTM36bU/hgxSzfERvQgeDAp7TMdf2O/BCLrm6aTVHowgnUOFsH5PgnuG+rxsQ== +"@ckeditor/ckeditor5-basic-styles@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-basic-styles/-/ckeditor5-basic-styles-35.1.0.tgz#4646ef84a46b72b11260c96d213c131aca818aff" + integrity sha512-tqqJoXEqd/sLEwLeO4RfYlGyys9JlXPLQa3s7fQGeqD6iA5WLjBA5GFBoJLFkeSBhSq7OaKmEM5O5i6RjwVkkg== dependencies: - ckeditor5 "^35.0.1" + ckeditor5 "^35.1.0" -"@ckeditor/ckeditor5-block-quote@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-35.0.1.tgz#875f92dddbb4e93ac588ea259ff7700d3ddcc652" - integrity sha512-s4ef9M/1SHAT2e0nK3AHSWmN8CpK5VUfYBa5hXey8QycTaLVxAbOs+jxki6+KJHlozikJ+BxXNj03CWROrR/Tw== +"@ckeditor/ckeditor5-block-quote@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-block-quote/-/ckeditor5-block-quote-35.1.0.tgz#048fdad12d4d59d49e570353d7ab178f3be72e2b" + integrity sha512-6bMsajOYtw7nFAa/wyFPuAwfCmtKtMkkPOh0F1q8mxniaR+vn92mBZO9yP0cjNUWIcE4jSrPF/K0O1euSBpMbQ== dependencies: - ckeditor5 "^35.0.1" + ckeditor5 "^35.1.0" -"@ckeditor/ckeditor5-clipboard@^35.0.1": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-35.0.1.tgz#67ff75947f9d2b00361e20a7f9494fb6a7e93717" - integrity sha512-XHBnR+v+GLXondSrJdpTLT3++0++Ja5gNC2zKdpDx6ykayQVYF0Nry+XoXbbzffnXYnRrWzo++r32ngW39rFUQ== +"@ckeditor/ckeditor5-clipboard@^35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-clipboard/-/ckeditor5-clipboard-35.1.0.tgz#9b7c3d259a7245249fb9a70694752b92eb8deeae" + integrity sha512-LfHDOI7gfQzIKbSgDi429SI75p4Scw+YK6zISTRN2IiNlAfsozjeYltm8O3ab7FFfBI8+TalnEx0gI41TXog0Q== dependencies: - "@ckeditor/ckeditor5-core" "^35.0.1" - "@ckeditor/ckeditor5-engine" "^35.0.1" - "@ckeditor/ckeditor5-utils" "^35.0.1" - "@ckeditor/ckeditor5-widget" "^35.0.1" + "@ckeditor/ckeditor5-core" "^35.1.0" + "@ckeditor/ckeditor5-engine" "^35.1.0" + "@ckeditor/ckeditor5-utils" "^35.1.0" + "@ckeditor/ckeditor5-widget" "^35.1.0" lodash-es "^4.17.11" -"@ckeditor/ckeditor5-code-block@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-35.0.1.tgz#b26df52720b3bc2fbcca09d0c81f958a22b715bc" - integrity sha512-7bfpMoxvSrOhUHocJ6iNZjU9coLqvGHijGPKhR3uiMeaIQ2fjOwniM5pDHRf/sxJfGLUrZCOA6EZYLWO2UjuEA== +"@ckeditor/ckeditor5-code-block@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-code-block/-/ckeditor5-code-block-35.1.0.tgz#d577cd0f50c350d2fcc18a28ab54c0fa53286624" + integrity sha512-I0xxuNsFfoQzg4HU8DVuyOYMz5iKF9iEpMykN55GuIvJy12RAx5p7TIrFcvwZSk0nrdq+ZVOCa7U9YGoELDngA== dependencies: - ckeditor5 "^35.0.1" + ckeditor5 "^35.1.0" -"@ckeditor/ckeditor5-core@^35.0.1": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-core/-/ckeditor5-core-35.0.1.tgz#a189bafc643e7ef995bbf6fa33925a37c3bbe166" - integrity sha512-yLX4WwyKjBbgINfl3wB8nyAtxclmP8FBVWunnHZ+YBq6KryB0uWcplP1Nomz/3uyask6k2YN/rSY0Lu9xJ9uyQ== +"@ckeditor/ckeditor5-core@^35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-core/-/ckeditor5-core-35.1.0.tgz#f6b0906b98a260324d45e2366ca0377cdfdaf5ae" + integrity sha512-yqPP7tEOT/rsxtDf6qvL5Yszmf2MZJJDK426SQryJiKpAEysX+337FEeLpK1silIL+UMejh5Y2/oNr4L+wTRXw== dependencies: - "@ckeditor/ckeditor5-engine" "^35.0.1" - "@ckeditor/ckeditor5-ui" "^35.0.1" - "@ckeditor/ckeditor5-utils" "^35.0.1" + "@ckeditor/ckeditor5-engine" "^35.1.0" + "@ckeditor/ckeditor5-ui" "^35.1.0" + "@ckeditor/ckeditor5-utils" "^35.1.0" lodash-es "^4.17.15" -"@ckeditor/ckeditor5-dev-utils@30.1.x", "@ckeditor/ckeditor5-dev-utils@^30.1.3": - version "30.1.3" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-utils/-/ckeditor5-dev-utils-30.1.3.tgz#c44decc3346784fa824074ef5158d98ec4e8467d" - integrity sha512-e1oRXBxe0PWJcfh4CW0ZPeDNpqGDazMX2s17GrJ5bQHjbbY70KJmHWyKwjf75T2eTihEtRxlX/2D87I4XVJ2iw== +"@ckeditor/ckeditor5-dev-utils@^30.4.0", "@ckeditor/ckeditor5-dev-utils@~30.4.0": + version "30.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-utils/-/ckeditor5-dev-utils-30.4.0.tgz#8165169fbe9fba2533034663b28a2eb54a77f946" + integrity sha512-FCuRQ5MzrJeWWKUULil6iI+ylzI0kZ2PqXBME66KZS9KIE7UEKabSAAJGmtc7xFCuGmbik6g2uAk3J0t+PWHjQ== dependencies: - "@ckeditor/ckeditor5-dev-webpack-plugin" "^30.1.3" - acorn "^6.2.1" - acorn-walk "^6.2.0" + "@babel/parser" "^7.18.9" + "@babel/traverse" "^7.18.9" + "@ckeditor/ckeditor5-dev-webpack-plugin" "^30.4.0" chalk "^3.0.0" cli-cursor "^3.1.0" cli-spinners "^2.6.1" @@ -976,244 +1077,245 @@ style-loader "^2.0.0" terser-webpack-plugin "^4.2.3" through2 "^3.0.1" + ts-loader "^9.3.0" -"@ckeditor/ckeditor5-dev-webpack-plugin@^30.1.3": - version "30.1.3" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-webpack-plugin/-/ckeditor5-dev-webpack-plugin-30.1.3.tgz#c11fece3d48cade67feb169163a529adaae5da4d" - integrity sha512-05aD8blgLO1iSYYARMkJoq3kJJq8wVgEMlq1i2LKjAeuBie/p5yjiq0H7Da9ITD239sgSLTFMUxg2QtNOM+RkA== +"@ckeditor/ckeditor5-dev-webpack-plugin@^30.4.0": + version "30.4.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-dev-webpack-plugin/-/ckeditor5-dev-webpack-plugin-30.4.0.tgz#d2b46a5be3655bae199ba2adcb79cc47adba952b" + integrity sha512-wXux5YwysXvBw7ynBdt7M5c/0l2PRIpj/wTMK3yHSWo2pQAWMp76O3YNDbh2TdSSyNtFNj6OjCHd7e06lloL9w== dependencies: - "@ckeditor/ckeditor5-dev-utils" "^30.1.3" + "@ckeditor/ckeditor5-dev-utils" "^30.4.0" chalk "^4.0.0" rimraf "^3.0.2" semver "^7.3.4" webpack-sources "^2.0.1" -"@ckeditor/ckeditor5-editor-classic@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-35.0.1.tgz#a62e48ff7d9e55ea3c8188507e122ea130d8e31b" - integrity sha512-74fqF3ACRkFAd/sqQkG+Hq9zTXnBc1DlhQxGl6VRisuEbC9435qNucpEowxUb1DGeuvqv3tOzQbsJkbggx2NBQ== +"@ckeditor/ckeditor5-editor-classic@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-classic/-/ckeditor5-editor-classic-35.1.0.tgz#430c5e893bd2bb80b837b879e7b57481b093a6af" + integrity sha512-cuu0/cxJgReHbnMPdMOw7YWOogS2WwLo6S/WAP5OjHdXRb/oQOGcr+vi4+guRdSMz5YmXjr4lvskYgU4B4dF6A== dependencies: - ckeditor5 "^35.0.1" + ckeditor5 "^35.1.0" lodash-es "^4.17.15" -"@ckeditor/ckeditor5-editor-decoupled@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-35.0.1.tgz#91b9663a4e1b6af454e42d2b93c4e78b50d88492" - integrity sha512-Rn13lgM8ZXIamPvmE4K8PCVCcHVrx4NWbVwHtygr29efviYVFCY7NboZIo1qLGLsW3JFuTEnzkwOociZEVInHw== +"@ckeditor/ckeditor5-editor-decoupled@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-editor-decoupled/-/ckeditor5-editor-decoupled-35.1.0.tgz#1aa25d28b660d05a524bc75142f3f93b1450013c" + integrity sha512-AoPxejFvkz9JigP6rcjuPkDbbdZQc+IR3gcTPG4QXtylGIbYSGlTE8vZcInEO6km3Nsq02dLYjVr7FKpKgJzfw== dependencies: - ckeditor5 "^35.0.1" + ckeditor5 "^35.1.0" lodash-es "^4.17.15" -"@ckeditor/ckeditor5-engine@^35.0.1": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-35.0.1.tgz#6d030fe797fc9955f81d826b355731d548f6b107" - integrity sha512-Jz1sEBnFr06a1ezOqTbydClp9GgK/YL1CyvilCYIOoRiMevr1XMR3slsJCXC8AmHAcDn+PtxSniw+CREFZaTAA== +"@ckeditor/ckeditor5-engine@^35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-engine/-/ckeditor5-engine-35.1.0.tgz#82de6316e9b0c45b40c6928497313597a142a3fa" + integrity sha512-1xyzPkN2N0xzdeVpT53Eqj4Awfbwl6lN3JIpgntBmCOdiZejRZipdPFkbS0ZkhG14aLAV1blbk/ZMJSsOmaTWg== dependencies: - "@ckeditor/ckeditor5-utils" "^35.0.1" + "@ckeditor/ckeditor5-utils" "^35.1.0" lodash-es "^4.17.15" -"@ckeditor/ckeditor5-enter@^35.0.1": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-35.0.1.tgz#9b9f1b6bde08cab0bd64abf14b787f0767c819ba" - integrity sha512-vNJzom2pSWyYrPk+VYjeSOBBeVI0B3P+DW1Vwyd3HfB1NKB7zU6T+7ByWwhvzdsv5xovzB+6X066lmUSV+W1fw== +"@ckeditor/ckeditor5-enter@^35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-enter/-/ckeditor5-enter-35.1.0.tgz#4e61b67c446da5512403656ccaab086b973e1ecd" + integrity sha512-H+6vscBZqzU/Q4/N8so/UJzH2tiGN5cDa/5qbXGr/WwyWDez2Nl2y9bAl7ASB4vhzqr2/1WJ4ckBMGke5zR6pg== dependencies: - "@ckeditor/ckeditor5-core" "^35.0.1" - "@ckeditor/ckeditor5-engine" "^35.0.1" - "@ckeditor/ckeditor5-utils" "^35.0.1" + "@ckeditor/ckeditor5-core" "^35.1.0" + "@ckeditor/ckeditor5-engine" "^35.1.0" + "@ckeditor/ckeditor5-utils" "^35.1.0" -"@ckeditor/ckeditor5-essentials@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-35.0.1.tgz#0461c49c1d097b6c271b1d1e066685e324af7f31" - integrity sha512-uHfup2e2tETnuvJmHgey/JAYMdeK9eIe5VW2Ah4Q8Ndiu/Buajf+PFYWRFrnC8psaYyE3+vdHRwxV3SD/yZeKQ== +"@ckeditor/ckeditor5-essentials@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-essentials/-/ckeditor5-essentials-35.1.0.tgz#42d32a23dc21accd270537f86f7916eb75f55cfc" + integrity sha512-qk09lYvIpWxRfDTdu/W36481PsvumiW3jTLC6Y41KOzjN5QQbC2uXNjaDKSYTWeQJB0xfeCDFl102DF//v4kxA== dependencies: - ckeditor5 "^35.0.1" + ckeditor5 "^35.1.0" -"@ckeditor/ckeditor5-heading@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-35.0.1.tgz#fa935527956a6675f44eb6b78a39a5b2941d94eb" - integrity sha512-Rfc/Pa1EBQZIDFrLlL5HXx1gO3x0ZBq8DfeRlZ4Z6mRlOIzxU6Wj74qWsG6wauVJ1/KVVsghUN4zJ3U26SDaPQ== +"@ckeditor/ckeditor5-heading@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-heading/-/ckeditor5-heading-35.1.0.tgz#a40b5418e2e6e72961e148b605a1f83f524c48d8" + integrity sha512-dempsgWmcD9lLr7OlgsoRxC+GAVafRbweXO0J4RHRFFL+f5lh43Z+sUfuiXM5cGB03YvonSitt3Bizhj2hIxoQ== dependencies: - ckeditor5 "^35.0.1" + ckeditor5 "^35.1.0" -"@ckeditor/ckeditor5-horizontal-line@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-35.0.1.tgz#00bec2cb27a921dd75960fc95739cf691bde3edc" - integrity sha512-1/iXvFgXeVBYfeVWgeqfnWj+fHsxkPeRQbsVBPda+To881gNb90fXudhEXLZ6zWsLDSrkc5ZlQOn3LCYVQ8C7g== +"@ckeditor/ckeditor5-horizontal-line@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-horizontal-line/-/ckeditor5-horizontal-line-35.1.0.tgz#fb7a62e1b20595f03f564ba167917b8aa4970b6b" + integrity sha512-uOFLCmfKvQnS6yUQAhg060Fwvj/VVR9Z9UFrvOxN6ZT3o8GBwfeTkV9ZKkTyaMoHWt/BQgz1amBg7xx83KnDRQ== dependencies: - ckeditor5 "^35.0.1" + ckeditor5 "^35.1.0" -"@ckeditor/ckeditor5-html-support@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-35.0.1.tgz#1525579f16768cff506d4e351891cae6ee6be5c0" - integrity sha512-vBbusluOr27kK3Mu+B+BcD2TBBRw6Pdu88KtlYCMN43rRt5iRRE4NzkfNY7kVeyZGtpAlFOiead8Pfg3j9Vcxw== +"@ckeditor/ckeditor5-html-support@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-html-support/-/ckeditor5-html-support-35.1.0.tgz#2d2842a198b47e836d6d0170383af4ed37bbb66c" + integrity sha512-rNvyGAFAepQIiZ3SSzZ6FDT1mAifllN6VTjllDceJ49uPoDGYRGHIWCw2BU8964Kq7di+m8pwyXZV5hha1Z2Lw== dependencies: - ckeditor5 "^35.0.1" + ckeditor5 "^35.1.0" lodash-es "^4.17.15" -"@ckeditor/ckeditor5-image@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-image/-/ckeditor5-image-35.0.1.tgz#eb39f67c8c7e2bbbf828c623d51dbde29082fa07" - integrity sha512-DQWe8b+wwBkoyXcV16EeZc1+FWoEXQo+/0N5lI5P0g7YYGTak9IGio+yPppyILOeW+U+nXQ3ZYIhOQo+T+3FnA== +"@ckeditor/ckeditor5-image@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-image/-/ckeditor5-image-35.1.0.tgz#93bf632a9d57a84591a2da6e027651f484eed4eb" + integrity sha512-7qqccl2dYX3dl7rnBuRHF1Mxpns6zG9Ink1rlpPMEcuA7NdA9VDglMDCvWYOLSGVObVOM7ecceHYeYhzNSeyrw== dependencies: - "@ckeditor/ckeditor5-ui" "^35.0.1" - ckeditor5 "^35.0.1" + "@ckeditor/ckeditor5-ui" "^35.1.0" + ckeditor5 "^35.1.0" lodash-es "^4.17.15" -"@ckeditor/ckeditor5-indent@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-35.0.1.tgz#e308852c048d163697e56fca646400820a2569de" - integrity sha512-omD5EmhxAVLDRwSiq91NvNDkytF7RixyQrKOLH3XJ3W/ZtK++1fMBF5fyc0DdZdmTJX7B/8cA4paXfI8xNiEhg== +"@ckeditor/ckeditor5-indent@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-indent/-/ckeditor5-indent-35.1.0.tgz#02154e9750d5d9fda6c263798c9962399fe5fca1" + integrity sha512-yYgSBzHlln273S4H1aWfzqoMcb+Fn1yZ976Pj2ouM7bP22d+01ptNGSe6fiEqtmDiUu2gCj9W0tOwI0Oowb6fg== dependencies: - ckeditor5 "^35.0.1" + ckeditor5 "^35.1.0" -"@ckeditor/ckeditor5-language@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-language/-/ckeditor5-language-35.0.1.tgz#5e321fd0684f6eac9757ee09f1ad42a464842246" - integrity sha512-Rgi4MdU32YNvMwGuxx+FHv+fDZ/EXPPrLVMbsxVzIxrTNKyLinzNCDie0re9ZD7cK+bPpEa74dFwdQeLkhwlog== +"@ckeditor/ckeditor5-language@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-language/-/ckeditor5-language-35.1.0.tgz#f6b099dfec789ffaa1e2129f1196a2eb80bcf3f7" + integrity sha512-wpI378uNAiwy65iFM2zCNaOpBs64MS2W3pWaIZS9Y8OUFW6tRNx6RHr31f/KsElfHVfnxaZ4+36XAUN0Bz3LmA== dependencies: - ckeditor5 "^35.0.1" + ckeditor5 "^35.1.0" -"@ckeditor/ckeditor5-link@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-link/-/ckeditor5-link-35.0.1.tgz#745b9e3fa4d8488712d83a3441d4c48b1d973f6f" - integrity sha512-CJus1E3RvnkZ3VgEOsjYCvOePi/f+wlSZgRCrAD1IeUnjgzNMUMvAOO5QSeaR0CqqaBQcFoHRrVtCaBEIk21Yw== +"@ckeditor/ckeditor5-link@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-link/-/ckeditor5-link-35.1.0.tgz#2c67ccf73d993d76c6377c69b8c4f5104c5c0942" + integrity sha512-eoCE96mfW8pAFpP3wE0E83mrg7SVSTnut0szLyWmQSiU63N0KJMKOZy6faImrMEgkdFppfJ966+lgBh4fB+Taw== dependencies: - "@ckeditor/ckeditor5-ui" "^35.0.1" - ckeditor5 "^35.0.1" + "@ckeditor/ckeditor5-ui" "^35.1.0" + ckeditor5 "^35.1.0" lodash-es "^4.17.15" -"@ckeditor/ckeditor5-list@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-list/-/ckeditor5-list-35.0.1.tgz#256629b2b79ef4d475f95b07fe34b2f220a793b7" - integrity sha512-8JaM+GILlTnJvKRJVcm+L7Wxo1lC179no6lfBV5Kyh+PRIWLiQi6gjX12AzRtFgn/tr/VKzfAKGaxf3etFPsFQ== +"@ckeditor/ckeditor5-list@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-list/-/ckeditor5-list-35.1.0.tgz#6247f7d98eb63fcbf512e555c0b95ae723d5f5f8" + integrity sha512-NsGNRhYDI9xNm0wac3sE640LzpUSxQAzi60f2ap8p2pSL2RXpPJ3YA8Z+xmYP4xpJpu1eEcbOUnZDXjsKoct1Q== dependencies: - "@ckeditor/ckeditor5-ui" "^35.0.1" - ckeditor5 "^35.0.1" + "@ckeditor/ckeditor5-ui" "^35.1.0" + ckeditor5 "^35.1.0" -"@ckeditor/ckeditor5-paragraph@^35.0.1": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-35.0.1.tgz#ffe5d20297670ab7ba91a3f09c0b8f50de7e4a14" - integrity sha512-Ga+LWrXKDg6OXyPxBIaemgEfAKJlE40155IKsaeBHYZEVkS7eoDyuB5I3wFsmi8MRDrLwg6GDrBJ8bo/tKqmTg== +"@ckeditor/ckeditor5-paragraph@^35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paragraph/-/ckeditor5-paragraph-35.1.0.tgz#49cb14e713c8e1ad8599e2af33429d0e6a3567c1" + integrity sha512-sgeEoOfaHbskbkYXfeGkakHJ0nfEoXvvhJeCQZn+o4FfJze/H5pvK14KNeiBsLqoLkKVcSMsHhYbEoeu9JNmKA== dependencies: - "@ckeditor/ckeditor5-core" "^35.0.1" - "@ckeditor/ckeditor5-ui" "^35.0.1" - "@ckeditor/ckeditor5-utils" "^35.0.1" + "@ckeditor/ckeditor5-core" "^35.1.0" + "@ckeditor/ckeditor5-ui" "^35.1.0" + "@ckeditor/ckeditor5-utils" "^35.1.0" -"@ckeditor/ckeditor5-paste-from-office@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-35.0.1.tgz#4b315a364de9d627ab9fc810919b2d4ccf1a8162" - integrity sha512-Fib3mlaRdBTyItOkPsvYB+0jW6DzsOEQ3hDuaMmx1Fz0DYPRG/XRQKjLPJcFGXpzIs4EedYHCb9P2M0dLaL5Ww== +"@ckeditor/ckeditor5-paste-from-office@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-paste-from-office/-/ckeditor5-paste-from-office-35.1.0.tgz#64694b9c646d7dfde00ec7b91de4186a0bcbc07b" + integrity sha512-/eu9w3A1XxO2xiMw9bYxf1MGvJwKaxU3G3sm3YpLJA7sWAm27d+PlNoUcfzetJWlD7hjfpt9Yu4+S4Oq8zILYw== dependencies: - ckeditor5 "^35.0.1" + ckeditor5 "^35.1.0" -"@ckeditor/ckeditor5-remove-format@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-35.0.1.tgz#89715167e77ce8e65265b218f686c4d173fe5404" - integrity sha512-UopyZNqS7cA9xed2IUMizyQYPlNBkT37+UDKpcu1yby/6u0cc9UoRkKA48pqdkHMuBVrYZJXqfYTG5IPdCvLAw== +"@ckeditor/ckeditor5-remove-format@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-remove-format/-/ckeditor5-remove-format-35.1.0.tgz#6ec7554457a7fbffce6d3b019e446f9c17aa4dab" + integrity sha512-EZ48pcihnbjQSXHdgq2csi4R0dSLdkGIaGluOcclU27GRpEksdxhag6/SGpw1Sy6q8VnUTMsNicVQALhS6ylyw== dependencies: - ckeditor5 "^35.0.1" + ckeditor5 "^35.1.0" -"@ckeditor/ckeditor5-select-all@^35.0.1": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-35.0.1.tgz#6d8b5d11e82eafb1e9f69884847409639ed29f88" - integrity sha512-I7oPF3LjL7etN1sxtpTshu47BGz6CNYHlLWcvPtU5QB+xvildQU1c5HboReufooZpYb8N898Zi8tHcd4/ij/8w== +"@ckeditor/ckeditor5-select-all@^35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-select-all/-/ckeditor5-select-all-35.1.0.tgz#71faf944319215b11f586f391e31bc7926c12fc7" + integrity sha512-xGYRBiSOfnk2/Ob55CckKdyZ9E1b+e8qIQN6YkQd9Yj3tuyGAKJ9XelOxayqhlVvpD3ctpD/cRomUjSRilz2Pw== dependencies: - "@ckeditor/ckeditor5-core" "^35.0.1" - "@ckeditor/ckeditor5-ui" "^35.0.1" - "@ckeditor/ckeditor5-utils" "^35.0.1" + "@ckeditor/ckeditor5-core" "^35.1.0" + "@ckeditor/ckeditor5-ui" "^35.1.0" + "@ckeditor/ckeditor5-utils" "^35.1.0" -"@ckeditor/ckeditor5-source-editing@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-35.0.1.tgz#4b92ab1212c5819e1c271dca827515e673c88656" - integrity sha512-he1qU3aLZL+G3Bh4ikAsBGMEQz5pdCoTncV3jqrnShrNX9L+mWutYN2x/7w4pjZA08T2HaJ3H0poy8y1eNFBhw== +"@ckeditor/ckeditor5-source-editing@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-source-editing/-/ckeditor5-source-editing-35.1.0.tgz#3f4a3a9f29ba795faa962854aee279e5aa52a9d5" + integrity sha512-lK5vIlplzXDKO8wflEwv9CAXpXGTiAehhkpY2MfcRU53maqvMIH+jA5be/m/TEXDaw0cwAwkIi9XqIy3On3gAg== dependencies: - "@ckeditor/ckeditor5-theme-lark" "^35.0.1" - ckeditor5 "^35.0.1" + "@ckeditor/ckeditor5-theme-lark" "^35.1.0" + ckeditor5 "^35.1.0" -"@ckeditor/ckeditor5-special-characters@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-35.0.1.tgz#f1f76155b8814a0ad13a7d6dcecd743744e29015" - integrity sha512-8cMHVJAkBWIaKtoGbT8uWDW6Ebts72cCVBPyQ0el1SVeMv0jXri577siRkL63xkDq9JkNcp36glj0v2PR34B9A== +"@ckeditor/ckeditor5-special-characters@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-special-characters/-/ckeditor5-special-characters-35.1.0.tgz#2f0d85daa4aa998d342758e296deb99bcd504e69" + integrity sha512-Bgn1mC9I5ekTXfKlqkh4ybJFa2ht0NhC1yw3qXf33zj0C+pGyEc8VKRtRhjsyxfo5/ZCysWV6p7ziP5MWhHWpA== dependencies: - ckeditor5 "^35.0.1" + ckeditor5 "^35.1.0" -"@ckeditor/ckeditor5-style@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-style/-/ckeditor5-style-35.0.1.tgz#1d321d3bef67ba07f8a329d0061b4782ed1aa542" - integrity sha512-Z/GyXt0J+0ua+X2eIRN2dBZU42z60wgS3hLcijIpj8rAz+SnlRQhFJ5hgdz188jwAksoxPR94Vgs4oJU40t8ww== +"@ckeditor/ckeditor5-style@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-style/-/ckeditor5-style-35.1.0.tgz#d6fdfb8d79ebda2b0783a94365a4a6ce619e45f6" + integrity sha512-lTj0//4iWCs/IXGmQNJSZw1ZAaiMfAdUyrRFz7Q99cwqTmrqoVcohj96YoVWu2OAuYC2O4OjKKt1364s82CypA== dependencies: - ckeditor5 "^35.0.1" + ckeditor5 "^35.1.0" -"@ckeditor/ckeditor5-table@35.0.x": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-table/-/ckeditor5-table-35.0.1.tgz#7a1a3c339cd3f74cf7024f15f772bd2c2a9877b5" - integrity sha512-XKZHGn/MbLfxIqdaVKD62DfOBUKPV0MlKhfpc941LENOb2qhqvmixhdlde7vVi+0k1HzumRj1BQFUOVvncAEiA== +"@ckeditor/ckeditor5-table@~35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-table/-/ckeditor5-table-35.1.0.tgz#15b897882f3b074452fa9b063e7e65be21a57922" + integrity sha512-wwreqkavUiGW+k31itgdRrzBUgZVO3IFHvwxITGqPHsRfEPmDaqasowYrZBqHXK5JPcOmkMq8viAfThnVHltqg== dependencies: - ckeditor5 "^35.0.1" + ckeditor5 "^35.1.0" lodash-es "^4.17.15" -"@ckeditor/ckeditor5-theme-lark@^35.0.1": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-35.0.1.tgz#218e2baf8dbc8910ea84b60c87f7b0a78c4d2102" - integrity sha512-OeqBkbq+B60c7Zb53B1shPzzaZTtPedXfmeydSOd7POF/49doHB/EdOnhPByjjy4U2TwCcD3SuROAFplfKNiuQ== +"@ckeditor/ckeditor5-theme-lark@^35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-theme-lark/-/ckeditor5-theme-lark-35.1.0.tgz#30fcfbbbe0f05702a61aac8a5735f13ac08f6b26" + integrity sha512-O5bsW+a2Zq3flHZhKDeTwnuD/2c0Oqw38Xk0FTMb+wksof7da591ls2iCxRyEcP/jnTxTmNQeZJePm682SaZQA== dependencies: - "@ckeditor/ckeditor5-ui" "^35.0.1" + "@ckeditor/ckeditor5-ui" "^35.1.0" -"@ckeditor/ckeditor5-typing@^35.0.1": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-35.0.1.tgz#ea0c008c0da728f51770e2b75bc9b2ef6be77913" - integrity sha512-Yj3f8nv+iXsTxmnlTjFUk+Xcvd9OvtkFqsEgYdRA79TO71Gaigm2CLmi60wf39MtXc/hPCjhPSdvSk01CsNmQQ== +"@ckeditor/ckeditor5-typing@^35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-typing/-/ckeditor5-typing-35.1.0.tgz#f3d5f83e6362fb9f74ab7e8c5e3cea5f507a6632" + integrity sha512-GiOK8MlsfsVRze4+qbNnT3t4FRvnFge6F+l/knxpM07DIf8qdtf1xVvFRL2OfBBGXbBpcQ6W4aqZhWtSUrPJ5Q== dependencies: - "@ckeditor/ckeditor5-core" "^35.0.1" - "@ckeditor/ckeditor5-engine" "^35.0.1" - "@ckeditor/ckeditor5-utils" "^35.0.1" + "@ckeditor/ckeditor5-core" "^35.1.0" + "@ckeditor/ckeditor5-engine" "^35.1.0" + "@ckeditor/ckeditor5-utils" "^35.1.0" lodash-es "^4.17.15" -"@ckeditor/ckeditor5-ui@^35.0.1": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-35.0.1.tgz#3f7b12e7c2af4628afe21b5d41864e1471da7a73" - integrity sha512-JFmHShOQ7tGDFKqH93Ba2U5sZQMOts0ho1OveHeaKpyG3mbsonBofWr/JacF/dpoNBi1pj8I7ssYR4bFVTwO+w== +"@ckeditor/ckeditor5-ui@^35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-ui/-/ckeditor5-ui-35.1.0.tgz#fed659a65c5b9383f0decd8b13c1f3c4de53514d" + integrity sha512-nHi8Y9VBXhtva166PxvtOir+PKigmvpqzq8NPZwwZBsi+REPNy9gg6tWb9UCkwQXpGR1LOX4nEhKa3e1LKJbig== dependencies: - "@ckeditor/ckeditor5-core" "^35.0.1" - "@ckeditor/ckeditor5-utils" "^35.0.1" + "@ckeditor/ckeditor5-core" "^35.1.0" + "@ckeditor/ckeditor5-utils" "^35.1.0" lodash-es "^4.17.15" -"@ckeditor/ckeditor5-undo@^35.0.1": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-35.0.1.tgz#628e8fe89439760b9f158cef81f24d52d50fa640" - integrity sha512-zmO4JXCSd9JMikvjDGSvD3a2dAnlvTWMk2D8PSx5tNTj+MBm6pAbhqimeVdCQheBpAFQjH56ywKFZcYXJsXukA== +"@ckeditor/ckeditor5-undo@^35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-undo/-/ckeditor5-undo-35.1.0.tgz#776e225130dc1a533afc25e7721e1c9dca1d1e25" + integrity sha512-Fe9Iji6odYL0HVM/xzFH4D7Z12K+Qcep6PGsRNks6y3ai11uukTV89WLKSdfzT5jwOq5AKhFdN+mSKPy1qfB/g== dependencies: - "@ckeditor/ckeditor5-core" "^35.0.1" - "@ckeditor/ckeditor5-engine" "^35.0.1" - "@ckeditor/ckeditor5-ui" "^35.0.1" + "@ckeditor/ckeditor5-core" "^35.1.0" + "@ckeditor/ckeditor5-engine" "^35.1.0" + "@ckeditor/ckeditor5-ui" "^35.1.0" -"@ckeditor/ckeditor5-upload@^35.0.1": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-35.0.1.tgz#82325b9f9c2d69d99dd69940960e39eaf4fa53c1" - integrity sha512-h/a7KM/StexPhbwcdjoYz7pcU86QLhNUw9pNdogR4L4OXUeDd0c6V0YWqaqbMc3HtC+N2+5tePwiV4Aw0NalNg== +"@ckeditor/ckeditor5-upload@^35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-upload/-/ckeditor5-upload-35.1.0.tgz#b95158f120084d0eb8e7be9fb87437bcaa5d210f" + integrity sha512-EDa56I4v+MH9EpDavcCrZA+3l9e3bYqPY43GCwy5KP9N6rbar05OaUCMqPXA0ky2eupkae2tjp8MtCUxs/W+Vg== dependencies: - "@ckeditor/ckeditor5-core" "^35.0.1" - "@ckeditor/ckeditor5-ui" "^35.0.1" - "@ckeditor/ckeditor5-utils" "^35.0.1" + "@ckeditor/ckeditor5-core" "^35.1.0" + "@ckeditor/ckeditor5-ui" "^35.1.0" + "@ckeditor/ckeditor5-utils" "^35.1.0" -"@ckeditor/ckeditor5-utils@^35.0.1": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-35.0.1.tgz#7dd71c93e9e9884309fdd448ea90d1ed0df81033" - integrity sha512-H0ec3f963FpLPuLb58p4RbzkgiOYYNk7goNF4XVROZ4Vjf2dcGLJCDhUSHRBwz3cRL/zZ8a/f7HX/PBpYmnWlw== +"@ckeditor/ckeditor5-utils@^35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-utils/-/ckeditor5-utils-35.1.0.tgz#5c56e701de5a38f317d654dc7871095a8aebbe05" + integrity sha512-a13oY43cHzS0uwLB/m6JKXhNNWftcNsUrI2/+UGsUElmFEnJ7aG24iHkdmh62kHY/X5SxowW9hBQR+yb6sKC4w== dependencies: lodash-es "^4.17.15" -"@ckeditor/ckeditor5-widget@^35.0.1": - version "35.0.1" - resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-35.0.1.tgz#353e60462b0a3c31a20bfcb472fec8d286313473" - integrity sha512-+XhPafSq/bRewa/cLddJGhon2lMsP9XuKsitSOogU0/LlyWNhyjcgUB2xPhGzfw5BO+CY1ptDBpgyw0lSxWOOw== - dependencies: - "@ckeditor/ckeditor5-core" "^35.0.1" - "@ckeditor/ckeditor5-engine" "^35.0.1" - "@ckeditor/ckeditor5-enter" "^35.0.1" - "@ckeditor/ckeditor5-typing" "^35.0.1" - "@ckeditor/ckeditor5-ui" "^35.0.1" - "@ckeditor/ckeditor5-utils" "^35.0.1" +"@ckeditor/ckeditor5-widget@^35.1.0": + version "35.1.0" + resolved "https://registry.yarnpkg.com/@ckeditor/ckeditor5-widget/-/ckeditor5-widget-35.1.0.tgz#ecf12655ef91e64c148bac50879cc7ae2fba3160" + integrity sha512-Gi7zWRmcxkGWjx6pbn2HUqUUftVzCMfRX22SmOQOl9GKQmJAQaKtdM/sBnv0kY5DLsWLrI9HAED9TJhT0zuN9w== + dependencies: + "@ckeditor/ckeditor5-core" "^35.1.0" + "@ckeditor/ckeditor5-engine" "^35.1.0" + "@ckeditor/ckeditor5-enter" "^35.1.0" + "@ckeditor/ckeditor5-typing" "^35.1.0" + "@ckeditor/ckeditor5-ui" "^35.1.0" + "@ckeditor/ckeditor5-utils" "^35.1.0" lodash-es "^4.17.15" "@cspell/cspell-bundled-dicts@^5.20.0": @@ -1529,7 +1631,7 @@ "@jridgewell/set-array" "^1.0.0" "@jridgewell/sourcemap-codec" "^1.4.10" -"@jridgewell/gen-mapping@^0.3.0": +"@jridgewell/gen-mapping@^0.3.0", "@jridgewell/gen-mapping@^0.3.2": version "0.3.2" resolved "https://registry.yarnpkg.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.2.tgz#c1aedc61e853f2bb9f5dfe6d4442d3b565b253b9" integrity sha512-mh65xKQAzI6iBcFzwv28KVWSmCkdRBWoOh+bYQGW3+6OZvbbN3TqMGo5hqYxQniRcH9F2VZIoJCm4pa3BPDK/A== @@ -1886,11 +1988,6 @@ acorn-jsx@^5.3.1: resolved "https://registry.yarnpkg.com/acorn-jsx/-/acorn-jsx-5.3.2.tgz#7ed5bb55908b3b2f1bc55c6af1653bada7f07937" integrity sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ== -acorn-walk@^6.2.0: - version "6.2.0" - resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-6.2.0.tgz#123cb8f3b84c2171f1f7fb252615b1c78a6b1a8c" - integrity sha512-7evsyfH1cLOCdAzZAd43Cic04yKydNx0cF+7tiA19p1XnLLPU4dpCQOqpjqwokFe//vS0QqfqqjCS2JkiIs0cA== - acorn-walk@^7.1.1: version "7.2.0" resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-7.2.0.tgz#0de889a601203909b0fbe07b8938dc21d2e967bc" @@ -1901,11 +1998,6 @@ acorn-walk@^8.2.0: resolved "https://registry.yarnpkg.com/acorn-walk/-/acorn-walk-8.2.0.tgz#741210f2e2426454508853a2f44d0ab83b7f69c1" integrity sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA== -acorn@^6.2.1: - version "6.4.2" - resolved "https://registry.yarnpkg.com/acorn/-/acorn-6.4.2.tgz#35866fd710528e92de10cf06016498e47e39e1e6" - integrity sha512-XtGIhXwF8YM8bJhGxG5kXgjkEuNGLTkoYqVE+KMR+aspr4KGYmKYg7yUe3KghyQ9yheNwLnjmzh/7+gfDBmHCQ== - acorn@^7.1.1: version "7.4.1" resolved "https://registry.yarnpkg.com/acorn/-/acorn-7.4.1.tgz#feaed255973d2e77555b83dbc08851a6c63520fa" @@ -2409,23 +2501,23 @@ ci-info@^2.0.0: resolved "https://registry.yarnpkg.com/ci-info/-/ci-info-2.0.0.tgz#67a9e964be31a51e15e5010d58e6f12834002f46" integrity sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ== -ckeditor5@35.0.x, ckeditor5@^35.0.1: - version "35.0.1" - resolved "https://registry.yarnpkg.com/ckeditor5/-/ckeditor5-35.0.1.tgz#0b7a0898deec9bd27148eb0df3b85c07724f1012" - integrity sha512-bJbD06JJAObH5vnCGQsmWkwgGKZluX0rILaZ47E/TBFLuUgEce0yTsmgGBcQUf0OQZ4IwoXt7vv+Y6zO1Ad86Q== - dependencies: - "@ckeditor/ckeditor5-clipboard" "^35.0.1" - "@ckeditor/ckeditor5-core" "^35.0.1" - "@ckeditor/ckeditor5-engine" "^35.0.1" - "@ckeditor/ckeditor5-enter" "^35.0.1" - "@ckeditor/ckeditor5-paragraph" "^35.0.1" - "@ckeditor/ckeditor5-select-all" "^35.0.1" - "@ckeditor/ckeditor5-typing" "^35.0.1" - "@ckeditor/ckeditor5-ui" "^35.0.1" - "@ckeditor/ckeditor5-undo" "^35.0.1" - "@ckeditor/ckeditor5-upload" "^35.0.1" - "@ckeditor/ckeditor5-utils" "^35.0.1" - "@ckeditor/ckeditor5-widget" "^35.0.1" +ckeditor5@^35.1.0, ckeditor5@~35.1.0: + version "35.1.0" + resolved "https://registry.yarnpkg.com/ckeditor5/-/ckeditor5-35.1.0.tgz#4fe60a90d5da69b6e59a97bb8358c536665ee4c4" + integrity sha512-Mk8qPXT1OW1BxwVbDnphJmNww8kodKv48HUqSWBCI5i+hOZ/zXNdBoD48NCYqJ5Lr2rJCvlfZ93t3cc//20hwg== + dependencies: + "@ckeditor/ckeditor5-clipboard" "^35.1.0" + "@ckeditor/ckeditor5-core" "^35.1.0" + "@ckeditor/ckeditor5-engine" "^35.1.0" + "@ckeditor/ckeditor5-enter" "^35.1.0" + "@ckeditor/ckeditor5-paragraph" "^35.1.0" + "@ckeditor/ckeditor5-select-all" "^35.1.0" + "@ckeditor/ckeditor5-typing" "^35.1.0" + "@ckeditor/ckeditor5-ui" "^35.1.0" + "@ckeditor/ckeditor5-undo" "^35.1.0" + "@ckeditor/ckeditor5-upload" "^35.1.0" + "@ckeditor/ckeditor5-utils" "^35.1.0" + "@ckeditor/ckeditor5-widget" "^35.1.0" clean-stack@^2.0.0: version "2.2.0" @@ -3143,6 +3235,14 @@ end-of-stream@^1.1.0: dependencies: once "^1.4.0" +enhanced-resolve@^5.0.0: + version "5.10.0" + resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.10.0.tgz#0dc579c3bb2a1032e357ac45b8f3a6f3ad4fb1e6" + integrity sha512-T0yTFjdpldGY8PmuXXR0PyQ1ufZpEGiHVrp7zHKB7jdR4qlmZHhONVM5AQOAWXuF/w3dnHbEQVrNptJgt7F+cQ== + dependencies: + graceful-fs "^4.2.4" + tapable "^2.2.0" + enhanced-resolve@^5.9.2: version "5.9.3" resolved "https://registry.yarnpkg.com/enhanced-resolve/-/enhanced-resolve-5.9.3.tgz#44a342c012cbc473254af5cc6ae20ebd0aae5d88" @@ -4925,7 +5025,7 @@ merge2@^1.2.3, merge2@^1.3.0, merge2@^1.4.1: resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -micromatch@^4.0.4, micromatch@^4.0.5: +micromatch@^4.0.0, micromatch@^4.0.4, micromatch@^4.0.5: version "4.0.5" resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-4.0.5.tgz#bc8999a7cbbf77cdc89f132f6e467051b49090c6" integrity sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA== @@ -7264,6 +7364,16 @@ trim-newlines@^3.0.0: resolved "https://registry.yarnpkg.com/trim-newlines/-/trim-newlines-3.0.1.tgz#260a5d962d8b752425b32f3a7db0dcacd176c144" integrity sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw== +ts-loader@^9.3.0: + version "9.3.1" + resolved "https://registry.yarnpkg.com/ts-loader/-/ts-loader-9.3.1.tgz#fe25cca56e3e71c1087fe48dc67f4df8c59b22d4" + integrity sha512-OkyShkcZTsTwyS3Kt7a4rsT/t2qvEVQuKCTg4LJmpj9fhFR7ukGdZwV6Qq3tRUkqcXtfGpPR7+hFKHCG/0d3Lw== + dependencies: + chalk "^4.1.0" + enhanced-resolve "^5.0.0" + micromatch "^4.0.0" + semver "^7.3.4" + tsconfig-paths@^3.14.1: version "3.14.1" resolved "https://registry.yarnpkg.com/tsconfig-paths/-/tsconfig-paths-3.14.1.tgz#ba0734599e8ea36c862798e920bcf163277b137a"