<?php
/**
 * File: ConfigKeys.php
 *
 * @package W3TC
 *
 * phpcs:disable WordPress.Arrays.MultipleStatementAlignment.DoubleArrowNotAligned
 * phpcs:disable phpcs:ignore Squiz.PHP.CommentedOutCode.Found
 * phpcs:disable Squiz.PHP.CommentedOutCode.Found
 */

defined( 'ABSPATH' ) || exit;
/**
 * Descriptors of configuration keys for config
 *
 * Reminder: The maximum length of keys cannot exceed 64 chars. This is the limit for the name attribute in form fields.
 */

$w3tc_keys = array(
	'cluster.messagebus.debug'                             => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cluster.messagebus.enabled'                           => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cluster.messagebus.sns.region'                        => array(
		'type'    => 'string',
		'default' => '',
	),
	'cluster.messagebus.sns.api_key'                       => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ), // AWS SNS API key — encrypted at rest.
	),
	'cluster.messagebus.sns.api_secret'                    => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ),
	),
	'cluster.messagebus.sns.topic_arn'                     => array(
		'type'    => 'string',
		'default' => '',
	),
	'dbcache.configuration_overloaded'                     => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'dbcache.debug'                                        => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'dbcache.debug_purge'                                  => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'dbcache.enabled'                                      => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'dbcache.engine'                                       => array(
		'type'    => 'string',
		'default' => 'file',
		'flags'   => array( 'no_import' => true ), // Switches code path into a different engine; set only via dedicated page.
	),
	'dbcache.file.gc'                                      => array(
		'type'    => 'integer',
		'default' => 3600,
	),
	'dbcache.file.locking'                                 => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'dbcache.lifetime'                                     => array(
		'type'    => 'integer',
		'default' => 180,
	),
	'dbcache.memcached.persistent'                         => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'dbcache.memcached.aws_autodiscovery'                  => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'dbcache.memcached.servers'                            => array(
		'type'    => 'array',
		'default' => array(
			'127.0.0.1:11211',
		),
	),
	'dbcache.memcached.username'                           => array(
		'type'    => 'string',
		'default' => '',
	),
	'dbcache.memcached.password'                           => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ), // Memcached SASL password — never reflect into HTML value=.
	),
	'dbcache.memcached.binary_protocol'                    => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'dbcache.redis.persistent'                             => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'dbcache.redis.servers'                                => array(
		'type'    => 'array',
		'default' => array(
			'127.0.0.1:6379',
		),
	),
	'dbcache.redis.verify_tls_certificates'                => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'dbcache.redis.password'                               => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ), // Redis password — never reflect into HTML value=.
	),
	'dbcache.redis.dbid'                                   => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'dbcache.redis.timeout'                                => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'dbcache.redis.retry_interval'                         => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'dbcache.redis.read_timeout'                           => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'dbcache.use_filters'                                  => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'dbcache.reject.constants'                             => array(
		'type'    => 'array',
		'default' => array(
			'APP_REQUEST',
			'DOING_CRON',
			'DONOTCACHEDB',
			'SHORTINIT',   // WPMU and WP 3.0 short init.
			'XMLRPC_REQUEST',
		),
	),
	'dbcache.reject.cookie'                                => array(
		'type'    => 'array',
		'default' => array(),
	),
	'dbcache.reject.logged'                                => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'dbcache.reject.sql'                                   => array(
		'type'    => 'array',
		'default' => array(
			'gdsr_',
			'wp_rg_',
			'_wp_session_',
			'_wc_session_',
		),
	),
	'dbcache.reject.uri'                                   => array(
		'type'    => 'array',
		'default' => array(),
	),
	'dbcache.reject.words'                                 => array(
		'type'    => 'array',
		'default' => array(
			'^\s*insert\b',
			'^\s*delete\b',
			'^\s*update\b',
			'^\s*replace\b',
			'^\s*create\b',
			'^\s*alter\b',
			'^\s*show\b',
			'^\s*set\b',
			'\bautoload\s+=\s+\'yes\'',
			'\bsql_calc_found_rows\b',
			'\bfound_rows\(\)',
		),
	),
	'dbcache.wpcli_disk'                                   => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'docroot_fix.enable'                                   => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'lazyload.enabled'                                     => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'lazyload.threshold'                                   => array(
		'type'    => 'string',
		'default' => '',
	),
	'lazyload.process_img'                                 => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'lazyload.process_background'                          => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'lazyload.googlemaps.google_maps_easy'                 => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'lazyload.googlemaps.wp_google_maps'                   => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'lazyload.googlemaps.wp_google_map_plugin'             => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'lazyload.exclude'                                     => array(
		'type'    => 'array',
		'default' => array(
			'avia-bg-style-fixed',
			'data-bgposition=',
			'data-envira-src=',
			'data-large_image=',
			'data-lazy-original=',
			'data-lazy-src=',
			'data-lazyload=',
			'data-lazysrc=',
			'data-no-lazy=',
			'data-src=',
			'data-srcset=',
			'fullurl=',
			'lazy-slider-img=',
			'loading="eager"',
			'no-lazy',
			'rev-slidebg',
			'skip-lazy',
			'soliloquy-image',
			'swatch-img',
			'w3-total-cache',
			'woocommerce/assets/images/placeholder.png',
			'wpcf7_captcha',
		),
	),
	'lazyload.embed_method'                                => array(
		'type'    => 'string',
		'default' => 'async_head',
	),
	'objectcache.configuration_overloaded'                 => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'objectcache.enabled'                                  => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'objectcache.debug'                                    => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'objectcache.debug_purge'                              => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'objectcache.file.gc'                                  => array(
		'type'    => 'integer',
		'default' => 600,
	),
	'objectcache.enabled_for_wp_admin'                     => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'objectcache.fallback_transients'                      => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'objectcache.engine'                                   => array(
		'type'    => 'string',
		'default' => 'file',
		'flags'   => array( 'no_import' => true ),
	),
	'objectcache.file.locking'                             => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'objectcache.memcached.servers'                        => array(
		'type'    => 'array',
		'default' => array(
			'127.0.0.1:11211',
		),
	),
	'objectcache.memcached.persistent'                     => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'objectcache.memcached.aws_autodiscovery'              => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'objectcache.memcached.username'                       => array(
		'type'    => 'string',
		'default' => '',
	),
	'objectcache.memcached.password'                       => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ), // Memcached SASL password — never reflect into HTML value=.
	),
	'objectcache.memcached.binary_protocol'                => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'objectcache.redis.persistent'                         => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'objectcache.redis.servers'                            => array(
		'type'    => 'array',
		'default' => array(
			'127.0.0.1:6379',
		),
	),
	'objectcache.redis.verify_tls_certificates'            => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'objectcache.redis.password'                           => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ), // Redis password — never reflect into HTML value=.
	),
	'objectcache.redis.dbid'                               => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'objectcache.redis.timeout'                            => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'objectcache.redis.retry_interval'                     => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'objectcache.redis.read_timeout'                       => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'objectcache.groups.global'                            => array(
		'type'    => 'array',
		'default' => array(),
	),
	'objectcache.groups.nonpersistent'                     => array(
		'type'    => 'array',
		'default' => array(
			'counts',
			'plugins',
		),
	),
	'objectcache.lifetime'                                 => array(
		'type'    => 'integer',
		'default' => 180,
	),
	'objectcache.purge.all'                                => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'objectcache.wpcli_disk'                               => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.configuration_overloaded'                     => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.enabled'                                      => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.comment_cookie_ttl'                           => array(
		'type'    => 'integer',
		'default' => 1800,
	),
	'pgcache.debug'                                        => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.debug_purge'                                  => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.engine'                                       => array(
		'type'    => 'string',
		'default' => 'file_generic',
		'flags'   => array( 'no_import' => true ),
	),
	'pgcache.file.gc'                                      => array(
		'type'    => 'integer',
		'default' => 3600,
	),
	'pgcache.file.nfs'                                     => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.file.locking'                                 => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.lifetime'                                     => array(
		'type'    => 'integer',
		'default' => 3600,
	),
	'pgcache.memcached.servers'                            => array(
		'type'    => 'array',
		'default' => array(
			'127.0.0.1:11211',
		),
	),
	'pgcache.memcached.persistent'                         => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'pgcache.memcached.aws_autodiscovery'                  => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.memcached.username'                           => array(
		'type'    => 'string',
		'default' => '',
	),
	'pgcache.memcached.password'                           => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ), // Memcached SASL password — never reflect into HTML value=.
	),
	'pgcache.memcached.binary_protocol'                    => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'pgcache.redis.persistent'                             => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'pgcache.redis.servers'                                => array(
		'type'    => 'array',
		'default' => array(
			'127.0.0.1:6379',
		),
	),
	'pgcache.redis.verify_tls_certificates'                => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'pgcache.redis.password'                               => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ), // Redis password — never reflect into HTML value=.
	),
	'pgcache.redis.dbid'                                   => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'pgcache.redis.timeout'                                => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'pgcache.redis.retry_interval'                         => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'pgcache.redis.read_timeout'                           => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'pgcache.cache.query'                                  => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.cache.home'                                   => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'pgcache.cache.feed'                                   => array(
		'type'    => 'boolean',
		'default' => false,
	),
	// name backwards-compatible. in reality works for apache too.
	'pgcache.cache.nginx_handle_xml'                       => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'pgcache.cache.ssl'                                    => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'pgcache.cache.404'                                    => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.cache.headers'                                => array(
		'type'    => 'array',
		'default' => array(
			'Last-Modified',
			'Content-Type',
			'X-Pingback',
			'P3P',
			'Link',
		),
	),
	'pgcache.compatibility'                                => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.remove_charset'                               => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.accept.uri'                                   => array(
		'type'    => 'array',
		'default' => array(
			'sitemap(_index)?\.xml(\.gz)?',
			'([a-z0-9_\-]+)?sitemap\.xsl',
			'[a-z0-9_\-]+-sitemap([0-9]+)?\.xml(\.gz)?',
		),
	),
	'pgcache.accept.files'                                 => array(
		'type'    => 'array',
		'default' => array(
			'wp-comments-popup.php',
			'wp-links-opml.php',
			'wp-locations.php',
		),
	),
	'pgcache.accept.qs'                                    => array(
		'type'    => 'array',
		'default' => \W3TC\PgCache_QsExempts::get_qs_exempts(),
	),
	'pgcache.migrated.qsexempts'                           => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'pgcache.late_init'                                    => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.late_caching'                                 => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.mirrors.enabled'                              => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.mirrors.home_urls'                            => array(
		'type'    => 'array',
		'default' => array(),
	),
	'pgcache.reject.front_page'                            => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.reject.logged'                                => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'pgcache.reject.logged_roles'                          => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.reject.roles'                                 => array(
		'type'    => 'array',
		'default' => array(),
	),
	'pgcache.reject.uri'                                   => array(
		'type'    => 'array',
		'default' => array(
			'wp-.*\.php',
			'index\.php',
		),
	),
	'pgcache.reject.categories'                            => array(
		'type'    => 'array',
		'default' => array(),
	),
	'pgcache.reject.tags'                                  => array(
		'type'    => 'array',
		'default' => array(),
	),
	'pgcache.reject.authors'                               => array(
		'type'    => 'array',
		'default' => array(),
	),
	'pgcache.reject.custom'                                => array(
		'type'    => 'array',
		'default' => array(),
	),
	'pgcache.reject.ua'                                    => array(
		'type'    => 'array',
		'default' => array(),
	),
	'pgcache.reject.cookie'                                => array(
		'type'    => 'array',
		'default' => array(
			'wptouch_switch_toggle',
		),
	),
	'pgcache.reject.request_head'                          => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.purge.front_page'                             => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.purge.home'                                   => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'pgcache.purge.post'                                   => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'pgcache.purge.comments'                               => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.purge.author'                                 => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.purge.terms'                                  => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.purge.archive.daily'                          => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.purge.archive.monthly'                        => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.purge.archive.yearly'                         => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.purge.feed.blog'                              => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'pgcache.purge.feed.comments'                          => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.purge.feed.author'                            => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.purge.feed.terms'                             => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.purge.feed.types'                             => array(
		'type'    => 'array',
		'default' => array(
			'rss2',
		),
	),
	'pgcache.purge.postpages_limit'                        => array(
		'type'    => 'integer',
		'default' => 10,
	),
	'pgcache.purge.pages'                                  => array(
		'type'    => 'array',
		'default' => array(),
	),
	'pgcache.purge.sitemap_regex'                          => array(
		'type'    => 'string',
		'default' => '([a-z0-9_\-]*?)sitemap([a-z0-9_\-]*)?\.(?:xml|xsl)',
	),
	'pgcache.prime.enabled'                                => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.prime.interval'                               => array(
		'type'    => 'integer',
		'default' => 900,
	),
	'pgcache.prime.limit'                                  => array(
		'type'    => 'integer',
		'default' => 10,
	),
	'pgcache.prime.sitemap'                                => array(
		'type'    => 'string',
		'default' => '',
	),
	'pgcache.prime.post.enabled'                           => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.prime.post.update.enabled'                    => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.rest'                                         => array(
		'type'    => 'string',
		'default' => '',
	),
	'pgcache.cookiegroups.enabled'                         => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'pgcache.cookiegroups.groups'                          => array(
		'type'    => 'array',
		'default' => array(
			'mobile'      => array(
				'enabled' => false,
				'cache'   => true,
				'cookies' => array(
					'wptouch-pro-view=mobile',
					'wptouch-pro-cache-state=mobile',
				),
			),
			'loggedin'    => array(
				'enabled' => false,
				'cache'   => true,
				'cookies' => array(
					'wordpress_logged_in_.*',
				),
			),
			'subscribers' => array(
				'enabled' => false,
				'cache'   => true,
				'cookies' => array(
					'role=subscriber',
					'role=member',
				),
			),
		),
	),
	'stats.enabled'                                        => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'stats.slot_seconds'                                   => array(
		'type'    => 'integer',
		'default' => 60,
	),
	'stats.slots_count'                                    => array(
		'type'    => 'integer',
		'default' => 60,
	),
	'stats.cpu.enabled'                                    => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'stats.access_log.enabled'                             => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'stats.access_log.filename'                            => array(
		'type'    => 'string',
		'default' => '',
	),
	'stats.access_log.format'                              => array(
		'type'    => 'string',
		'default' => '%h %l %u %t \"%r\" %>s %O \"%{Referer}i\" \"%{User-Agent}i\"',
	),
	'stats.access_log.webserver'                           => array(
		'type'    => 'string',
		'default' => '',
	),
	'minify.configuration_overloaded'                      => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.enabled'                                       => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.auto'                                          => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'minify.debug'                                         => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.engine'                                        => array(
		'type'    => 'string',
		'default' => 'file',
	),
	'minify.error.notification'                            => array(
		'type'    => 'string',
		'default' => '',
	),
	'minify.file.gc'                                       => array(
		'type'    => 'integer',
		'default' => 86400,
	),
	'minify.file.nfs'                                      => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.file.locking'                                  => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.memcached.servers'                             => array(
		'type'    => 'array',
		'default' => array(
			'127.0.0.1:11211',
		),
	),
	'minify.memcached.persistent'                          => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'minify.memcached.aws_autodiscovery'                   => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.memcached.username'                            => array(
		'type'    => 'string',
		'default' => '',
	),
	'minify.memcached.password'                            => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ), // Memcached SASL password — never reflect into HTML value=.
	),
	'minify.memcached.binary_protocol'                     => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'minify.redis.persistent'                              => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'minify.redis.servers'                                 => array(
		'type'    => 'array',
		'default' => array(
			'127.0.0.1:6379',
		),
	),
	'minify.redis.verify_tls_certificates'                 => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'minify.redis.password'                                => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ), // Redis password — never reflect into HTML value=.
	),
	'minify.redis.dbid'                                    => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'minify.redis.timeout'                                 => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'minify.redis.retry_interval'                          => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'minify.redis.read_timeout'                            => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'minify.rewrite'                                       => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'minify.options'                                       => array(
		'type'    => 'array',
		'default' => array(),
	),
	'minify.symlinks'                                      => array(
		'type'    => 'array',
		'default' => array(),
	),
	'minify.lifetime'                                      => array(
		'type'    => 'integer',
		'default' => 86400,
	),
	'minify.upload'                                        => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'minify.html.enable'                                   => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.html.engine'                                   => array(
		'type'    => 'string',
		'default' => 'html',
	),
	'minify.html.reject.feed'                              => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.html.inline.css'                               => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.html.inline.js'                                => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.html.strip.crlf'                               => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.html.comments.ignore'                          => array(
		'type'    => 'array',
		'default' => array(
			'google_ad_',
			'RSPEAK_',
			'mfunc',
		),
	),
	'minify.css.enable'                                    => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'minify.css.engine'                                    => array(
		'type'    => 'string',
		'default' => 'css',
		'flags'   => array( 'no_import' => true ),
	),
	'minify.css.method'                                    => array(
		'type'    => 'string',
		'default' => 'both',
	),
	'minify.css.http2push'                                 => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.css.strip.comments'                            => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.css.strip.crlf'                                => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.css.embed'                                     => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.css.imports'                                   => array(
		'type'    => 'string',
		'default' => '',
	),
	'minify.css.groups'                                    => array(
		'type'    => 'array',
		'default' => array(),
	),
	'minify.js.http2push'                                  => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.js.enable'                                     => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'minify.js.engine'                                     => array(
		'type'    => 'string',
		'default' => 'js',
		'flags'   => array( 'no_import' => true ),
	),
	'minify.js.method'                                     => array(
		'type'    => 'string',
		'default' => 'both',
	),
	'minify.js.combine.header'                             => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.js.header.embed_type'                          => array(
		'type'    => 'string',
		'default' => 'blocking',
	),
	'minify.js.combine.body'                               => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.js.body.embed_type'                            => array(
		'type'    => 'string',
		'default' => 'blocking',
	),
	'minify.js.combine.footer'                             => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.js.footer.embed_type'                          => array(
		'type'    => 'string',
		'default' => 'blocking',
	),
	'minify.js.strip.comments'                             => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.js.strip.crlf'                                 => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.js.groups'                                     => array(
		'type'    => 'array',
		'default' => array(),
	),
	'minify.yuijs.path.java'                               => array(
		'type'    => 'string',
		'default' => 'java',
		'flags'   => array( 'no_import' => true ), // OS command-injection target; set only via dedicated page.
	),
	'minify.yuijs.path.jar'                                => array(
		'type'    => 'string',
		'default' => 'yuicompressor.jar',
		'flags'   => array( 'no_import' => true ),
	),
	'minify.yuijs.options.line-break'                      => array(
		'type'    => 'integer',
		'default' => 5000,
	),
	'minify.yuijs.options.nomunge'                         => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.yuijs.options.preserve-semi'                   => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.yuijs.options.disable-optimizations'           => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.yuicss.path.java'                              => array(
		'type'    => 'string',
		'default' => 'java',
		'flags'   => array( 'no_import' => true ),
	),
	'minify.yuicss.path.jar'                               => array(
		'type'    => 'string',
		'default' => 'yuicompressor.jar',
		'flags'   => array( 'no_import' => true ),
	),
	'minify.yuicss.options.line-break'                     => array(
		'type'    => 'integer',
		'default' => 5000,
	),
	'minify.ccjs.path.java'                                => array(
		'type'    => 'string',
		'default' => 'java',
		'flags'   => array( 'no_import' => true ),
	),
	'minify.ccjs.path.jar'                                 => array(
		'type'    => 'string',
		'default' => 'compiler.jar',
		'flags'   => array( 'no_import' => true ),
	),
	'minify.ccjs.options.compilation_level'                => array(
		'type'    => 'string',
		'default' => 'SIMPLE_OPTIMIZATIONS',
	),
	'minify.ccjs.options.formatting'                       => array(
		'type'    => 'string',
		'default' => '',
	),
	'minify.csstidy.options.remove_bslash'                 => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'minify.csstidy.options.compress_colors'               => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.csstidy.options.compress_font-weight'          => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.csstidy.options.lowercase_s'                   => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.csstidy.options.optimise_shorthands'           => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'minify.csstidy.options.remove_last_;'                 => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.csstidy.options.remove_space_before_important' => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.csstidy.options.case_properties'               => array(
		'type'    => 'integer',
		'default' => 1,
	),
	'minify.csstidy.options.sort_properties'               => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.csstidy.options.sort_selectors'                => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.csstidy.options.merge_selectors'               => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'minify.csstidy.options.discard_invalid_selectors'     => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.csstidy.options.discard_invalid_properties'    => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.csstidy.options.css_level'                     => array(
		'type'    => 'string',
		'default' => 'CSS3.0',
	),
	'minify.csstidy.options.preserve_css'                  => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.csstidy.options.timestamp'                     => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.csstidy.options.template'                      => array(
		'type'    => 'string',
		'default' => 'highest_compression',
	),
	'minify.htmltidy.options.clean'                        => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.htmltidy.options.hide-comments'                => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'minify.htmltidy.options.wrap'                         => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'minify.reject.logged'                                 => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'minify.reject.ua'                                     => array(
		'type'    => 'array',
		'default' => array(),
	),
	'minify.reject.uri'                                    => array(
		'type'    => 'array',
		'default' => array(),
	),
	'minify.reject.files.js'                               => array(
		'type'    => 'array',
		'default' => array(),
	),
	'minify.reject.files.css'                              => array(
		'type'    => 'array',
		'default' => array(),
	),
	'minify.cache.files'                                   => array(
		'type'    => 'array',
		'default' => array( '' ),
	),
	'minify.cache.files_regexp'                            => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cdn.configuration_overloaded'                         => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cdn.enabled'                                          => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cdn.debug'                                            => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cdn.flush_manually'                                   => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cdn.engine'                                           => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'no_import' => true ),
		/**
		 * The cdn.engine key is interpolated into the X-W3TC-CDN
		 * Response header by Cdn_Plugin::send_headers. Without an
		 * allowlist, an admin-settable value could carry CRLF and
		 * inject arbitrary response headers (defense-in-depth on
		 * PHP 7.x; PHP 8.3 already rejects raw CRLF in header()).
		 * Enum derives from the supported engines listed in
		 * Cdn_Core_Admin and Cache::engine_name; empty string is
		 * the "no CDN" default and must remain valid.
		 */
		'enum'    => array(
			'',
			'azure',
			'azuremi',
			'bunnycdn',
			'cf',
			'cf2',
			'cloudfront',
			'ftp',
			'google_drive',
			'mirror',
			'rackspace_cdn',
			'rscf',
			's3',
			's3_compatible',
		),
	),
	'cdn.uploads.enable'                                   => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'cdn.includes.enable'                                  => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'cdn.includes.files'                                   => array(
		'type'    => 'string',
		'default' => '*.css;*.js;*.gif;*.png;*.jpg;*.xml',
	),
	'cdn.theme.enable'                                     => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'cdn.theme.files'                                      => array(
		'type'    => 'string',
		'default' => '*.css;*.js;*.gif;*.png;*.jpg;*.ico;*.ttf;*.otf;*.woff;*.woff2;*.less',
	),
	'cdn.minify.enable'                                    => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'cdn.custom.enable'                                    => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'cdn.custom.files'                                     => array(
		'type'    => 'array',
		'default' => array(
			'favicon.ico',
			'{wp_content_dir}/gallery/*',
			'{wp_content_dir}/uploads/avatars/*',
			'{plugins_dir}/wordpress-seo/css/xml-sitemap.xsl',
			'{plugins_dir}/wp-minify/min*',
			'{plugins_dir}/*.js',
			'{plugins_dir}/*.css',
			'{plugins_dir}/*.gif',
			'{plugins_dir}/*.jpg',
			'{plugins_dir}/*.png',
		),
	),
	'cdn.import.files'                                     => array(
		'type'    => 'string',
		'default' => false,
	),
	'cdn.queue.interval'                                   => array(
		'type'    => 'integer',
		'default' => 900,
	),
	'cdn.queue.limit'                                      => array(
		'type'    => 'integer',
		'default' => 25,
	),
	'cdn.force.rewrite'                                    => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cdn.autoupload.enabled'                               => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cdn.autoupload.interval'                              => array(
		'type'    => 'integer',
		'default' => 3600,
	),
	'cdn.canonical_header'                                 => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cdn.admin.media_library'                              => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cdn.cors_header'                                      => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'cdn.ftp.host'                                         => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.ftp.type'                                         => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.ftp.user'                                         => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.ftp.pass'                                         => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ), // FTP password — encrypted at rest.
	),
	'cdn.ftp.path'                                         => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.ftp.pasv'                                         => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cdn.ftp.domain'                                       => array(
		'type'    => 'array',
		'default' => array(),
	),
	'cdn.ftp.ssl'                                          => array(
		'type'    => 'string',
		'default' => 'auto',
	),
	'cdn.ftp.default_keys'                                 => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'cdn.ftp.pubkey'                                       => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.ftp.privkey'                                      => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ), // SFTP private key — encrypted at rest.
	),
	'cdn.google_drive.client_id'                           => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.google_drive.refresh_token'                       => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ),
	),
	'cdn.google_drive.folder.id'                           => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.google_drive.folder.title'                        => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.google_drive.folder.url'                          => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.s3.key'                                           => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ), // S3 access key ID — encrypted at rest.
	),
	'cdn.s3.secret'                                        => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ), // S3 secret key.
	),
	'cdn.s3.bucket'                                        => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.s3.bucket.location'                               => array(
		'type'    => 'string',
		'default' => 'us-east-1',
	),
	'cdn.s3.cname'                                         => array(
		'type'    => 'array',
		'default' => array(),
	),
	'cdn.s3.ssl'                                           => array(
		'type'    => 'string',
		'default' => 'auto',
	),
	'cdn.s3.public_objects'                                => array(
		'type'    => 'string',
		'default' => 'enabled',
	),
	'cdn.s3_compatible.api_host'                           => array(
		'type'    => 'string',
		'default' => 'auto',
	),
	'cdn.cf.key'                                           => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ),
	),
	'cdn.cf.secret'                                        => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ),
	),
	'cdn.cf.bucket'                                        => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.cf.bucket.location'                               => array(
		'type'    => 'string',
		'default' => 'us-east-1',
	),
	'cdn.cf.id'                                            => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.cf.cname'                                         => array(
		'type'    => 'array',
		'default' => array(),
	),
	'cdn.cf.ssl'                                           => array(
		'type'    => 'string',
		'default' => 'auto',
	),
	'cdn.cf.public_objects'                                => array(
		'type'    => 'string',
		'default' => 'enabled',
	),
	'cdn.cf2.key'                                          => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ),
	),
	'cdn.cf2.secret'                                       => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ),
	),
	'cdn.cf2.id'                                           => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.cf2.cname'                                        => array(
		'type'    => 'array',
		'default' => array(),
	),
	'cdn.cf2.ssl'                                          => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.rscf.user'                                        => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.rscf.key'                                         => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ),
	),
	'cdn.rscf.location'                                    => array(
		'type'    => 'string',
		'default' => 'us',
	),
	'cdn.rscf.container'                                   => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.rscf.cname'                                       => array(
		'type'    => 'array',
		'default' => array(),
	),
	'cdn.rscf.ssl'                                         => array(
		'type'    => 'string',
		'default' => 'auto',
	),
	'cdn.rackspace_cdn.user_name'                          => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.rackspace_cdn.api_key'                            => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ),
	),
	'cdn.rackspace_cdn.region'                             => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.rackspace_cdn.service.access_url'                 => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.rackspace_cdn.service.id'                         => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.rackspace_cdn.service.name'                       => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.rackspace_cdn.service.protocol'                   => array(
		'type'    => 'string',
		'default' => 'http',
	),
	'cdn.rackspace_cdn.domains'                            => array(
		'type'    => 'array',
		'default' => array(),
	),
	'cdn.azure.user'                                       => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.azure.key'                                        => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'secret' => true ),
	),
	'cdn.azure.container'                                  => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.azure.cname'                                      => array(
		'type'    => 'array',
		'default' => array(),
	),
	'cdn.azure.ssl'                                        => array(
		'type'    => 'string',
		'default' => 'auto',
	),
	'cdn.azuremi.user'                                     => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.azuremi.clientid'                                 => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.azuremi.container'                                => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdn.azuremi.cname'                                    => array(
		'type'    => 'array',
		'default' => array(),
	),
	'cdn.azuremi.ssl'                                      => array(
		'type'    => 'string',
		'default' => 'auto',
	),
	'cdn.mirror.domain'                                    => array(
		'type'    => 'array',
		'default' => array(),
	),
	'cdn.mirror.ssl'                                       => array(
		'type'    => 'string',
		'default' => 'auto',
	),
	'cdn.reject.admins'                                    => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cdn.reject.logged_roles'                              => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cdn.reject.roles'                                     => array(
		'type'    => 'array',
		'default' => array(),
	),
	'cdn.reject.ua'                                        => array(
		'type'    => 'array',
		'default' => array(),
	),
	'cdn.reject.uri'                                       => array(
		'type'    => 'array',
		'default' => array(),
	),
	'cdn.reject.files'                                     => array(
		'type'    => 'array',
		'default' => array(
			'{uploads_dir}/wpcf7_captcha/*',
			'{uploads_dir}/imagerotator.swf',
			'{plugins_dir}/wp-fb-autoconnect/facebook-platform/channel.html',
		),
	),
	'cdn.reject.ssl'                                       => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cdnfsd.enabled'                                       => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cdnfsd.engine'                                        => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdnfsd.debug'                                         => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'cdnfsd.cloudfront.access_key'                         => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdnfsd.cloudfront.secret_key'                         => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdnfsd.cloudfront.distribution_id'                    => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdnfsd.transparentcdn.client_id'                      => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdnfsd.transparentcdn.client_secret'                  => array(
		'type'    => 'string',
		'default' => '',
	),
	'cdnfsd.transparentcdn.company_id'                     => array(
		'type'    => 'string',
		'default' => '',
	),
	'varnish.configuration_overloaded'                     => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'varnish.enabled'                                      => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'varnish.debug'                                        => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'varnish.servers'                                      => array(
		'type'    => 'array',
		'default' => array(),
	),
	'browsercache.configuration_overloaded'                => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.enabled'                                 => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'browsercache.rewrite'                                 => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.no404wp'                                 => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.no404wp.exceptions'                      => array(
		'type'    => 'array',
		'default' => array(
			'robots\.txt',
			'[a-z0-9_\-]*sitemap[a-z0-9_\.\-]*\.(xml|xsl|html)(\.gz)?',
		),
	),
	'browsercache.cssjs.last_modified'                     => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'browsercache.cssjs.compression'                       => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'browsercache.cssjs.brotli'                            => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.cssjs.expires'                           => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'browsercache.cssjs.lifetime'                          => array(
		'type'    => 'integer',
		'default' => 31536000,
	),
	'browsercache.cssjs.nocookies'                         => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'browsercache.cssjs.cache.control'                     => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.cssjs.cache.policy'                      => array(
		'type'    => 'string',
		'default' => 'cache_public_maxage',
	),
	'browsercache.cssjs.etag'                              => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'browsercache.cssjs.w3tc'                              => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.cssjs.replace'                           => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.cssjs.querystring'                       => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.html.compression'                        => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'browsercache.html.brotli'                             => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.html.last_modified'                      => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'browsercache.html.expires'                            => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.html.lifetime'                           => array(
		'type'    => 'integer',
		'default' => 3600,
	),
	'browsercache.html.cache.control'                      => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.html.cache.policy'                       => array(
		'type'    => 'string',
		'default' => 'cache_public_maxage',
	),
	'browsercache.html.etag'                               => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'browsercache.html.w3tc'                               => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.html.replace'                            => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.other.last_modified'                     => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'browsercache.other.compression'                       => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'browsercache.other.brotli'                            => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.other.expires'                           => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'browsercache.other.lifetime'                          => array(
		'type'    => 'integer',
		'default' => 31536000,
	),
	'browsercache.other.nocookies'                         => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'browsercache.other.cache.control'                     => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.other.cache.policy'                      => array(
		'type'    => 'string',
		'default' => 'cache_public_maxage',
	),
	'browsercache.other.etag'                              => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'browsercache.other.w3tc'                              => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.other.replace'                           => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.other.querystring'                       => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.replace.exceptions'                      => array(
		'type'    => 'array',
		'default' => array(),
	),
	'browsercache.security.session.cookie_httponly'        => array(
		'type'    => 'string',
		'default' => '',
	),
	'browsercache.security.session.cookie_secure'          => array(
		'type'    => 'string',
		'default' => '',
	),
	'browsercache.security.session.use_only_cookies'       => array(
		'type'    => 'string',
		'default' => '',
	),
	'browsercache.hsts'                                    => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.security.hsts.directive'                 => array(
		'type'    => 'string',
		'default' => 'maxage',
	),
	'browsercache.security.xfo'                            => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.security.xfo.directive'                  => array(
		'type'    => 'string',
		'default' => 'same',
	),
	'browsercache.security.xfo.allow'                      => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array(
			'directive_string' => true,
		),
	),
	'browsercache.security.xss'                            => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.security.xss.directive'                  => array(
		'type'    => 'string',
		'default' => 'block',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.xcto'                           => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.security.pkp'                            => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.security.pkp.pin' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.pkp.pin.backup' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.pkp.extra'                      => array(
		'type'    => 'string',
		'default' => 'maxage',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.pkp.report.url' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.pkp.report.only'                => array(
		'type'    => 'string',
		'default' => '0',
	),
	'browsercache.security.referrer.policy'                => array(
		'type'    => 'boolean',
		'default' => 'false',
	),
	'browsercache.security.referrer.policy.directive'      => array(
		'type'    => 'string',
		'default' => 'no-referrer-when-downgrade',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp'                            => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.security.csp.reporturi' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.reportto' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.base' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.frame' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.connect' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.font' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.script' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.style' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.img' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.media' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.object' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.plugin' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.form' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.frame.ancestors' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.sandbox' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.child' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.manifest' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.scriptelem' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.scriptattr' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.styleelem' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.styleattr' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.worker' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.csp.default' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro'                          => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.security.cspro.reporturi' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.reportto' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.base' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.frame' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.connect' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.font' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.script' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.style' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.img' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.media' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.object' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.plugin' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.form' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.frame.ancestors' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.sandbox' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.child' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.manifest' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.scriptelem' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.scriptattr' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.styleelem' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.styleattr' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.worker' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.cspro.default' => array(
		'type'    => 'string',
		'default' => '',
		'flags'   => array( 'directive_string' => true ),
	),
	'browsercache.security.fp'                             => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'browsercache.security.fp.values'                      => array(
		'type'    => 'array',
		'default' => array(),
	),
	'mobile.configuration_overloaded'                      => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'mobile.enabled'                                       => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'mobile.rgroups'                                       => array(
		'type'    => 'array',
		'default' => array(
			'tablets' => array(
				'theme'   => '',
				'enabled'  => false,
				'redirect' => '',
				'agents'   => array(
					'a1-32ab0',
					'a210',
					'a211',
					'b6000-h',
					'b8000-h',
					'bnrv200',
					'bntv400',
					'darwin',
					'gt-n8005',
					'gt-p3105',
					'gt-p6810',
					'gt-p7510',
					'hmj37',
					'hp-tablet',
					'hp\sslate',
					'hp\sslatebook',
					'ht7s3',
					'ideatab_a1107',
					'ideataba2109a',
					'ideos\ss7',
					'imm76d',
					'ipad',
					'k00f',
					'kfjwi',
					'kfot',
					'kftt',
					'kindle',
					'l-06c',
					'lg-f200k',
					'lg-f200l',
					'lg-f200s',
					'm470bsa',
					'm470bse',
					'maxwell',
					'me173x',
					'mediapad',
					'midc497',
					'msi\senjoy\s10\splus',
					'mz601',
					'mz616',
					'nexus',
					'nookcolor',
					'pg09410',
					'pg41200',
					'pmp5570c',
					'pmp5588c',
					'pocketbook',
					'qmv7a',
					'sgp311',
					'sgpt12',
					'shv-e230k',
					'shw-m305w',
					'shw-m380w',
					'sm-p605',
					'smarttab',
					'sonysgp321',
					'sph-p500',
					'surfpad',
					'tab07-200',
					'tab10-201',
					'tab465euk',
					'tab474',
					'tablet',
					'tegranote',
					'tf700t',
					'thinkpad',
					'viewpad',
					'voltaire',
				),
			),
			'phones'  => array(
				'theme'    => '',
				'enabled'  => false,
				'redirect' => '',
				'agents'   => array(
					'(android|bb\d+|meego).+mobile',
					'240x320',
					'2.0\ mmp',
					'\bppc\b',
					'acer\ s100',
					'alcatel',
					'amoi',
					'archos5',
					'asus',
					'au-mic',
					'audiovox',
					'avantgo',
					'bada',
					'benq',
					'bird',
					'blackberry',
					'blazer',
					'cdm',
					'cellphone',
					'cupcake',
					'danger',
					'ddipocket',
					'docomo',
					'docomo\ ht-03a',
					'dopod',
					'dream',
					'elaine/3.0',
					'ericsson',
					'eudoraweb',
					'fly',
					'froyo',
					'googlebot-mobile',
					'haier',
					'hiptop',
					'hp.ipaq',
					'htc',
					'htc\ hero',
					'htc\ magic',
					'htc_dream',
					'htc_magic',
					'huawei',
					'i-mobile',
					'iemobile',
					'iemobile/7',
					'iemobile/7.0',
					'iemobile/9',
					'incognito',
					'iphone',
					'ipod',
					'j-phone',
					'kddi',
					'konka',
					'kwc',
					'kyocera/wx310k',
					'lenovo',
					'lg',
					'lg/u990',
					'lg-gw620',
					'lge\ vx',
					'liquid\ build',
					'maemo',
					'midp',
					'midp-2.0',
					'mmef20',
					'mmp',
					'mobilephone',
					'mot-mb200',
					'mot-mb300',
					'mot-v',
					'motorola',
					'msie\ 10.0',
					'netfront',
					'newgen',
					'newt',
					'nexus\ 7',
					'nexus\ one',
					'nintendo\ ds',
					'nintendo\ wii',
					'nitro',
					'nokia',
					'novarra',
					'openweb',
					'opera\ mini',
					'opera\ mobi',
					'opera.mobi',
					'p160u',
					'palm',
					'panasonic',
					'pantech',
					'pdxgw',
					'pg',
					'philips',
					'phone',
					'playbook',
					'playstation\ portable',
					'portalmmm',
					'proxinet',
					'psp',
					'qtek',
					's8000',
					'sagem',
					'samsung',
					'samsung-s8000',
					'sanyo',
					'sch',
					'sch-i800',
					'sec',
					'sendo',
					'series60.*webkit',
					'series60/5.0',
					'sgh',
					'sharp',
					'sharp-tq-gx10',
					'small',
					'smartphone',
					'softbank',
					'sonyericsson',
					'sonyericssone10',
					'sonyericssonu20',
					'sonyericssonx10',
					'sph',
					'symbian',
					'symbian\ os',
					'symbianos',
					't-mobile\ mytouch\ 3g',
					't-mobile\ opal',
					'tattoo',
					'toshiba',
					'touch',
					'treo',
					'ts21i-10',
					'up.browser',
					'up.link',
					'uts',
					'vertu',
					'vodafone',
					'wap',
					'webmate',
					'webos',
					'willcome',
					'windows\ ce',
					'windows.ce',
					'winwap',
					'xda',
					'xoom',
					'zte',
				),
			),
		),
	),
	'referrer.configuration_overloaded'                    => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'referrer.enabled'                                     => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'referrer.rgroups'                                     => array(
		'type'    => 'array',
		'default' => array(
			'search_engines' => array(
				'theme'     => '',
				'enabled'   => false,
				'redirect'  => '',
				'referrers' => array(
					'google\.com',
					'yahoo\.com',
					'bing\.com',
					'ask\.com',
					'msn\.com',
				),
			),
		),
	),
	'common.track_usage'                                   => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'common.tweeted'                                       => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'config.check'                                         => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'config.path'                                          => array(
		'type'    => 'string',
		'default' => '',
	),
	'widget.latest.items'                                  => array(
		'type'    => 'integer',
		'default' => 3,
	),
	'widget.latest_news.items'                             => array(
		'type'    => 'integer',
		'default' => 5,
	),
	'widget.pagespeed.access_token'                        => array(
		'type'    => 'string',
		'default' => '',
	),
	'widget.pagespeed.w3tc_pagespeed_key'                  => array(
		'type'    => 'string',
		'default' => '',
	),
	'timelimit.email_send'                                 => array(
		'type'    => 'integer',
		'default' => 180,
	),
	'timelimit.varnish_purge'                              => array(
		'type'    => 'integer',
		'default' => 300,
	),
	'timelimit.cache_flush'                                => array(
		'type'    => 'integer',
		'default' => 600,
	),
	'timelimit.cache_gc'                                   => array(
		'type'    => 'integer',
		'default' => 600,
	),
	'timelimit.cdn_upload'                                 => array(
		'type'    => 'integer',
		'default' => 600,
	),
	'timelimit.cdn_delete'                                 => array(
		'type'    => 'integer',
		'default' => 300,
	),
	'timelimit.cdn_purge'                                  => array(
		'type'    => 'integer',
		'default' => 300,
	),
	'timelimit.cdn_import'                                 => array(
		'type'    => 'integer',
		'default' => 600,
	),
	'timelimit.cdn_test'                                   => array(
		'type'    => 'integer',
		'default' => 300,
	),
	'timelimit.domain_rename'                              => array(
		'type'    => 'integer',
		'default' => 120,
	),
	'timelimit.minify_recommendations'                     => array(
		'type'    => 'integer',
		'default' => 600,
	),
	'common.instance_id'                                   => array(
		'type'    => 'integer',
		'default' => 0,
	),
	'common.force_master'                                  => array(
		'type'        => 'boolean',
		'default'     => true,
		'master_only' => 'true',
	),
	'extensions.active'                                    => array(
		'type'    => 'array',
		'default' => array(),
		'flags'   => array( 'no_import' => true ), // File-inclusion target; managed via Extensions UI only.
	),
	'extensions.active_frontend'                           => array(
		'type'    => 'array',
		'default' => array(),
		'flags'   => array( 'no_import' => true ),
	),
	'extensions.active_dropin'                             => array(
		'type'    => 'array',
		'default' => array(),
		'flags'   => array( 'no_import' => true ),
	),
	'plugin.license_key'                                   => array(
		'type'        => 'string',
		'default'     => '',
		'master_only' => true,
		'flags'       => array( 'secret' => true ), // EDD license key — encrypted at rest.
	),
	'plugin.type'                                          => array(
		'type'        => 'string',
		'default'     => '',
		'master_only' => true,
	),
	'jquerymigrate.disabled'                               => array(
		'type'    => 'boolean',
		'default' => false,
	),
	'imageservice'                                         => array(
		'type'    => 'array',
		'default' => array(
			'compression' => 'lossy',
			'auto'        => 'enabled',
			'visibility'  => 'never',
			'webp'        => true,
			'avif'        => true,
		),
	),
	'imageservice.configuration_overloaded'                => array(
		'type'    => 'boolean',
		'default' => true,
	),
	'fragmentcache'                                        => array(
		'type'    => 'array',
		'default' => array(
			'engine' => 'file',
		),
	),
);

/*
 * extensions keys:
 *
 *  cloudflare =>
 *    'enabled'
 *    'email'
 *    'key'
 *    'zone'
 *    'widget_interval' => '30'
 *    'widget_cache_mins' => '5'
 *
 *  genesis.theme =>
 *    'wp_head' => '0',
 *    'genesis_header' => '1',
 *    'genesis_do_nav' => '0',
 *    'genesis_do_subnav' => '0',
 *    'loop_front_page' => '1',
 *    'loop_terms' => '1',
 *    'flush_terms' => '1',
 *    'loop_single' => '1',
 *    'loop_single_excluded' => '',
 *    'loop_single_genesis_comments' => '0',
 *    'loop_single_genesis_pings' => '0',
 *    'sidebar' => '0',
 *    'sidebar_excluded' => '',
 *    'genesis_footer' => '1',
 *    'wp_footer' => '0',
 *    'reject_logged_roles' => '1',
 *    'reject_logged_roles_on_actions' => array(
 *        0 => 'genesis_loop',
 *        1 => 'wp_head',
 *        2 => 'wp_footer',
 *    ),
 *    'reject_roles' => array(
 *        0 => 'administrator',
 *    ),
 *
 *  feedbuner =>
 *    'urls'
 *
 *  newrelic.configuration_overloaded
 *  newrelic => array
 *    'api_key' => '',
 *    'monitoring_type' => 'apm',
 *    'browser.application_id' => '',
 *    'apm.application_name' => '',
 *    'accept.logged_roles' => true,
 *    'accept.roles' => array('contributor'),
 *    'use_php_function' => true,
 *    'cache_time' => 5,
 *    'enable_xmit' => false,
 *    'include_rum' => true
 */

/*
 * Descriptors how sealed configuration keys affect overriding
 */
$w3tc_overloading_keys_scope = array(
	array(
		'key'    => 'browsercache.configuration_overloaded',
		'prefix' => 'browsercache.',
	),
	array(
		'key'    => 'cdn.configuration_overloaded',
		'prefix' => 'cdn.',
	),
	array(
		'key'    => 'dbcache.configuration_overloaded',
		'prefix' => 'dbcache.',
	),
	array(
		'key'    => 'minify.configuration_overloaded',
		'prefix' => 'minify.',
	),
	array(
		'key'    => 'objectcache.configuration_overloaded',
		'prefix' => 'objectcache.',
	),
	array(
		'key'    => 'fragmentcache.configuration_overloaded',
		'prefix' => 'fragmentcache.',
	),
	array(
		'key'    => 'pgcache.configuration_overloaded',
		'prefix' => 'pgcache.',
	),
	array(
		'key'    => 'varnish.configuration_overloaded',
		'prefix' => 'varnish.',
	),
	array(
		'key'    => 'imageservice.configuration_overloaded',
		'prefix' => 'imageservice.',
	),
);
