Commit ee57c123 authored by Sergey Shadrin's avatar Sergey Shadrin

[#124455] Updated to 9.5.16 core and latest available modules

parent 23bf7627

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

...@@ -19,24 +19,24 @@ ...@@ -19,24 +19,24 @@
*.config text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.config text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.css text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.css text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.dist text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.dist text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.engine text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php *.engine text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php
*.html text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=html *.html text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=html
*.inc text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php *.inc text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php
*.install text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php *.install text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php
*.js text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.js text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.json text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.json text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.lock text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.lock text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.map text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.map text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.md text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.md text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.module text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php *.module text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php
*.php text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php *.php text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php
*.po text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.po text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.profile text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php *.profile text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php
*.script text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.script text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.sh text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php *.sh text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php
*.sql text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.sql text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.svg text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.svg text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.theme text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php *.theme text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php
*.twig text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.twig text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.txt text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.txt text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.xml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.xml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
......
...@@ -24,6 +24,12 @@ ...@@ -24,6 +24,12 @@
* @see http://php.net/manual/en/features.commandline.webserver.php * @see http://php.net/manual/en/features.commandline.webserver.php
*/ */
if (PHP_SAPI !== 'cli-server') {
// Bail out if this is not PHP's Development Server.
header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden');
exit;
}
$url = parse_url($_SERVER['REQUEST_URI']); $url = parse_url($_SERVER['REQUEST_URI']);
if (file_exists(__DIR__ . $url['path'])) { if (file_exists(__DIR__ . $url['path'])) {
// Serve the requested resource as-is. // Serve the requested resource as-is.
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# #
# Protect files and directories from prying eyes. # Protect files and directories from prying eyes.
<FilesMatch "\.(engine|inc|install|make|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\.(?!well-known).*|Entries.*|Repository|Root|Tag|Template|composer\.(json|lock)|web\.config)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig|\.save)$"> <FilesMatch "\.(engine|inc|install|make|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\.(?!well-known).*|Entries.*|Repository|Root|Tag|Template|composer\.(json|lock)|web\.config|yarn\.lock|package\.json)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig|\.save)$">
<IfModule mod_authz_core.c> <IfModule mod_authz_core.c>
Require all denied Require all denied
</IfModule> </IfModule>
...@@ -32,12 +32,17 @@ AddEncoding gzip svgz ...@@ -32,12 +32,17 @@ AddEncoding gzip svgz
php_value assert.active 0 php_value assert.active 0
</IfModule> </IfModule>
# PHP 8, Apache 1 and 2.
<IfModule mod_php.c>
php_value assert.active 0
</IfModule>
# Requires mod_expires to be enabled. # Requires mod_expires to be enabled.
<IfModule mod_expires.c> <IfModule mod_expires.c>
# Enable expirations. # Enable expirations.
ExpiresActive On ExpiresActive On
# Cache all files for 2 weeks after access (A). # Cache all files and redirects for 2 weeks after access (A).
ExpiresDefault A1209600 ExpiresDefault A1209600
<FilesMatch \.php$> <FilesMatch \.php$>
...@@ -116,13 +121,13 @@ AddEncoding gzip svgz ...@@ -116,13 +121,13 @@ AddEncoding gzip svgz
# RewriteBase / # RewriteBase /
# Redirect common PHP files to their new locations. # Redirect common PHP files to their new locations.
RewriteCond %{REQUEST_URI} ^(.*)?/(install.php) [OR] RewriteCond %{REQUEST_URI} ^(.*)?/(install\.php) [OR]
RewriteCond %{REQUEST_URI} ^(.*)?/(rebuild.php) RewriteCond %{REQUEST_URI} ^(.*)?/(rebuild\.php)
RewriteCond %{REQUEST_URI} !core RewriteCond %{REQUEST_URI} !core
RewriteRule ^ %1/core/%2 [L,QSA,R=301] RewriteRule ^ %1/core/%2 [L,QSA,R=301]
# Rewrite install.php during installation to see if mod_rewrite is working # Rewrite install.php during installation to see if mod_rewrite is working
RewriteRule ^core/install.php core/install.php?rewrite=ok [QSA,L] RewriteRule ^core/install\.php core/install.php?rewrite=ok [QSA,L]
# Pass all requests not referring directly to files in the filesystem to # Pass all requests not referring directly to files in the filesystem to
# index.php. # index.php.
...@@ -138,11 +143,11 @@ AddEncoding gzip svgz ...@@ -138,11 +143,11 @@ AddEncoding gzip svgz
# Allow access to PHP files in /core (like authorize.php or install.php): # Allow access to PHP files in /core (like authorize.php or install.php):
RewriteCond %{REQUEST_URI} !/core/[^/]*\.php$ RewriteCond %{REQUEST_URI} !/core/[^/]*\.php$
# Allow access to test-specific PHP files: # Allow access to test-specific PHP files:
RewriteCond %{REQUEST_URI} !/core/modules/system/tests/https?.php RewriteCond %{REQUEST_URI} !/core/modules/system/tests/https?\.php
# Allow access to Statistics module's custom front controller. # Allow access to Statistics module's custom front controller.
# Copy and adapt this rule to directly execute PHP files in contributed or # Copy and adapt this rule to directly execute PHP files in contributed or
# custom modules or to run another PHP application in the same directory. # custom modules or to run another PHP application in the same directory.
RewriteCond %{REQUEST_URI} !/core/modules/statistics/statistics.php$ RewriteCond %{REQUEST_URI} !/core/modules/statistics/statistics\.php$
# Deny access to any other PHP files that do not match the rules above. # Deny access to any other PHP files that do not match the rules above.
# Specifically, disallow autoload.php from being served directly. # Specifically, disallow autoload.php from being served directly.
RewriteRule "^(.+/.*|autoload)\.php($|/)" - [F] RewriteRule "^(.+/.*|autoload)\.php($|/)" - [F]
...@@ -153,12 +158,12 @@ AddEncoding gzip svgz ...@@ -153,12 +158,12 @@ AddEncoding gzip svgz
# Serve gzip compressed CSS files if they exist and the client accepts gzip. # Serve gzip compressed CSS files if they exist and the client accepts gzip.
RewriteCond %{HTTP:Accept-encoding} gzip RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.css $1\.css\.gz [QSA] RewriteRule ^(.*css_[a-zA-Z0-9-_]+)\.css$ $1\.css\.gz [QSA]
# Serve gzip compressed JS files if they exist and the client accepts gzip. # Serve gzip compressed JS files if they exist and the client accepts gzip.
RewriteCond %{HTTP:Accept-encoding} gzip RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.js $1\.js\.gz [QSA] RewriteRule ^(.*js_[a-zA-Z0-9-_]+)\.js$ $1\.js\.gz [QSA]
# Serve correct content types, and prevent double compression. # Serve correct content types, and prevent double compression.
RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1,E=no-brotli:1] RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1,E=no-brotli:1]
......
Please read core/INSTALL.txt for detailed installation instructions for your Please read core/INSTALL.txt for detailed installation instructions for your
Drupal web site. Drupal website.
<img alt="Drupal Logo" src="https://www.drupal.org/files/Wordmark_blue_RGB.png" height="60px">
Drupal is an open source content management platform supporting a variety of
websites ranging from personal weblogs to large community-driven websites. For
more information, visit the Drupal website, [Drupal.org][Drupal.org], and join
the [Drupal community][Drupal community].
## Contributing
Drupal is developed on [Drupal.org][Drupal.org], the home of the international
Drupal community since 2001!
[Drupal.org][Drupal.org] hosts Drupal's [GitLab repository][GitLab repository],
its [issue queue][issue queue], and its [documentation][documentation]. Before
you start working on code, be sure to search the [issue queue][issue queue] and
create an issue if your aren't able to find an existing issue.
Every issue on Drupal.org automatically creates a new community-accessible fork
that you can contribute to. Learn more about the code contribution process on
the [Issue forks & merge requests page][issue forks].
## Usage
For a brief introduction, see [USAGE.txt](/core/USAGE.txt). You can also find
guides, API references, and more by visiting Drupal's [documentation
page][documentation].
You can quickly extend Drupal's core feature set by installing any of its
[thousands of free and open source modules][modules]. With Drupal and its
module ecosystem, you can often build most or all of what your project needs
before writing a single line of code.
## Changelog
Drupal keeps detailed [change records][changelog]. You can search Drupal's
changes for a record of every notable breaking change and new feature since
2011.
## Security
For a list of security announcements, see the [Security advisories
page][Security advisories] (available as [an RSS feed][security RSS]). This
page also describes how to subscribe to these announcements via email.
For information about the Drupal security process, or to find out how to report
a potential security issue to the Drupal security team, see the [Security team
page][security team].
## Need a helping hand?
Visit the [Support page][support] or browse [over a thousand Drupal
providers][service providers] offering design, strategy, development, and
hosting services.
## Legal matters
Know your rights when using Drupal by reading Drupal core's
[license](/core/LICENSE.txt).
Learn about the [Drupal trademark and logo policy here][trademark].
[Drupal.org]: https://www.drupal.org
[Drupal community]: https://www.drupal.org/community
[GitLab repository]: https://git.drupalcode.org/project/drupal
[issue queue]: https://www.drupal.org/project/issues/drupal
[issue forks]: https://www.drupal.org/drupalorg/docs/gitlab-integration/issue-forks-merge-requests
[documentation]: https://www.drupal.org/documentation
[changelog]: https://www.drupal.org/list-changes/drupal
[modules]: https://www.drupal.org/project/project_module
[security advisories]: https://www.drupal.org/security
[security RSS]: https://www.drupal.org/security/rss.xml
[security team]: https://www.drupal.org/drupal-security-team
[service providers]: https://www.drupal.org/drupal-services
[support]: https://www.drupal.org/support
[trademark]: https://www.drupal.com/trademark
...@@ -4,44 +4,46 @@ ...@@ -4,44 +4,46 @@
"type": "project", "type": "project",
"license": "GPL-2.0-or-later", "license": "GPL-2.0-or-later",
"require": { "require": {
"php": ">=8.1.0",
"composer/installers": "^1.7", "composer/installers": "^1.7",
"drupal/admin_toolbar": "^3.2", "cweagans/composer-patches": "^1.7",
"drupal/blazy": "^1.0", "drupal/admin_toolbar": "^3.4",
"drupal/bootstrap": "^3.16", "drupal/blazy": "^3.0",
"drupal/ckeditor_font": "^1.0", "drupal/bootstrap": "^3.31",
"drupal/colorbutton": "^1.3", "drupal/ckeditor_font": "^1.4",
"drupal/config_ignore": "^2.1", "drupal/colorbutton": "^1.5",
"drupal/config_pages": "^2.2", "drupal/config_ignore": "^3.3",
"drupal/config_split": "^1.4", "drupal/config_pages": "^2.15",
"drupal/cookieconsent": "^1.4", "drupal/config_split": "^2.0",
"drupal/core-composer-scaffold": "8.9.9", "drupal/core-composer-scaffold": "9.5.11",
"drupal/core-project-message": "8.9.9", "drupal/core-project-message": "9.5.11",
"drupal/core-recommended": "8.9.9", "drupal/core-recommended": "9.5.11",
"drupal/devel": "^1.2", "drupal/devel": "^5.0",
"drupal/dropzonejs": "^2.0", "drupal/dropzonejs": "^2.10",
"drupal/embed": "^1.0", "drupal/embed": "^1.7",
"drupal/entity_browser": "^2.0", "drupal/entity_browser": "^2.10",
"drupal/entity_embed": "^1.0", "drupal/entity_embed": "^1.6",
"drupal/google_analytics": "^2.3", "drupal/linkit": "^6.0",
"drupal/linkit": "^4.3", "drupal/mailsystem": "^4.4",
"drupal/mailsystem": "^4.1", "drupal/media_bulk_upload": "^3.0",
"drupal/media_bulk_upload": "^1.0",
"drupal/media_entity_browser": "^2.0", "drupal/media_entity_browser": "^2.0",
"drupal/metatag": "^1.7", "drupal/metatag": "^2.0",
"drupal/module_filter": "^3.1", "drupal/module_filter": "^4.1",
"drupal/paragraphs": "^1.5", "drupal/paragraphs": "^1.17",
"drupal/paragraphs_browser": "^1.0", "drupal/paragraphs_browser": "^1.2",
"drupal/paragraphs_browser_previewer": "^1.0", "drupal/paragraphs_browser_previewer": "^2.0",
"drupal/paragraphs_previewer": "^1.2", "drupal/paragraphs_previewer": "^1.9",
"drupal/pathauto": "^1.3", "drupal/pathauto": "^1.12",
"drupal/redirect": "^1.3", "drupal/redirect": "^1.9",
"drupal/slick": "^1.1", "drupal/slick": "^3.0",
"drupal/slick_entityreference": "^1.1", "drupal/slick_entityreference": "^3.0",
"drupal/video_embed_field": "^2.0", "drupal/video_embed_field": "^2.5",
"drupal/webform": "^5.0", "drupal/webform": "^6.2",
"drush/drush": "^9.5", "drush/drush": "^10",
"oomphinc/composer-installers-extender": "^2.0", "oomphinc/composer-installers-extender": "^2.0",
"cweagans/composer-patches": "^1.7" "drupal/cookieconsent": "^1.6",
"drupal/google_analytics": "^4.0",
"drupal/config_filter": "^2.6"
}, },
"minimum-stability": "dev", "minimum-stability": "dev",
"prefer-stable": true, "prefer-stable": true,
...@@ -87,9 +89,6 @@ ...@@ -87,9 +89,6 @@
} }
}, },
"patches": { "patches": {
"drupal/core": {
"Replace icons": "./patches/core/core-icons.patch"
},
"drupal/admin_toolbar": { "drupal/admin_toolbar": {
"Replace icons": "./patches/admin_toolbar/replace-icons.patch" "Replace icons": "./patches/admin_toolbar/replace-icons.patch"
} }
......
This diff is collapsed.
{
"version": "0.1",
"language": "en-US",
"allowCompoundWords": false,
"ignorePaths": [
"**/.*.json",
".*ignore",
"composer.lock",
"assets/vendor/**",
"lib/Drupal/Component/Diff/**",
"lib/Drupal/Component/Transliteration/data/**",
"lib/Drupal/Core/File/MimeType/ExtensionMimeTypeGuesser.php",
"**/LICENSE.txt",
"../**/LICENSE.txt",
"modules/**/Migrate*Test.php",
"modules/aggregator/tests/fixtures/drupal6.php",
"modules/aggregator/tests/fixtures/drupal7.php",
"modules/ckeditor5/js/build/*",
"modules/color/preview.html",
"modules/color/tests/fixtures/drupal7.php",
"modules/color/tests/modules/color_test/themes/color_test_theme/color/preview.html",
"modules/media/tests/fixtures/oembed/*",
"modules/migrate_drupal/tests/fixtures/drupal6.php",
"modules/migrate_drupal/tests/fixtures/drupal7.php",
"modules/rdf/tests/fixtures/drupal7.php",
"modules/search/tests/UnicodeTest.txt",
"modules/system/tests/logo.svgz",
"modules/tracker/tests/fixtures/drupal7.php",
"node_modules/*",
"profiles/demo_umami/modules/demo_umami_content/default_content/languages/es/**/*",
"tests/fixtures/files/*",
"tests/Drupal/Tests/Component/Annotation/Doctrine/**",
"themes/bartik/color/preview.html",
"themes/olivero/fonts/**",
"COPYRIGHT.txt",
"MAINTAINERS.txt",
"package.json",
"yarn.lock",
"misc/cspell/dictionary.txt"
],
"ignoreRegExpList": [
"^msgstr .*",
"!!binary .*",
"%[0-9][0-9A-F]",
"\\Wi18n",
"\\x{[0-9A-F]{4,5}}"
],
"dictionaries": ["drupal","companies", "fonts", "html", "php", "softwareTerms"],
"dictionaryDefinitions": [
{ "name": "drupal", "path": "./misc/cspell/dictionary.txt"}
],
"flagWords": [
"grey",
"hte"
],
"overrides": [
{
"filename": "**/{*.engine,*.inc,*.install,*.module,*.profile,*.theme}",
"languageId": "php"
},
{
"filename": "**/scripts/{*.php.txt, *.sh}",
"languageId": "php"
}
]
}
...@@ -46,6 +46,10 @@ DRUPAL_TEST_CHROMEDRIVER_AUTOSTART=true ...@@ -46,6 +46,10 @@ DRUPAL_TEST_CHROMEDRIVER_AUTOSTART=true
# e.g. `--disable-gpu --headless --no-sandbox`. # e.g. `--disable-gpu --headless --no-sandbox`.
#DRUPAL_TEST_WEBDRIVER_CHROME_ARGS= #DRUPAL_TEST_WEBDRIVER_CHROME_ARGS=
# A list of arguments to pass to Webdriver, separated by spaces
# e.g. `--allowed-ips --disable-dev-shm-usage`.
#DRUPAL_TEST_WEBDRIVER_CLI_ARGS=
############## ##############
# Nightwatch # # Nightwatch #
############## ##############
......
...@@ -3,6 +3,15 @@ node_modules/**/* ...@@ -3,6 +3,15 @@ node_modules/**/*
**/js_test_files/**/* **/js_test_files/**/*
*.js *.js
!*.es6.js !*.es6.js
!modules/ckeditor5/js/ckeditor5_plugins/**/*.js
modules/locale/tests/locale_test.es6.js modules/locale/tests/locale_test.es6.js
!tests/Drupal/Nightwatch/**/*.js !tests/Drupal/Nightwatch/**/*.js
misc/polyfills/array.find.es6.js
misc/polyfills/element.closest.es6.js
misc/polyfills/object.assign.es6.js misc/polyfills/object.assign.es6.js
# Ignore deliberately malformed YAML files.
modules/system/tests/fixtures/HtaccessTest/access_test.yml
modules/system/tests/themes/test_theme_libraries_empty/test_theme_libraries_empty.info.yml
tests/Drupal/Tests/Core/Asset/library_test_files/empty.libraries.yml
tests/Drupal/Tests/Core/Asset/library_test_files/invalid_file.libraries.yml
{
"plugins": [
"jquery"
],
"rules": {
"jquery/no-ajax": 0,
"jquery/no-ajax-events": 2,
"jquery/no-animate": 0,
"jquery/no-attr": 0,
"jquery/no-bind": 2,
"jquery/no-class": 0,
"jquery/no-clone": 0,
"jquery/no-closest": 0,
"jquery/no-css": 0,
"jquery/no-data": 0,
"jquery/no-deferred": 0,
"jquery/no-delegate": 2,
"jquery/no-each": 0,
"jquery/no-extend": 0,
"jquery/no-fade": 0,
"jquery/no-filter": 0,
"jquery/no-find": 0,
"jquery/no-global-eval": 2,
"jquery/no-grep": 2,
"jquery/no-has": 0,
"jquery/no-hide": 0,
"jquery/no-html": 0,
"jquery/no-in-array": 0,
"jquery/no-is-array": 0,
"jquery/no-is-function": 2,
"jquery/no-is": 0,
"jquery/no-load": 2,
"jquery/no-map": 2,
"jquery/no-merge": 2,
"jquery/no-param": 2,
"jquery/no-parent": 0,
"jquery/no-parents": 0,
"jquery/no-parse-html": 0,
"jquery/no-prop": 0,
"jquery/no-proxy": 0,
"jquery/no-ready": 0,
"jquery/no-serialize": 0,
"jquery/no-show": 0,
"jquery/no-size": 2,
"jquery/no-sizzle": 0,
"jquery/no-slide": 0,
"jquery/no-submit": 2,
"jquery/no-text": 2,
"jquery/no-toggle": 0,
"jquery/no-trigger": 0,
"jquery/no-trim": 2,
"jquery/no-val": 2,
"jquery/no-when": 0,
"jquery/no-wrap": 0
}
}
{ {
"extends": [ "extends": [
"airbnb", "airbnb-base",
"plugin:prettier/recommended" "plugin:prettier/recommended",
"plugin:yml/recommended"
], ],
"root": true, "root": true,
"env": { "env": {
...@@ -13,16 +14,19 @@ ...@@ -13,16 +14,19 @@
"Drupal": true, "Drupal": true,
"drupalSettings": true, "drupalSettings": true,
"drupalTranslations": true, "drupalTranslations": true,
"domready": true,
"jQuery": true, "jQuery": true,
"_": true, "_": true,
"matchMedia": true,
"Cookies": true, "Cookies": true,
"Backbone": true, "Backbone": true,
"Modernizr": true, "Modernizr": true,
"loadjs": true,
"Popper": true, "Popper": true,
"Shepherd": true,
"Sortable": true, "Sortable": true,
"CKEDITOR": true "once": true,
"CKEDITOR": true,
"CKEditor5": true,
"tabbable": true
}, },
"rules": { "rules": {
"prettier/prettier": "error", "prettier/prettier": "error",
...@@ -43,6 +47,7 @@ ...@@ -43,6 +47,7 @@
"requireReturn": false "requireReturn": false
}], }],
"no-unused-vars": ["warn"], "no-unused-vars": ["warn"],
"operator-linebreak": ["error", "after", { "overrides": { "?": "ignore", ":": "ignore" } }] "operator-linebreak": ["error", "after", { "overrides": { "?": "ignore", ":": "ignore" } }],
"yml/indent": ["error", 2]
} }
} }
{ {
"extends": "./.eslintrc.json", "extends": [
"./.eslintrc.json",
"./.eslintrc.jquery.json"
],
"rules": { "rules": {
"no-shadow": "off", "no-shadow": "off",
"no-new": "off", "no-new": "off",
...@@ -7,9 +10,10 @@ ...@@ -7,9 +10,10 @@
"new-cap": "off", "new-cap": "off",
"max-len": "off", "max-len": "off",
"default-case": "off", "default-case": "off",
"default-param-last": "off",
"prefer-destructuring": "off", "prefer-destructuring": "off",
"react/no-this-in-sfc": "off", "prefer-regex-literals": "off",
"react/destructuring-assignment": "off", "import/named": "off",
"import/named": "off" "import/no-import-module-exports": "off"
} }
} }
modules/locale/tests/locale_test.es6.js modules/locale/tests/locale_test.es6.js
*.yml
themes/claro/**/*.css themes/claro/**/*.css
!themes/claro/**/*.pcss.css !themes/claro/**/*.pcss.css
themes/olivero/**/*.css
!themes/olivero/**/*.pcss.css
misc/dialog/off-canvas.reset.css
misc/dialog/off-canvas.base.css
themes/stable/css/core/dialog/off-canvas.reset.css
themes/stable/css/core/dialog/off-canvas.base.css
themes/stable9/css/core/dialog/off-canvas.reset.css
themes/stable9/css/core/dialog/off-canvas.base.css
{ {
"extends": "stylelint-config-standard", "extends": "stylelint-config-standard",
"plugins": [ "plugins": [
"stylelint-no-browser-hacks/lib",
"stylelint-order" "stylelint-order"
], ],
"rules": { "rules": {
"alpha-value-notation": "number",
"at-rule-no-vendor-prefix": null,
"color-function-notation": "legacy",
"comment-empty-line-before": null, "comment-empty-line-before": null,
"custom-property-pattern": "^[a-z][-_a-z0-9IE]*$",
"declaration-block-no-redundant-longhand-properties": null,
"function-linear-gradient-no-nonstandard-direction": null, "function-linear-gradient-no-nonstandard-direction": null,
"function-url-quotes": null,
"function-whitespace-after": null, "function-whitespace-after": null,
"hue-degree-notation": "number",
"import-notation": "string",
"no-descending-specificity": null, "no-descending-specificity": null,
"no-duplicate-selectors": null, "no-duplicate-selectors": null,
"no-unknown-animations": true, "no-unknown-animations": true,
"max-line-length": null,
"media-feature-name-no-unknown": [true, { "media-feature-name-no-unknown": [true, {
"ignoreMediaFeatureNames": [ "ignoreMediaFeatureNames": [
"prefers-reduced-motion", "prefers-reduced-motion",
"min--moz-device-pixel-ratio" "min--moz-device-pixel-ratio"
] ]
}], }],
"media-feature-name-no-vendor-prefix": null,
"number-leading-zero": "always", "number-leading-zero": "always",
"number-max-precision": 5,
"order/order": [ "order/order": [
"custom-properties", "custom-properties",
"dollar-variables", "dollar-variables",
...@@ -114,11 +124,19 @@ ...@@ -114,11 +124,19 @@
"margin-right", "margin-right",
"margin-bottom", "margin-bottom",
"margin-left", "margin-left",
"margin-block-start",
"margin-block-end",
"margin-inline-start",
"margin-inline-end",
"padding", "padding",
"padding-top", "padding-top",
"padding-right", "padding-right",
"padding-bottom", "padding-bottom",
"padding-left", "padding-left",
"padding-block-start",
"padding-block-end",
"padding-inline-start",
"padding-inline-end",
"table-layout", "table-layout",
"-webkit-columns", "-webkit-columns",
...@@ -325,6 +343,22 @@ ...@@ -325,6 +343,22 @@
"border-left-width", "border-left-width",
"border-left-style", "border-left-style",
"border-left-color", "border-left-color",
"border-block-start",
"border-block-start-width",
"border-block-start-style",
"border-block-start-color",
"border-inline-end",
"border-inline-end-width",
"border-inline-end-style",
"border-inline-end-color",
"border-block-end",
"border-block-end-width",
"border-block-end-style",
"border-block-end-color",
"border-inline-start",
"border-inline-start-width",
"border-inline-start-style",
"border-inline-start-color",
"-webkit-border-radius", "-webkit-border-radius",
"-moz-border-radius", "-moz-border-radius",
"border-radius", "border-radius",
...@@ -421,26 +455,33 @@ ...@@ -421,26 +455,33 @@
"font-smooth", "font-smooth",
"line-height" "line-height"
], ],
"plugin/no-browser-hacks": [true, {
"browsers": [
"ie >= 9",
"edge >= 13",
"firefox >= 5",
"opera >= 12",
"safari >= 5",
"chrome >= 56"
]
}],
"property-no-unknown": null, "property-no-unknown": null,
"property-no-vendor-prefix": null,
"rule-empty-line-before": null, "rule-empty-line-before": null,
"selector-attribute-quotes": null,
"selector-class-pattern": null,
"selector-id-pattern": "^[a-z][-_a-z0-9]*$",
"selector-no-vendor-prefix": null,
"selector-not-notation": "simple",
"selector-pseudo-element-colon-notation": null, "selector-pseudo-element-colon-notation": null,
"shorthand-property-no-redundant-values": null, "shorthand-property-no-redundant-values": null,
"string-quotes": "double", "string-quotes": "double",
"unit-whitelist": ["deg", "em", "ex", "ms", "rem", "%", "s", "px", "vw", "vh"] "unit-allowed-list": ["ch", "deg", "em", "ex", "fr", "ms", "rem", "%", "s", "px", "vw", "vh"],
"value-keyword-case": ["lower", {
"camelCaseSvgKeywords": true,
"ignoreProperties": [
"--font-family",
"font-family"
]
}],
"value-no-vendor-prefix": null
}, },
"ignoreFiles": [ "ignoreFiles": [
"assets/vendor/**/*.css", "assets/vendor/**/*.css",
"tests/Drupal/Tests/Core/Asset/css_test_files/**/*.css", "tests/Drupal/Tests/Core/Asset/css_test_files/**/*.css",
"modules/media/css/plugins/drupalmedia/ckeditor.drupalmedia.css" "modules/ckeditor/css/plugins/drupalmedia/ckeditor.drupalmedia.css",
"themes/stable/css/core/assets/vendor/**/*.css",
"themes/stable9/css/core/assets/vendor/**/*.css",
"themes/stable9/css/media/plugins/drupalmedia/ckeditor.drupalmedia.css"
] ]
} }
...@@ -20,40 +20,58 @@ Drupal includes works under other copyright notices and distributed ...@@ -20,40 +20,58 @@ Drupal includes works under other copyright notices and distributed
according to the terms of the GNU General Public License or a compatible according to the terms of the GNU General Public License or a compatible
license, including: license, including:
Javascript JavaScript
Farbtastic - Copyright (c) 2010 Matt Farina Backbone - Copyright (c) 2010 Jeremy Ashkenas and DocumentCloud
CKEditor - Copyright (c) 2003 CKSource Holding sp. z o.o.
HTML5 Shiv - Copyright (c) 2014 Alexander Farkas, Jonathan Neal, Paul Irish, CKEditor5 - Copyright (c) 2003 CKSource Holding sp. z o.o.
and John-David Dalton
jQuery - Copyright (c) 2011 John Resig CSS.escape polyfill - Copyright (c) Mathias Bynens
jQuery Bgiframe - Copyright (c) 2013 Brandon Aaron (http://brandonaaron.net) ES6-Promise - Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors
Farbtastic - Copyright (c) 2010 Matt Farina
jQuery BBQ - Copyright (c) 2010 "Cowboy" Ben Alman JavaScript Cookie - Copyright (c) 2006 Klaus Hartl & Fagner Brack
jQuery Cookie - Copyright (c) 2014 Klaus Hartl jQuery - Copyright (c) OpenJS Foundation and other contributors
jQuery Form - Copyright (c) 2017 Kevin Morris jQuery Form - Copyright (c) 2017 Kevin Morris
jQuery Globalize - Copyright (c) 2012 Software Freedom Conservancy, Inc. jQuery Joyride - Copyright (c) 2013 ZURB
jQuery Once - Copyright (c) 2016 Rob Loach
jQuery UI - Copyright (c) OpenJS Foundation and other contributors
LoadJS - Copyright (c) 2015 Andres Morey
jQuery Mousewheel - Copyright OpenJS Foundation and other contributors Modernizr - Copyright (c) 2021 The Modernizr Team
(https://openjsf.org/)
jQuery Metadata - Copyright (c) 2006 John Resig, Yehuda Katz, Jörn Zaefferer, Picturefill - Copyright (c) 2014 Filament Group
Paul McLanahan
jQuery Once - Copyright (c) 2009 Konstantin Käfer Popperjs - Copyright (c) 2019 Federico Zivolo
jQuery UI - Copyright (c) 2015 by the authors and other contributors Shepherd - Copyright (c) 2021
(http://jqueryui.com/about)
Sizzle.js - Copyright (c) 2016 JS Foundation and other contributors Sortable - Copyright (c) 2019 All contributors to Sortable
(https://js.foundation)
Tabbable - Copyright (c) 2015 David Clark
Underscore - Copyright (c) 2009 Jeremy Ashkenas, Julian Gonggrijp, and DocumentCloud and Investigative Reporters & Editors
CSS
Normalize.css - Copyright (c) Nicolas Gallagher and Jonathan Neal
PHP PHP
Drupal depends on numerous PHP Composer packages. All Composer packages Drupal depends on numerous PHP Composer packages. All Composer packages
retain the copyright of the authors. retain the copyright of the authors.
Brand materials
Drupal brand materials under core/misc/logo have a dedicated license. See
core/misc/logo/LICENSE.txt.
...@@ -15,7 +15,7 @@ QUICKSTART ...@@ -15,7 +15,7 @@ QUICKSTART
---------------------- ----------------------
Prerequisites: Prerequisites:
- PHP 7.0.8 (or greater) (https://php.net). - PHP 7.4.0 (or greater) (https://php.net).
In the instructions below, replace the version x.y.z with the specific version In the instructions below, replace the version x.y.z with the specific version
you wish to download. Example: 8.6.0.zip. You can find the latest stable version you wish to download. Example: 8.6.0.zip. You can find the latest stable version
...@@ -46,22 +46,23 @@ REQUIREMENTS AND NOTES ...@@ -46,22 +46,23 @@ REQUIREMENTS AND NOTES
Drupal requires: Drupal requires:
- A web server with PHP support, for example: - A web server with PHP support, for example:
- Apache 2.0 (or greater) (http://httpd.apache.org/). - Apache 2.4.7 (or greater) (http://httpd.apache.org/).
- Nginx 1.1 (or greater) (http://nginx.com/). - Nginx 1.1 (or greater) (http://nginx.com/).
- PHP 7.0.8 (or greater) (http://php.net/). For better security support it is - PHP 7.4.0 (or greater) (http://php.net/). For better security support it is
recommended to update to at least 7.2.17. recommended to update to at least 8.1.0.
- One of the following databases: - One of the following databases:
- MySQL 5.5.3 (or greater) (http://www.mysql.com/). - MySQL 5.7.8 (or greater) (http://www.mysql.com/).
- MariaDB 5.5.20 (or greater) (https://mariadb.org/). MariaDB is a fully - MariaDB 10.3.7 (or greater) (https://mariadb.org/). MariaDB is a fully
compatible drop-in replacement for MySQL. compatible drop-in replacement for MySQL.
- Percona Server 5.5.8 (or greater) (http://www.percona.com/). Percona - Percona Server 5.7.8 (or greater) (http://www.percona.com/). Percona
Server is a backwards-compatible replacement for MySQL. Server is a backwards-compatible replacement for MySQL.
- PostgreSQL 9.1.2 (or greater) (http://www.postgresql.org/). - PostgreSQL 10 (or greater) (http://www.postgresql.org/).
- SQLite 3.7.11 (or greater) (http://www.sqlite.org/). - SQLite 3.26 (or greater) (http://www.sqlite.org/).
For more detailed information about Drupal requirements, including a list of For more detailed information about Drupal requirements, including a list of
PHP extensions and configurations that are required, see "System requirements" PHP extensions and configurations that are required, see "System requirements"
(https://www.drupal.org/requirements) in the Drupal.org online documentation. (https://www.drupal.org/docs/system-requirements) in the Drupal.org online
documentation.
For detailed information on how to configure a test server environment using a For detailed information on how to configure a test server environment using a
variety of operating systems and web servers, see "Local server setup" variety of operating systems and web servers, see "Local server setup"
...@@ -148,7 +149,7 @@ INSTALLATION ...@@ -148,7 +149,7 @@ INSTALLATION
You will be guided through several screens to set up the database, add the You will be guided through several screens to set up the database, add the
site maintenance account (the first user, also known as user/1), and provide site maintenance account (the first user, also known as user/1), and provide
basic web site settings. basic website settings.
During installation, several files and directories need to be created, which During installation, several files and directories need to be created, which
the install script will try to do automatically. However, on some hosting the install script will try to do automatically. However, on some hosting
...@@ -340,9 +341,10 @@ INSTALLATION ...@@ -340,9 +341,10 @@ INSTALLATION
page. page.
More information about cron maintenance tasks is available at More information about cron maintenance tasks is available at
https://www.drupal.org/cron, and sample cron shell scripts can be found in https://www.drupal.org/docs/administering-a-drupal-site/cron-automated-tasks,
the core/scripts/ directory. (Note that these scripts must be customized like and sample cron shell scripts can be found in the core/scripts/ directory.
the above example, to add your site-specific cron key and domain name.) (Note that these scripts must be customized like the above example, to add
your site-specific cron key and domain name.)
REINSTALL REINSTALL
------------ ------------
......
This diff is collapsed.
CONFIGURATION AND FEATURES
--------------------------
Drupal core (what you get when you download and extract a drupal-x.y.tar.gz or
drupal-x.y.zip file from https://www.drupal.org/project/drupal) has what you
need to get started with your website. It includes several modules (extensions
that add functionality) for common website features, such as managing content,
user accounts, image uploading, and search. Core comes with many options that
allow site-specific configuration. In addition to the core modules, there are
thousands of contributed modules (for functionality not included with Drupal
core) available for download.
More about configuration:
* Install, update, and maintain Drupal:
See INSTALL.txt and UPDATE.txt in the "core" directory.
* Learn about how to use Drupal to create your site:
https://www.drupal.org/documentation
* Follow best practices:
https://www.drupal.org/best-practices
* Download contributed modules to /modules to extend Drupal's functionality:
https://www.drupal.org/project/project_module
* See also: "Developing for Drupal" for writing your own modules, below.
INSTALLATION PROFILES
---------------------
Installation profiles define additional steps (such as enabling modules,
defining content types, etc.) that run after the base installation provided
by core when Drupal is first installed. There are two basic installation
profiles provided with Drupal core.
Installation profiles from the Drupal community modify the installation process
to provide a website for a specific use case, such as a CMS for media
publishers, a web-based project tracking tool, or a full-fledged CRM for
non-profit organizations raising money and accepting donations. They can be
distributed as bare installation profiles or as "distributions". Distributions
include Drupal core, the installation profile, and all other required
extensions, such as contributed and custom modules, themes, and third-party
libraries. Bare installation profiles require you to download Drupal Core and
the required extensions separately; place the downloaded profile in the
/profiles directory before you start the installation process.
More about installation profiles and distributions:
* Read about the difference between installation profiles and distributions:
https://www.drupal.org/docs/distributions/creating-distributions
* Download contributed installation profiles and distributions:
https://www.drupal.org/project/project_distribution
* Develop your own installation profile or distribution:
https://www.drupal.org/docs/distributions/creating-distributions
APPEARANCE
----------
In Drupal, the appearance of your site is set by the theme (themes are
extensions that set fonts, colors, and layout). Drupal core comes with several
themes. More themes are available for download, and you can also create your own
custom theme.
More about themes:
* Download contributed themes to /themes to modify Drupal's appearance:
https://www.drupal.org/project/project_theme
* Develop your own theme:
https://www.drupal.org/docs/theming-drupal
DEVELOPING FOR DRUPAL
---------------------
Drupal contains an extensive API that allows you to add to and modify the
functionality of your site. This means that you should never need to directly
modify the files that come with Drupal core to achieve the behavior you want;
instead, modifications take the form of modules.
When you need new functionality for your Drupal site, search for existing
contributed modules. If you find a module that matches except for a bug or an
additional needed feature, change the module and contribute your improvements
back to the project in the form of a "patch". Create new custom modules only
when nothing existing comes close to what you need.
More about developing:
* Extending and altering Drupal
https://api.drupal.org/api/drupal/core%21core.api.php/group/extending
* Search for existing contributed modules:
https://www.drupal.org/project/project_module
* Contribute a patch:
https://www.drupal.org/patch/submit
* Develop your own module:
https://www.drupal.org/developing/modules
* Follow programming best practices:
https://www.drupal.org/docs/develop/standards
* Refer to the API documentation:
https://api.drupal.org
* Learn from documented Drupal API examples:
https://www.drupal.org/project/examples
Drupal Scaffold Files are files that are contained inside drupal/core, but are Drupal Scaffold Files are files that are contained inside drupal/core, but are
installed outside of the core directory (e.g. at the Drupal root). installed outside of the core directory (e.g. at the Drupal root).
Scaffold files were added to drupal/core in Drupal 8.8.x. During the Drupal 8 For now, the scaffold files are being maintained in their original
development cycle, the scaffold files are also being maintained in their original
locations. This is done so that Drupal sites based on the template project locations. This is done so that Drupal sites based on the template project
drupal-composer/drupal-project may continue to download these files from the same drupal-composer/drupal-project may continue to download these files from the
URLs they have historically been found at. same URLs they have historically been found at.
The scaffold files will be deleted from their original location in Drupal 9. Those will be deleted from their original location in a future version.
See https://www.drupal.org/project/drupal/issues/3075954 for follow-on work. See https://www.drupal.org/project/drupal/issues/3075954 for follow-on work.
...@@ -11,10 +11,11 @@ parameters: ...@@ -11,10 +11,11 @@ parameters:
# @default 100 # @default 100
gc_divisor: 100 gc_divisor: 100
# #
# Set session lifetime (in seconds), i.e. the time from the user's last # Set session lifetime (in seconds), i.e. the grace period for session
# visit to the active session may be deleted by the session garbage # data. Sessions are deleted by the session garbage collector after one
# collector. When a session is deleted, authenticated users are logged out, # session lifetime has elapsed since the user's last visit. When a session
# and the contents of the user's $_SESSION variable is discarded. # is deleted, authenticated users are logged out, and the contents of the
# user's session is discarded.
# @default 200000 # @default 200000
gc_maxlifetime: 200000 gc_maxlifetime: 200000
# #
...@@ -36,6 +37,22 @@ parameters: ...@@ -36,6 +37,22 @@ parameters:
# @default none # @default none
# cookie_domain: '.example.com' # cookie_domain: '.example.com'
# #
# Set the session ID string length. The length can be between 22 to 256. The
# PHP recommended value is 48. See
# https://www.php.net/manual/session.security.ini.php for more information.
# This value should be kept in sync with
# \Drupal\Core\Session\SessionConfiguration::__construct()
# @default 48
sid_length: 48
#
# Set the number of bits in encoded session ID character. The possible
# values are '4' (0-9, a-f), '5' (0-9, a-v), and '6' (0-9, a-z, A-Z, "-",
# ","). The PHP recommended value is 6. See
# https://www.php.net/manual/session.security.ini.php for more information.
# This value should be kept in sync with
# \Drupal\Core\Session\SessionConfiguration::__construct()
# @default 6
sid_bits_per_character: 6
twig.config: twig.config:
# Twig debugging: # Twig debugging:
# #
...@@ -53,7 +70,7 @@ parameters: ...@@ -53,7 +70,7 @@ parameters:
# For more information about debugging Twig templates, see # For more information about debugging Twig templates, see
# https://www.drupal.org/node/1906392. # https://www.drupal.org/node/1906392.
# #
# Not recommended in production environments # Enabling Twig debugging is not recommended in production environments.
# @default false # @default false
debug: false debug: false
# Twig auto-reload: # Twig auto-reload:
...@@ -62,7 +79,7 @@ parameters: ...@@ -62,7 +79,7 @@ parameters:
# If you don't provide a value for auto_reload, it will be determined # If you don't provide a value for auto_reload, it will be determined
# based on the value of debug. # based on the value of debug.
# #
# Not recommended in production environments # Enabling auto-reload is not recommended in production environments.
# @default null # @default null
auto_reload: null auto_reload: null
# Twig cache: # Twig cache:
...@@ -73,9 +90,24 @@ parameters: ...@@ -73,9 +90,24 @@ parameters:
# auto_reload setting above should be enabled rather than disabling the # auto_reload setting above should be enabled rather than disabling the
# Twig cache. # Twig cache.
# #
# Not recommended in production environments # Disabling the Twig cache is not recommended in production environments.
# @default true # @default true
cache: true cache: true
# File extensions:
#
# List of file extensions the Twig system is allowed to load via the
# twig.loader.filesystem service. Files with other extensions will not be
# loaded unless they are added here. For example, to allow a file named
# 'example.partial' to be loaded, add 'partial' to this list. To load files
# with no extension, add an empty string '' to the list.
#
# @default ['css', 'html', 'js', 'svg', 'twig']
allowed_file_extensions:
- css
- html
- js
- svg
- twig
renderer.config: renderer.config:
# Renderer required cache contexts: # Renderer required cache contexts:
# #
...@@ -115,29 +147,37 @@ parameters: ...@@ -115,29 +147,37 @@ parameters:
# #
# @default [] # @default []
tags: [] tags: []
# Renderer cache debug:
#
# Allows cache debugging output for each rendered element.
#
# Enabling render cache debugging is not recommended in production
# environments.
# @default false
debug: false
# Cacheability debugging: # Cacheability debugging:
# #
# Responses with cacheability metadata (CacheableResponseInterface instances) # Responses with cacheability metadata (CacheableResponseInterface instances)
# get X-Drupal-Cache-Tags and X-Drupal-Cache-Contexts headers. # get X-Drupal-Cache-Tags, X-Drupal-Cache-Contexts and X-Drupal-Cache-Max-Age
# headers.
# #
# For more information about debugging cacheable responses, see # For more information about debugging cacheable responses, see
# https://www.drupal.org/developing/api/8/response/cacheable-response-interface # https://www.drupal.org/developing/api/8/response/cacheable-response-interface
# #
# Not recommended in production environments # Enabling cacheability debugging is not recommended in production
# environments.
# @default false # @default false
http.response.debug_cacheability_headers: false http.response.debug_cacheability_headers: false
factory.keyvalue: factory.keyvalue: {}
{} # Default key/value storage service to use.
# Default key/value storage service to use. # @default keyvalue.database
# @default keyvalue.database # default: keyvalue.database
# default: keyvalue.database # Collection-specific overrides.
# Collection-specific overrides. # state: keyvalue.database
# state: keyvalue.database factory.keyvalue.expirable: {}
factory.keyvalue.expirable: # Default key/value expirable storage service to use.
{} # @default keyvalue.database.expirable
# Default key/value expirable storage service to use. # default: keyvalue.database.expirable
# @default keyvalue.database.expirable
# default: keyvalue.database.expirable
# Allowed protocols for URL generation. # Allowed protocols for URL generation.
filter_protocols: filter_protocols:
- http - http
...@@ -154,17 +194,18 @@ parameters: ...@@ -154,17 +194,18 @@ parameters:
- webcal - webcal
- rtsp - rtsp
# Configure Cross-Site HTTP requests (CORS). # Configure Cross-Site HTTP requests (CORS).
# Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS # Read https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS
# for more information about the topic in general. # for more information about the topic in general.
# Note: By default the configuration is disabled. # Note: By default the configuration is disabled.
cors.config: cors.config:
enabled: false enabled: false
# Specify allowed headers, like 'x-allowed-header'. # Specify allowed headers, like 'x-allowed-header'.
allowedHeaders: [] allowedHeaders: []
# Specify allowed request methods, specify ['*'] to allow all possible ones. # Specify allowed request methods, specify ['*'] to allow all possible ones.
allowedMethods: [] allowedMethods: []
# Configure requests allowed from specific origins. # Configure requests allowed from specific origins. Do not include trailing
# slashes with URLs.
allowedOrigins: ['*'] allowedOrigins: ['*']
# Sets the Access-Control-Expose-Headers header. # Sets the Access-Control-Expose-Headers header.
exposedHeaders: false exposedHeaders: false
......
Please read core/INSTALL.txt for detailed installation instructions for your Please read core/INSTALL.txt for detailed installation instructions for your
Drupal web site. Drupal website.
<img alt="Drupal Logo" src="https://www.drupal.org/files/Wordmark_blue_RGB.png" height="60px">
Drupal is an open source content management platform supporting a variety of
websites ranging from personal weblogs to large community-driven websites. For
more information, visit the Drupal website, [Drupal.org][Drupal.org], and join
the [Drupal community][Drupal community].
## Contributing
Drupal is developed on [Drupal.org][Drupal.org], the home of the international
Drupal community since 2001!
[Drupal.org][Drupal.org] hosts Drupal's [GitLab repository][GitLab repository],
its [issue queue][issue queue], and its [documentation][documentation]. Before
you start working on code, be sure to search the [issue queue][issue queue] and
create an issue if your aren't able to find an existing issue.
Every issue on Drupal.org automatically creates a new community-accessible fork
that you can contribute to. Learn more about the code contribution process on
the [Issue forks & merge requests page][issue forks].
## Usage
For a brief introduction, see [USAGE.txt](/core/USAGE.txt). You can also find
guides, API references, and more by visiting Drupal's [documentation
page][documentation].
You can quickly extend Drupal's core feature set by installing any of its
[thousands of free and open source modules][modules]. With Drupal and its
module ecosystem, you can often build most or all of what your project needs
before writing a single line of code.
## Changelog
Drupal keeps detailed [change records][changelog]. You can search Drupal's
changes for a record of every notable breaking change and new feature since
2011.
## Security
For a list of security announcements, see the [Security advisories
page][Security advisories] (available as [an RSS feed][security RSS]). This
page also describes how to subscribe to these announcements via email.
For information about the Drupal security process, or to find out how to report
a potential security issue to the Drupal security team, see the [Security team
page][security team].
## Need a helping hand?
Visit the [Support page][support] or browse [over a thousand Drupal
providers][service providers] offering design, strategy, development, and
hosting services.
## Legal matters
Know your rights when using Drupal by reading Drupal core's
[license](/core/LICENSE.txt).
Learn about the [Drupal trademark and logo policy here][trademark].
[Drupal.org]: https://www.drupal.org
[Drupal community]: https://www.drupal.org/community
[GitLab repository]: https://git.drupalcode.org/project/drupal
[issue queue]: https://www.drupal.org/project/issues/drupal
[issue forks]: https://www.drupal.org/drupalorg/docs/gitlab-integration/issue-forks-merge-requests
[documentation]: https://www.drupal.org/documentation
[changelog]: https://www.drupal.org/list-changes/drupal
[modules]: https://www.drupal.org/project/project_module
[security advisories]: https://www.drupal.org/security
[security RSS]: https://www.drupal.org/security/rss.xml
[security team]: https://www.drupal.org/drupal-security-team
[service providers]: https://www.drupal.org/drupal-services
[support]: https://www.drupal.org/support
[trademark]: https://www.drupal.com/trademark
CONTENTS OF THIS FILE
---------------------
* About Drupal
* Configuration and features
* Installation profiles
* Appearance
* Developing for Drupal
* More information
ABOUT DRUPAL
------------
Drupal is an open source content management platform supporting a variety of
websites ranging from personal weblogs to large community-driven websites. For
more information, see the Drupal website at https://www.drupal.org, and join
the Drupal community at https://www.drupal.org/community.
Legal information about Drupal:
* Know your rights when using Drupal:
See LICENSE.txt in the "core" directory.
* Learn about the Drupal trademark and logo policy:
https://www.drupal.com/trademark
CONFIGURATION AND FEATURES
--------------------------
Drupal core (what you get when you download and extract a drupal-x.y.tar.gz or
drupal-x.y.zip file from https://www.drupal.org/project/drupal) has what you
need to get started with your website. It includes several modules (extensions
that add functionality) for common website features, such as managing content,
user accounts, image uploading, and search. Core comes with many options that
allow site-specific configuration. In addition to the core modules, there are
thousands of contributed modules (for functionality not included with Drupal
core) available for download.
More about configuration:
* Install, update, and maintain Drupal:
See INSTALL.txt and UPDATE.txt in the "core" directory.
* Learn about how to use Drupal to create your site:
https://www.drupal.org/documentation
* Follow best practices:
https://www.drupal.org/best-practices
* Download contributed modules to /modules to extend Drupal's functionality:
https://www.drupal.org/project/modules
* See also: "Developing for Drupal" for writing your own modules, below.
INSTALLATION PROFILES
---------------------
Installation profiles define additional steps (such as enabling modules,
defining content types, etc.) that run after the base installation provided
by core when Drupal is first installed. There are two basic installation
profiles provided with Drupal core.
Installation profiles from the Drupal community modify the installation process
to provide a website for a specific use case, such as a CMS for media
publishers, a web-based project tracking tool, or a full-fledged CRM for
non-profit organizations raising money and accepting donations. They can be
distributed as bare installation profiles or as "distributions". Distributions
include Drupal core, the installation profile, and all other required
extensions, such as contributed and custom modules, themes, and third-party
libraries. Bare installation profiles require you to download Drupal Core and
the required extensions separately; place the downloaded profile in the
/profiles directory before you start the installation process.
More about installation profiles and distributions:
* Read about the difference between installation profiles and distributions:
https://www.drupal.org/docs/8/distributions/creating-distributions
* Download contributed installation profiles and distributions:
https://www.drupal.org/project/distributions
* Develop your own installation profile or distribution:
https://www.drupal.org/docs/8/creating-distributions
APPEARANCE
----------
In Drupal, the appearance of your site is set by the theme (themes are
extensions that set fonts, colors, and layout). Drupal core comes with several
themes. More themes are available for download, and you can also create your own
custom theme.
More about themes:
* Download contributed themes to /themes to modify Drupal's appearance:
https://www.drupal.org/project/themes
* Develop your own theme:
https://www.drupal.org/docs/8/theming
DEVELOPING FOR DRUPAL
---------------------
Drupal contains an extensive API that allows you to add to and modify the
functionality of your site. The API consists of "hooks", which allow modules to
react to system events and customize Drupal's behavior, and functions that
standardize common operations such as database queries and form generation. The
flexible hook architecture means that you should never need to directly modify
the files that come with Drupal core to achieve the functionality you want;
instead, functionality modifications take the form of modules.
When you need new functionality for your Drupal site, search for existing
contributed modules. If you find a module that matches except for a bug or an
additional needed feature, change the module and contribute your improvements
back to the project in the form of a "patch". Create new custom modules only
when nothing existing comes close to what you need.
More about developing:
* Search for existing contributed modules:
https://www.drupal.org/project/modules
* Contribute a patch:
https://www.drupal.org/patch/submit
* Develop your own module:
https://www.drupal.org/developing/modules
* Follow programming best practices:
https://www.drupal.org/developing/best-practices
* Refer to the API documentation:
https://api.drupal.org/api/drupal/8
* Learn from documented Drupal API examples:
https://www.drupal.org/project/examples
MORE INFORMATION
----------------
* See the Drupal.org online documentation:
https://www.drupal.org/documentation
* For a list of security announcements, see the "Security advisories" page at
https://www.drupal.org/security (available as an RSS feed). This page also
describes how to subscribe to these announcements via email.
* For information about the Drupal security process, or to find out how to
report a potential security issue to the Drupal security team, see the
"Security team" page at https://www.drupal.org/security-team
* For information about the wide range of available support options, visit
https://www.drupal.org and click on Community and Support in the top or
bottom navigation.
<?php <?php
// @codingStandardsIgnoreFile // phpcs:ignoreFile
/** /**
* @file * @file
...@@ -33,7 +33,7 @@ ...@@ -33,7 +33,7 @@
* @see https://wiki.php.net/rfc/expectations * @see https://wiki.php.net/rfc/expectations
*/ */
assert_options(ASSERT_ACTIVE, TRUE); assert_options(ASSERT_ACTIVE, TRUE);
\Drupal\Component\Assertion\Handle::register(); assert_options(ASSERT_EXCEPTION, TRUE);
/** /**
* Enable local development services. * Enable local development services.
......
<?php <?php
// @codingStandardsIgnoreFile // phpcs:ignoreFile
/** /**
* @file * @file
......
...@@ -19,24 +19,24 @@ ...@@ -19,24 +19,24 @@
*.config text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.config text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.css text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.css text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.dist text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.dist text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.engine text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php *.engine text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php
*.html text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=html *.html text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=html
*.inc text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php *.inc text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php
*.install text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php *.install text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php
*.js text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.js text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.json text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.json text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.lock text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.lock text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.map text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.map text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.md text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.md text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.module text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php *.module text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php
*.php text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php *.php text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php
*.po text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.po text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.profile text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php *.profile text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php
*.script text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.script text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.sh text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php *.sh text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php
*.sql text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.sql text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.svg text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.svg text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.theme text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php *.theme text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 diff=php linguist-language=php
*.twig text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.twig text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.txt text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.txt text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
*.xml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2 *.xml text eol=lf whitespace=blank-at-eol,-blank-at-eof,-space-before-tab,tab-in-indent,tabwidth=2
......
...@@ -24,6 +24,12 @@ ...@@ -24,6 +24,12 @@
* @see http://php.net/manual/en/features.commandline.webserver.php * @see http://php.net/manual/en/features.commandline.webserver.php
*/ */
if (PHP_SAPI !== 'cli-server') {
// Bail out if this is not PHP's Development Server.
header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden');
exit;
}
$url = parse_url($_SERVER['REQUEST_URI']); $url = parse_url($_SERVER['REQUEST_URI']);
if (file_exists(__DIR__ . $url['path'])) { if (file_exists(__DIR__ . $url['path'])) {
// Serve the requested resource as-is. // Serve the requested resource as-is.
......
...@@ -3,7 +3,7 @@ ...@@ -3,7 +3,7 @@
# #
# Protect files and directories from prying eyes. # Protect files and directories from prying eyes.
<FilesMatch "\.(engine|inc|install|make|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\.(?!well-known).*|Entries.*|Repository|Root|Tag|Template|composer\.(json|lock)|web\.config)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig|\.save)$"> <FilesMatch "\.(engine|inc|install|make|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml)(~|\.sw[op]|\.bak|\.orig|\.save)?$|^(\.(?!well-known).*|Entries.*|Repository|Root|Tag|Template|composer\.(json|lock)|web\.config|yarn\.lock|package\.json)$|^#.*#$|\.php(~|\.sw[op]|\.bak|\.orig|\.save)$">
<IfModule mod_authz_core.c> <IfModule mod_authz_core.c>
Require all denied Require all denied
</IfModule> </IfModule>
...@@ -32,12 +32,17 @@ AddEncoding gzip svgz ...@@ -32,12 +32,17 @@ AddEncoding gzip svgz
php_value assert.active 0 php_value assert.active 0
</IfModule> </IfModule>
# PHP 8, Apache 1 and 2.
<IfModule mod_php.c>
php_value assert.active 0
</IfModule>
# Requires mod_expires to be enabled. # Requires mod_expires to be enabled.
<IfModule mod_expires.c> <IfModule mod_expires.c>
# Enable expirations. # Enable expirations.
ExpiresActive On ExpiresActive On
# Cache all files for 2 weeks after access (A). # Cache all files and redirects for 2 weeks after access (A).
ExpiresDefault A1209600 ExpiresDefault A1209600
<FilesMatch \.php$> <FilesMatch \.php$>
...@@ -116,13 +121,13 @@ AddEncoding gzip svgz ...@@ -116,13 +121,13 @@ AddEncoding gzip svgz
# RewriteBase / # RewriteBase /
# Redirect common PHP files to their new locations. # Redirect common PHP files to their new locations.
RewriteCond %{REQUEST_URI} ^(.*)?/(install.php) [OR] RewriteCond %{REQUEST_URI} ^(.*)?/(install\.php) [OR]
RewriteCond %{REQUEST_URI} ^(.*)?/(rebuild.php) RewriteCond %{REQUEST_URI} ^(.*)?/(rebuild\.php)
RewriteCond %{REQUEST_URI} !core RewriteCond %{REQUEST_URI} !core
RewriteRule ^ %1/core/%2 [L,QSA,R=301] RewriteRule ^ %1/core/%2 [L,QSA,R=301]
# Rewrite install.php during installation to see if mod_rewrite is working # Rewrite install.php during installation to see if mod_rewrite is working
RewriteRule ^core/install.php core/install.php?rewrite=ok [QSA,L] RewriteRule ^core/install\.php core/install.php?rewrite=ok [QSA,L]
# Pass all requests not referring directly to files in the filesystem to # Pass all requests not referring directly to files in the filesystem to
# index.php. # index.php.
...@@ -138,11 +143,11 @@ AddEncoding gzip svgz ...@@ -138,11 +143,11 @@ AddEncoding gzip svgz
# Allow access to PHP files in /core (like authorize.php or install.php): # Allow access to PHP files in /core (like authorize.php or install.php):
RewriteCond %{REQUEST_URI} !/core/[^/]*\.php$ RewriteCond %{REQUEST_URI} !/core/[^/]*\.php$
# Allow access to test-specific PHP files: # Allow access to test-specific PHP files:
RewriteCond %{REQUEST_URI} !/core/modules/system/tests/https?.php RewriteCond %{REQUEST_URI} !/core/modules/system/tests/https?\.php
# Allow access to Statistics module's custom front controller. # Allow access to Statistics module's custom front controller.
# Copy and adapt this rule to directly execute PHP files in contributed or # Copy and adapt this rule to directly execute PHP files in contributed or
# custom modules or to run another PHP application in the same directory. # custom modules or to run another PHP application in the same directory.
RewriteCond %{REQUEST_URI} !/core/modules/statistics/statistics.php$ RewriteCond %{REQUEST_URI} !/core/modules/statistics/statistics\.php$
# Deny access to any other PHP files that do not match the rules above. # Deny access to any other PHP files that do not match the rules above.
# Specifically, disallow autoload.php from being served directly. # Specifically, disallow autoload.php from being served directly.
RewriteRule "^(.+/.*|autoload)\.php($|/)" - [F] RewriteRule "^(.+/.*|autoload)\.php($|/)" - [F]
...@@ -153,12 +158,12 @@ AddEncoding gzip svgz ...@@ -153,12 +158,12 @@ AddEncoding gzip svgz
# Serve gzip compressed CSS files if they exist and the client accepts gzip. # Serve gzip compressed CSS files if they exist and the client accepts gzip.
RewriteCond %{HTTP:Accept-encoding} gzip RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.css $1\.css\.gz [QSA] RewriteRule ^(.*css_[a-zA-Z0-9-_]+)\.css$ $1\.css\.gz [QSA]
# Serve gzip compressed JS files if they exist and the client accepts gzip. # Serve gzip compressed JS files if they exist and the client accepts gzip.
RewriteCond %{HTTP:Accept-encoding} gzip RewriteCond %{HTTP:Accept-encoding} gzip
RewriteCond %{REQUEST_FILENAME}\.gz -s RewriteCond %{REQUEST_FILENAME}\.gz -s
RewriteRule ^(.*)\.js $1\.js\.gz [QSA] RewriteRule ^(.*js_[a-zA-Z0-9-_]+)\.js$ $1\.js\.gz [QSA]
# Serve correct content types, and prevent double compression. # Serve correct content types, and prevent double compression.
RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1,E=no-brotli:1] RewriteRule \.css\.gz$ - [T=text/css,E=no-gzip:1,E=no-brotli:1]
......
...@@ -45,17 +45,21 @@ Disallow: /comment/reply/ ...@@ -45,17 +45,21 @@ Disallow: /comment/reply/
Disallow: /filter/tips Disallow: /filter/tips
Disallow: /node/add/ Disallow: /node/add/
Disallow: /search/ Disallow: /search/
Disallow: /user/register/ Disallow: /user/register
Disallow: /user/password/ Disallow: /user/password
Disallow: /user/login/ Disallow: /user/login
Disallow: /user/logout/ Disallow: /user/logout
Disallow: /media/oembed
Disallow: /*/media/oembed
# Paths (no clean URLs) # Paths (no clean URLs)
Disallow: /index.php/admin/ Disallow: /index.php/admin/
Disallow: /index.php/comment/reply/ Disallow: /index.php/comment/reply/
Disallow: /index.php/filter/tips Disallow: /index.php/filter/tips
Disallow: /index.php/node/add/ Disallow: /index.php/node/add/
Disallow: /index.php/search/ Disallow: /index.php/search/
Disallow: /index.php/user/password/ Disallow: /index.php/user/password
Disallow: /index.php/user/register/ Disallow: /index.php/user/register
Disallow: /index.php/user/login/ Disallow: /index.php/user/login
Disallow: /index.php/user/logout/ Disallow: /index.php/user/logout
Disallow: /index.php/media/oembed
Disallow: /index.php/*/media/oembed
...@@ -16,7 +16,6 @@ $autoloader = require_once 'autoload.php'; ...@@ -16,7 +16,6 @@ $autoloader = require_once 'autoload.php';
// Disable garbage collection during test runs. Under certain circumstances the // Disable garbage collection during test runs. Under certain circumstances the
// update path will create so many objects that garbage collection causes // update path will create so many objects that garbage collection causes
// segmentation faults. // segmentation faults.
require_once 'core/includes/bootstrap.inc';
if (drupal_valid_test_ua()) { if (drupal_valid_test_ua()) {
gc_collect_cycles(); gc_collect_cycles();
gc_disable(); gc_disable();
......
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
<rewrite> <rewrite>
<rules> <rules>
<rule name="Protect files and directories from prying eyes" stopProcessing="true"> <rule name="Protect files and directories from prying eyes" stopProcessing="true">
<match url="\.(engine|inc|install|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format|composer\.(json|lock)|\.htaccess)$" /> <match url="\.(engine|inc|install|module|profile|po|sh|.*sql|theme|twig|tpl(\.php)?|xtmpl|yml|svn-base)$|^(code-style\.pl|Entries.*|Repository|Root|Tag|Template|all-wcprops|entries|format|composer\.(json|lock)|\.htaccess|yarn.lock|package.json)$" />
<action type="CustomResponse" statusCode="403" subStatusCode="0" statusReason="Forbidden" statusDescription="Access is forbidden." /> <action type="CustomResponse" statusCode="403" subStatusCode="0" statusReason="Forbidden" statusDescription="Access is forbidden." />
</rule> </rule>
...@@ -33,18 +33,6 @@ ...@@ -33,18 +33,6 @@
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" /> <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
</conditions> </conditions>
</rule> </rule>
<!-- If running on a PHP version affected by httpoxy vulnerability
uncomment the following rule to mitigate it's impact. To make this
rule work, you will also need to add HTTP_PROXY to the allowed server
variables manually in IIS. See https://www.drupal.org/node/2783079.
<rule name="Erase HTTP_PROXY" patternSyntax="Wildcard">
<match url="*.*" />
<serverVariables>
<set name="HTTP_PROXY" value="" />
</serverVariables>
<action type="None" />
</rule>
-->
<!-- To redirect all users to access the site WITH the 'www.' prefix, <!-- To redirect all users to access the site WITH the 'www.' prefix,
http://example.com/foo will be redirected to http://www.example.com/foo) http://example.com/foo will be redirected to http://www.example.com/foo)
adapt and uncomment the following: --> adapt and uncomment the following: -->
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
// Backbone.js 1.4.0 // Backbone.js 1.4.1
// (c) 2010-2019 Jeremy Ashkenas and DocumentCloud // (c) 2010-2022 Jeremy Ashkenas and DocumentCloud
// Backbone may be freely distributed under the MIT license. // Backbone may be freely distributed under the MIT license.
// For all details and documentation: // For all details and documentation:
// http://backbonejs.org // http://backbonejs.org
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
var slice = Array.prototype.slice; var slice = Array.prototype.slice;
// Current version of the library. Keep in sync with `package.json`. // Current version of the library. Keep in sync with `package.json`.
Backbone.VERSION = '1.4.0'; Backbone.VERSION = '1.4.1';
// For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns // For Backbone's purposes, jQuery, Zepto, Ender, or My Library (kidding) owns
// the `$` variable. // the `$` variable.
...@@ -516,7 +516,11 @@ ...@@ -516,7 +516,11 @@
} }
// Update the `id`. // Update the `id`.
if (this.idAttribute in attrs) this.id = this.get(this.idAttribute); if (this.idAttribute in attrs) {
var prevId = this.id;
this.id = this.get(this.idAttribute);
this.trigger('changeId', this, prevId, options);
}
// Trigger all relevant attribute changes. // Trigger all relevant attribute changes.
if (!silent) { if (!silent) {
...@@ -994,7 +998,7 @@ ...@@ -994,7 +998,7 @@
get: function(obj) { get: function(obj) {
if (obj == null) return void 0; if (obj == null) return void 0;
return this._byId[obj] || return this._byId[obj] ||
this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj)] || this._byId[this.modelId(this._isModel(obj) ? obj.attributes : obj, obj.idAttribute)] ||
obj.cid && this._byId[obj.cid]; obj.cid && this._byId[obj.cid];
}, },
...@@ -1098,8 +1102,8 @@ ...@@ -1098,8 +1102,8 @@
}, },
// Define how to uniquely identify models in the collection. // Define how to uniquely identify models in the collection.
modelId: function(attrs) { modelId: function(attrs, idAttribute) {
return attrs[this.model.prototype.idAttribute || 'id']; return attrs[idAttribute || this.model.prototype.idAttribute || 'id'];
}, },
// Get an iterator of all models in this collection. // Get an iterator of all models in this collection.
...@@ -1134,7 +1138,15 @@ ...@@ -1134,7 +1138,15 @@
} }
options = options ? _.clone(options) : {}; options = options ? _.clone(options) : {};
options.collection = this; options.collection = this;
var model = new this.model(attrs, options);
var model;
if (this.model.prototype) {
model = new this.model(attrs, options);
} else {
// ES class methods didn't have prototype
model = this.model(attrs, options);
}
if (!model.validationError) return model; if (!model.validationError) return model;
this.trigger('invalid', this, model.validationError, options); this.trigger('invalid', this, model.validationError, options);
return false; return false;
...@@ -1154,7 +1166,7 @@ ...@@ -1154,7 +1166,7 @@
// Remove references before triggering 'remove' event to prevent an // Remove references before triggering 'remove' event to prevent an
// infinite loop. #3693 // infinite loop. #3693
delete this._byId[model.cid]; delete this._byId[model.cid];
var id = this.modelId(model.attributes); var id = this.modelId(model.attributes, model.idAttribute);
if (id != null) delete this._byId[id]; if (id != null) delete this._byId[id];
if (!options.silent) { if (!options.silent) {
...@@ -1177,7 +1189,7 @@ ...@@ -1177,7 +1189,7 @@
// Internal method to create a model's ties to a collection. // Internal method to create a model's ties to a collection.
_addReference: function(model, options) { _addReference: function(model, options) {
this._byId[model.cid] = model; this._byId[model.cid] = model;
var id = this.modelId(model.attributes); var id = this.modelId(model.attributes, model.idAttribute);
if (id != null) this._byId[id] = model; if (id != null) this._byId[id] = model;
model.on('all', this._onModelEvent, this); model.on('all', this._onModelEvent, this);
}, },
...@@ -1185,7 +1197,7 @@ ...@@ -1185,7 +1197,7 @@
// Internal method to sever a model's ties to a collection. // Internal method to sever a model's ties to a collection.
_removeReference: function(model, options) { _removeReference: function(model, options) {
delete this._byId[model.cid]; delete this._byId[model.cid];
var id = this.modelId(model.attributes); var id = this.modelId(model.attributes, model.idAttribute);
if (id != null) delete this._byId[id]; if (id != null) delete this._byId[id];
if (this === model.collection) delete model.collection; if (this === model.collection) delete model.collection;
model.off('all', this._onModelEvent, this); model.off('all', this._onModelEvent, this);
...@@ -1199,13 +1211,11 @@ ...@@ -1199,13 +1211,11 @@
if (model) { if (model) {
if ((event === 'add' || event === 'remove') && collection !== this) return; if ((event === 'add' || event === 'remove') && collection !== this) return;
if (event === 'destroy') this.remove(model, options); if (event === 'destroy') this.remove(model, options);
if (event === 'change') { if (event === 'changeId') {
var prevId = this.modelId(model.previousAttributes()); var prevId = this.modelId(model.previousAttributes(), model.idAttribute);
var id = this.modelId(model.attributes); var id = this.modelId(model.attributes, model.idAttribute);
if (prevId !== id) { if (prevId != null) delete this._byId[prevId];
if (prevId != null) delete this._byId[prevId]; if (id != null) this._byId[id] = model;
if (id != null) this._byId[id] = model;
}
} }
} }
this.trigger.apply(this, arguments); this.trigger.apply(this, arguments);
...@@ -1261,7 +1271,7 @@ ...@@ -1261,7 +1271,7 @@
if (this._kind === ITERATOR_VALUES) { if (this._kind === ITERATOR_VALUES) {
value = model; value = model;
} else { } else {
var id = this._collection.modelId(model.attributes); var id = this._collection.modelId(model.attributes, model.idAttribute);
if (this._kind === ITERATOR_KEYS) { if (this._kind === ITERATOR_KEYS) {
value = id; value = id;
} else { // ITERATOR_KEYSVALUES } else { // ITERATOR_KEYSVALUES
...@@ -1615,11 +1625,11 @@ ...@@ -1615,11 +1625,11 @@
// Map from CRUD to HTTP for our default `Backbone.sync` implementation. // Map from CRUD to HTTP for our default `Backbone.sync` implementation.
var methodMap = { var methodMap = {
create: 'POST', 'create': 'POST',
update: 'PUT', 'update': 'PUT',
patch: 'PATCH', 'patch': 'PATCH',
delete: 'DELETE', 'delete': 'DELETE',
read: 'GET' 'read': 'GET'
}; };
// Set the default implementation of `Backbone.ajax` to proxy through to `$`. // Set the default implementation of `Backbone.ajax` to proxy through to `$`.
...@@ -1712,11 +1722,11 @@ ...@@ -1712,11 +1722,11 @@
// against the current location hash. // against the current location hash.
_routeToRegExp: function(route) { _routeToRegExp: function(route) {
route = route.replace(escapeRegExp, '\\$&') route = route.replace(escapeRegExp, '\\$&')
.replace(optionalParam, '(?:$1)?') .replace(optionalParam, '(?:$1)?')
.replace(namedParam, function(match, optional) { .replace(namedParam, function(match, optional) {
return optional ? match : '([^/?]+)'; return optional ? match : '([^/?]+)';
}) })
.replace(splatParam, '([^?]*?)'); .replace(splatParam, '([^?]*?)');
return new RegExp('^' + route + '(?:\\?([\\s\\S]*))?$'); return new RegExp('^' + route + '(?:\\?([\\s\\S]*))?$');
}, },
......
This diff is collapsed.
...@@ -2,7 +2,7 @@ Software License Agreement ...@@ -2,7 +2,7 @@ Software License Agreement
========================== ==========================
CKEditor - The text editor for Internet - https://ckeditor.com/ CKEditor - The text editor for Internet - https://ckeditor.com/
Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
Licensed under the terms of any of the following licenses at your Licensed under the terms of any of the following licenses at your
choice: choice:
...@@ -37,10 +37,11 @@ done by developers outside of CKSource with their express permission. ...@@ -37,10 +37,11 @@ done by developers outside of CKSource with their express permission.
The following libraries are included in CKEditor under the MIT license (see Appendix D): The following libraries are included in CKEditor under the MIT license (see Appendix D):
* CKSource Samples Framework (included in the samples) - Copyright (c) 2014-2020, CKSource - Frederico Knabben. * CKSource Samples Framework (included in the samples) - Copyright (c) 2014-2023, CKSource Holding sp. z o.o.
* PicoModal (included in `samples/js/sf.js`) - Copyright (c) 2012 James Frasca. * PicoModal (included in `samples/js/sf.js`) - Copyright (c) 2012 James Frasca.
* CodeMirror (included in the samples) - Copyright (C) 2014 by Marijn Haverbeke <marijnh@gmail.com> and others. * CodeMirror (included in the samples) - Copyright (C) 2014 by Marijn Haverbeke <marijnh@gmail.com> and others.
* ES6Promise - Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors. * ES6Promise - Copyright (c) 2014 Yehuda Katz, Tom Dale, Stefan Penner and contributors.
* A polyfill for `CSS.escape` (adopted with modifications in `core/tools.js`), Mathias Bynens, v1.5.1, https://mths.be/cssescape.
Parts of code taken from the following libraries are included in CKEditor under the MIT license (see Appendix D): Parts of code taken from the following libraries are included in CKEditor under the MIT license (see Appendix D):
...@@ -59,7 +60,7 @@ The following libraries are included in CKEditor under the BSD-3 License (see Ap ...@@ -59,7 +60,7 @@ The following libraries are included in CKEditor under the BSD-3 License (see Ap
Trademarks Trademarks
---------- ----------
CKEditor is a trademark of CKSource - Frederico Knabben. All other brand CKEditor is a trademark of CKSource Holding sp. z o.o. All other brand
and product names are trademarks, registered trademarks or service and product names are trademarks, registered trademarks or service
marks of their respective holders. marks of their respective holders.
...@@ -1419,3 +1420,17 @@ Redistribution and use in source and binary forms, with or without modification, ...@@ -1419,3 +1420,17 @@ Redistribution and use in source and binary forms, with or without modification,
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
``` ```
Appendix H: The BSD-2 License
-----------------------------
```
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
```
(Ignore this line: %REMOVE_START%)
# Reporting a security issues
If you believe you have found a security issue in the CKEditor 4 software, please contact us immediately.
When reporting a potential security problem, please bear this in mind:
* Make sure to provide as many details as possible about the vulnerability.
* Please do not disclose publicly any security issues until we fix them and publish security releases.
Contact the security team at security@cksource.com. As soon as we receive the security report, we will work promptly to confirm the issue and then to provide a security fix.
...@@ -9,6 +9,9 @@ ...@@ -9,6 +9,9 @@
* *
* Then, replace this directory (core/assets/vendor/ckeditor) with your build. * Then, replace this directory (core/assets/vendor/ckeditor) with your build.
* *
* Also: Remember to update core/core.libraries.yml if you are doing an update of the version of CKEditor for Drupal
* Core.
*
* If you are developing or debugging CKEditor plugins, you may want to work * If you are developing or debugging CKEditor plugins, you may want to work
* against an unoptimized (unminified) CKEditor build. To do so, * against an unoptimized (unminified) CKEditor build. To do so,
* run the build command with the --leave-js-unminified flag. * run the build command with the --leave-js-unminified flag.
...@@ -29,6 +32,7 @@ var CKBUILDER_CONFIG = { ...@@ -29,6 +32,7 @@ var CKBUILDER_CONFIG = {
'.bender', '.bender',
'bender-err.log', 'bender-err.log',
'bender-out.log', 'bender-out.log',
'bender-runner.config.json',
'.travis.yml', '.travis.yml',
'dev', 'dev',
'docs', 'docs',
...@@ -36,6 +40,7 @@ var CKBUILDER_CONFIG = { ...@@ -36,6 +40,7 @@ var CKBUILDER_CONFIG = {
'.editorconfig', '.editorconfig',
'.gitignore', '.gitignore',
'.gitattributes', '.gitattributes',
'.github',
'gruntfile.js', 'gruntfile.js',
'.idea', '.idea',
'.jscsrc', '.jscsrc',
...@@ -44,6 +49,7 @@ var CKBUILDER_CONFIG = { ...@@ -44,6 +49,7 @@ var CKBUILDER_CONFIG = {
'less', 'less',
'.mailmap', '.mailmap',
'node_modules', 'node_modules',
'.nvmrc',
'package.json', 'package.json',
'README.md', 'README.md',
'tests', 'tests',
......
This diff is collapsed.
Copyright (c) 2003-2020, CKSource - Frederico Knabben. All rights reserved. Copyright (c) 2003-2023, CKSource Holding sp. z o.o. All rights reserved.
For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license For licensing, see LICENSE.md or https://ckeditor.com/legal/ckeditor-oss-license
af.js Found: 62 Missing: 4 af.js Found: 62 Missing: 4
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment